indicator · on price · open source
Adaptive Bollinger Bands
Running…
Loading chart…
About
Adaptive Bollinger Bands — the SMA length adapts via the Efficiency Ratio. Bands squeeze tighter in trends (catch the breakout) and widen in chop (avoid false breakouts).
- Mean-reversion trade at the opposite band; trend trade on a close outside.
Source code
//@version=5
indicator("Adaptive Bollinger Bands", overlay=true)
len = input.int(20, "Base length", minval=5, maxval=100)
mult = input.float(2, "BB mult", minval=0.5, maxval=5, step=0.1)
cumAbs = ta.cum(math.abs(ta.change(close)))
sumAbs = cumAbs - cumAbs[len]
er = math.abs(close - close[len]) / math.max(sumAbs, 0.0001)
aLen = na(er) ? 20 : math.max(5, math.min(200, math.round(len * (1 - er / 2))))
bbMid = ta.sma(close, aLen)
bbDev = mult * ta.stdev(close, aLen)
p_Mid = plot(bbMid, "Mid", color=color.orange)
p_Upper = plot(bbMid + bbDev, "Upper", color=color.blue)
p_Lower = plot(bbMid - bbDev, "Lower", color=color.blue)
fill(p_Upper, p_Lower, color=color.new(color.blue, 92))
alertcondition(ta.crossover(close, bbMid + bbDev), "Above upper", "Adaptive BB upper break")
alertcondition(ta.crossunder(close, bbMid - bbDev), "Below lower", "Adaptive BB lower break")
No comments yet.
Sign in to comment.