// Downloaded From https://www.WiseStockTrader.com _SECTION_BEGIN("Bollinger Band ZigZag Indicator"); function ParamOptimize( description, defaultVal, minv, maxv, step ) { return Optimize(description, Param(description,defaultVal, minv, maxv, step ), minv, maxv, step ); } BlankBars = 10; // Set to the number set in preferences Buy = Sell = Short = Cover = Pos = 0; Periods = ParamOptimize( "Periods", 3, 3, 30, 1 ); Width = ParamOptimize( "Width", 1, 0, 5, 0.1 ); BBTOp = BBandTop( H, Periods, Width ); // Note H is used instead of the tradional C BBBot = BBandBot( L, Periods, Width ); // Note L is used instead of the tradional C Plot( BBTop, "BBTop", colorBlue, styleLine ); Plot( BBBOt, "BBBot", colorBlue, styleLine ); Plot( C, "", 1, 128 ); BI = BarIndex(); start = Status( "firstvisiblebarindex" ) - BI[0] - BlankBars; end = Status( "lastvisiblebarindex" ) - BI[0] - BlankBars; LBI = LastValue( BarIndex() ); for ( b = LBI; b > Periods; b-- ) { if ( L[b] <= BBBot[b] AND pos <= 0 ) { pos = 1; Buy[b] = True; BuyPrice[b] = BBBot[b]; } else if ( H[b] >= BBTop[b] AND Pos >= 0 ) { Pos = -1; Sell[b] = True; SellPrice[b] = BBTop[b]; } } Short = Sell; ShortPrice = SellPrice; Cover = Buy; CoverPrice = BuyPrice; Eq = Equity( 1 ); if ( ParamToggle( "Equity", "HIDE|SHOW", 0 ) ) Plot( Eq, "", colorYellow, 1 | styleOwnScale ); ShowTriangles = ParamToggle( "Arrows", "HIDE|SHOW", 1 ); if ( showTriangles ) { PlotShapes( IIf( Buy, shapeSmallUpTriangle, shapeNone ), 5, 0, BuyPrice, 0 ); PlotShapes( IIf( Sell, shapeHollowDownTriangle, shapeNone ), 4, 0, SellPrice, 0 ); PlotShapes( IIf( Cover, shapeHollowUpTriangle, shapeNone ), 5, 0, CoverPrice, 0 ); PlotShapes( IIf( Short, shapeSmallDownTriangle, shapeNone ), 4, 0, ShortPrice, 0 ); } if ( ParamToggle( "Trade Lines", "HIDE|SHOW", 0 ) ) { Sig = Buy OR Short; signum = Cum( Sig ); y0 = 0; y1 = C[0]; TPrice = C; Shortcolor = LongColor = colorWhite; for ( b = start ;b < end ;b++ ) { if ( Sig[b] ) { x0 = y0; x1 = y1; y0 = b; if ( Buy[b] ) { y1 = BuyPrice[b]; Color = Shortcolor; } else if ( Short[b] ) { y1 = ShortPrice[b]; Color = Longcolor; } if( SigNum[b] > 1 ) Plot( LineArray( x0, x1, y0, y1 ), "", Color, 1 | styleThick ); } } } _SECTION_END();