Bollinger Band ZigZag Indicator 4 for Amibroker (AFL)
suresh027 about 10 years ago Amibroker (AFL)
Here is AFL based on BB. indicates possible reversal points on daily on weekly charts(EOD). dont use it on live charts
Indicator / Formula
Copy & Paste Friendly
_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();2 comments
Leave Comment
Please login here to leave a comment.
problem is that usually signals come earlier than shown in the chart. Still the system would still work if you get an entry/exit price close to BBBot or BBTop. Trading this system in the hourly time frame will still give a good result for ES mini futures when you take into account a “slippage” from BBBot and BBTop of 3 ticks. For oil 8 ticks is allowed.
Question is can you get anywhere near that in reality.
Throwing error when “Trade Lines” is toggled to Show.