Indicators: Hurst Bands and Hurst Oscillator

These 2 indicators are derivative work from Jim Hurst's book - "The Magic of Stock Transaction Timing".

The bands are % bands around a median that gets calculated according to Hurst's formula. The outer bands (called ExtremeBands) signify extreme overbought/oversold conditions. Inner bands signify potential pullback points. As you can see, they also act as dynamic S/R levels.

The oscillator bands match the bands overlaid on price, so you will get an excellent indication of where the price is gonna do by using the oscillator along with the bands. Note that Hurst Oscillator can be used separately too, there is no technical dependency on Hurst Bands.

More info on Hurst Method:

List of my free indicators:
List of my indicators at Appstore:
Skript med en öppen källkod

In true TradingView spirit, the author of this script has published it open-source, so traders can understand and verify it. Cheers to the author! You may use it for free, but reuse of this code in a publication is governed by House Rules. You can favorite it to use it on a chart.

Vill du använda det här skriptet i ett diagram?
// @author LazyBear
// If you use this code in its original/modified form, do drop me a note. 
study("Hurst Bands [LazyBear]", shorttitle="H%Bands_LB", overlay=true)
price = hl2
length = input(10, title="Displacement length")
InnerValue = input(1.6, title="Innerbands %")
OuterValue = input(2.6, title="Outerbands %")
ExtremeValue = input(4.2, title="Extremebands %")
showExtremeBands = input(false, type=bool, title="Display Extreme Bands?")
showClosingPriceLine = input(false, type=bool, title="Plot Close price?")
smooth = input(1, title="EMA Length for Close")

displacement = (length / 2) + 1
dPrice = price[displacement]

CMA = not na(dPrice) ?  sma(dPrice, abs(length)) : nz(CMA[1]) + (nz(CMA[1]) - nz(CMA[2]))
CenteredMA=plot(not na(dPrice) ? CMA : na, color=blue , linewidth=2)
CenterLine=plot(not na(price) ? CMA : na, linewidth=2, color=aqua)

ExtremeBand = CMA * ExtremeValue / 100
OuterBand   = CMA * OuterValue / 100
InnerBand   = CMA * InnerValue / 100

UpperExtremeBand=plot(showExtremeBands and (not na(price)) ? CMA + ExtremeBand : na)
LowerExtremeBand=plot(showExtremeBands and (not na(price)) ? CMA - ExtremeBand : na)
UpperOuterBand=  plot(not na(price) ? CMA + OuterBand : na)
LowerOuterBand=  plot(not na(price) ? CMA - OuterBand : na)
UpperInnerBand=  plot(not na(price) ? CMA + InnerBand : na)
LowerInnerBand=  plot(not na(price) ? CMA - InnerBand : na)

fill(UpperOuterBand, UpperInnerBand, color=red, transp=85)
fill(LowerInnerBand, LowerOuterBand, color=green, transp=85)

FlowValue = close > close[1] ? high : close < close[1] ? low : hl2
FlowPrice = plot(showClosingPriceLine ? sma(FlowValue, smooth) : na, linewidth=1)