BBImpulse Indicator

BBImpulse is part of the latest indicators package offered by John Bollinger . Excerpt from their market blurb (

"BBImpulse is derived from %b. Its value is the periodic change of %b, so if %b was 0.45 this period and 0.20 last period the present value of BBImpulse is 0.25. We present two reference levels on the chart, an alert level and an impulse level."

"Generally the market moves in the direction of the latest alerts and/or impulses except towards the end of a move where one can take advantage of exhaustion/reversal signals from this indicator."

"Ian Woodward employs BBImpulse for his Kahuna signals using key levels of 0.24 and 0. 40 ."

I added support for the following:
- Highlighting alert/impulse trigger bars
- Rendering the range (check options page).

I noticed that the range, by itself, highlights lot of info:
- Tapering in (narrowing) of range may signify topping or falling prices.
- Tapering out (expanding) may signify nearing a bottom or rising prices.
- Range getting "ranged" between alert or impulse levels signify a major move in the direction of the last impulse trigger. I think for this, alert level ranging intensity is greater than impulse level ranging intensity.

Someone more familiar with BB will have more observations, I am sure. Please do share here so we BB noobs can learn :)

For more indicators, check out my complete list here:

List of my free indicators:
List of my indicators at Appstore:

本著真正的TradingView精神,該腳本的作者將其開源發布,以便交易者可以理解和驗證它。為作者喝彩吧!您可以免費使用它,但在出版物中重複使用此代碼受網站規則的約束。 您可以收藏它以在圖表上使用。



// @author LazyBear 
// List of all my indicators:
study(title = "Bollinger Bands Impulse [LazyBear]", shorttitle = "BBIMP_LB")
source = close
length = input(20, minval=1)
mult = input(2.0, title="Mult Factor", minval=0.001, maxval=50)
showRange = input(false, type=bool)

// Calc BB
basis = sma(source, length)
dev = mult * stdev(source, length)
upper = basis + dev
lower = basis - dev

// Calc Impulse
bbr = (source - lower)/(upper - lower)
bbi = bbr - nz(bbr[1]) 
bbc = iff(bbi>0, 
        iff(bbi>alertLevel and bbi<impulseLevel, lime, iff(bbi>impulseLevel, orange, aqua)),  
        iff(bbi<-alertLevel and bbi>-impulseLevel, red, iff(bbi<-impulseLevel, orange, aqua))

// Plot Ian Woodward's suggested Reference Levels
plot(0, color=gray, title="MidLine", style=3)
plot( impulseLevel, color=gray, style=line, linewidth=1, title="Impulse+")
plot( alertLevel, color=gray, style=3, linewidth=1, title="Alert+")
plot( -alertLevel, color=gray, style=3, linewidth=1, title="Alert-")
plot( -impulseLevel, color=gray, style=line, linewidth=1, title="Impulse-")

plot(showRange ? bbr : na, color=gray, style=area, title="Range+", linewidth=0, transp=80)
plot(showRange ? -bbr : na, color=gray, style=area, title="Range-", linewidth=0, transp=80)

plot(bbi, color=bbc, style=histogram, linewidth=2)