Skip to main content

Bollinger Band ZigZag Indicator 4 for Amibroker (AFL)

suresh027 about 10 years ago Amibroker (AFL)

  • Rating:
    3 / 5 (Votes 2)
  • Tags:
    amibroker

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

about 10 years ago

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.

2. ole
about 10 years ago

Throwing error when “Trade Lines” is toggled to Show.

Leave Comment

Please login here to leave a comment.