Nicolas

Smoothed Bollinger %b indicator

Category: Indicators By: Nicolas Created: November 12, 2015, 12:10 PM
November 12, 2015, 12:10 PM
Indicators
12 Comments

This is the modified % bollinger bands oscillator remade by Sylvain Vervoort. It’s using an Heiken Ashi closing price instead of the classic close value with TEMA average. This indicator tend to be more accurate and less choppy for intendifying turning points of the Dow theory by counting reverse oscillation of the curve.

Because of its bounded values, it can be used as an overbought and oversold classical oscillator.

// variables : 
// period = 18
// TeAv = 8
// afwh = 1.6
// afwl = 1.6
// afwper = 63

haOpen = ((Open[1]+High[1]+Low[1]+Close[1])/4 + (Open[2]+High[2]+Low[2]+Close[2]))/2
haC = ((Open+High+Low+Close)/4 + haOpen + Max(high,haOpen) + Min(low,haOpen)) /4

TMA1 = tema[TeAv](haC)
TMA2 = tema[TeAv](TMA1)
Diff = TMA1-TMA2
ZlHA = TMA1+Diff

percb = (tema[TeAv](ZLHA)+2*STD[period](tema[TeAv](ZLHA))-weightedaverage[period](tema[TeAv](ZLHA))) / (4*STD[period](tema[TeAv](ZLHA)))*100

hi = 50+afwh*STD[afwper](percb)
lo = 50-afwl*STD[afwper](percb)


RETURN percb as "SVE BB %b", hi as "upper band", lo as "lower band", 50 as "middle"

Download
Filename: SVE_BBb.itf
Downloads: 190
Nicolas
Nicolas Legend
I created ProRealCode because I believe in the power of shared knowledge. I spend my time coding new tools and helping members solve complex problems. If you are stuck on a code or need a fresh perspective on a strategy, I am always willing to help. Welcome to the community!
Author’s Profile

Comments

cepamoi
9 years ago
#

Hi Nicolas, Something looks odd with haOpen: it seems that /4 is missing in the second part of the formula. Shouldn't we have: haOpen = ((Open[1]+High[1]+Low[1]+Close[1])/4 + (Open[2]+High[2]+Low[2]+Close[2])/4)/2 Thanks.

cepamoi
9 years ago
#

Now it works. Thanks a lot Nicolas! Here is the full code: // variables : // period = 18 // TeAv = 8 afwh = 1.6 afwl = 1.6 afwper = 63 once haOpen = medianprice if barindex>1 then haOpen = ((Open[1]+High[1]+Low[1]+Close[1])/4 + haOpen[1])/2 endif haC = ((Open+High+Low+Close)/4 + haOpen + Max(high,haOpen) + Min(low,haOpen)) /4 TMA1 = tema[TeAv](haC) TMA2 = tema[TeAv](TMA1) Diff = TMA1-TMA2 ZlHA = TMA1+Diff percb = (tema[TeAv](ZLHA)+2*STD[period](tema[TeAv](ZLHA))-weightedaverage[period](tema[TeAv](ZLHA))) / (4*STD[period](tema[TeAv](ZLHA)))*100 hi = 50+afwh*STD[afwper](percb) lo = 50-afwl*STD[afwper](percb) RETURN percb as "SVE BB %b", hi as "upper band", lo as "lower band", 50 as "middle"

Nicolas
9 years ago
#

Force calculation to wait 1 bar of history already loaded: ONCE haOpen = medianprice if barindex>1 then haOpen = ((Open[1]+High[1]+Low[1]+Close[1])/4 + haOpen[1])/2 endif

cepamoi
9 years ago
#

Unfortunately, this still does not work: ONCE haOpen = medianprice haOpen = ((Open[1]+High[1]+Low[1]+Close[1])/4 + haOpen[1])/2 ProRealTime does not plot anything with the above formula. What are we missing here?

Nicolas
9 years ago
#

Because haOpen doesn't exist at the very first bar, so the calculation can't be made correctly (while Open/High/Low/Close do exist in the data serie). You should give haOpen a dummy value one time at first code read, like this: ONCE haOpen = medianprice

cepamoi
9 years ago
#

So the correct formula should be something like: haOpen = ((Open[1]+High[1]+Low[1]+Close[1])/4 + haOpen[1])/2 However, this does not seem to work. Any idea why?

Nicolas
9 years ago
#

I made verification and all formulas on the TraderTips page refer to the previous candlestick for the haOpen calculation. This is how S.VERVOORT made this indicator. To refer to a previous state of a value, just add offset in brackets : myvalue[20]

cepamoi
9 years ago
#

From here: http://traders.com/documentation/feedbk_docs/2010/05/TradersTips.html haOpen = 0.5 * ( AvgPrice + haOpen[1] ) ; So haOpen = ((Open[1]+High[1]+Low[1]+Close[1])/4 + (Open[2]+High[2]+Low[2]+Close[2]))/2 is probably wrong. With this formula, if you try to plot haOpen, it is significantly shifted up from the price, which probably does not make sense. But haOpen = ((Open[1]+High[1]+Low[1]+Close[1])/4 + (Open[2]+High[2]+Low[2]+Close[2])/4)/2 is probably wrong too... How can we implement a formula which refers to its previous value in ProRealTime?

Nicolas
9 years ago
#

Well, I don't remember now but I think I've translated it correctly from its own original code... may I ask you to make a small verification on the web? :)

Maxime Baudin
9 years ago
#

Thanks!

ALE
ALE
9 years ago
#

Hi Nicolas there's a problem to download file Thanks for the very nice indicator

Nicolas
9 years ago
#

Thank you for noticing it to me, it is now fixed. Problem came from a wrong file name..

ProRealCode ProRealCode
Loading...