New! WiseTrader Toolbox for Amibroker is now available with:
  • Advanced Adaptive Indicators
  • Advanced Pattern Exploration
  • Neural Networks
  • And Much More...
GoTo WiseTrader Toolbox

Contribute

Contribute an indicator to the library by clicking here. Note you must be logged in.

Sponsors

Popular Indicators

clean pivots for Amibroker (AFL)

Version( 6.0 );

x = BarIndex();
fvb = FirstVisibleValue( x );
lvb = LastVisibleValue( x );
rightStrength = Param( "Fractal Pivot Right side Strength", 5, 0, 50, 1 );
leftStrength = Param( "Fractal Pivot Left side Strength", 10, 0, 50, 1 );
tf = Param( "Time Frame (min)", 5, 1, 10080, 1 );
tog1 = ParamToggle( "Alternate Pivots", "No|Yes", 1 );// clean pivots

tfrm = in1Minute * tf;
fact = Nz( Max( tfrm / 60, Interval() / 60 ) / ( Interval() / 60 ) );

if( fact == 0 )
    fact = 1;

pk = tr = px0 = px1 = px2 = tx0 = tx1 = tx2 = ph0 = ph1 = ph2 = tl0 = tl1 = tl2 = ll = hl = hh = lh = dt = db = 0;
pkn = trn = pxn0 = pxn1 = pxn1 = txn0 = txn1 = txn2 = phn0 = phn1 = phn2 = tln0 = tln1 = tln2 = 0;

function calculateMainPivots()
{
    pk = H > Ref( HHV( H, leftStrength * fact ), -1 ) AND Ref( HHV( H, rightStrength * fact ), rightStrength * fact ) <= H;
    tr = L < Ref( LLV( L, leftStrength * fact ), -1 ) AND Ref( LLV( L, rightStrength * fact ), rightStrength * fact ) >= L;

    if( tog1 )
    {
        pkw = pk;
        trw = tr;
        pk = pkw AND H == HighestSince( trw, H );
        tr = trw AND L == LowestSince( pkw, L );

        pkw = pk;
        trw = tr;
        tr = ExRem( Reverse( trw ), Reverse( pkw ) );
        pk = ExRem( Reverse( pkw ), Reverse( trw ) );

        tr = Reverse( tr );
        pk = Reverse( pk );
    }

    for( i = 0; i < 3; i++ )
    {
        VarSet( "px" + i, ValueWhen( pk, x, i ) );
        VarSet( "tx" + i, ValueWhen( tr, x, i ) );
        VarSet( "ph" + i, ValueWhen( pk, H, i ) );
        VarSet( "tl" + i, ValueWhen( tr, L, i ) );
        
        VarSet( "pxdis" + i, lvb - ValueWhen( pk, x, i ) );
        VarSet( "txdis" + i, lvb - ValueWhen( tr, x, i ) );
    }

    ll = tr AND tl1 < tl2;
    hl = tr AND tl1 > tl2;
    hh = pk AND ph1 > ph2;
    lh = pk AND ph1 < ph2;
    dt = pk AND ph1 == ph2;
    db = tr AND tl1 == tl2;
}

function calculateWorkingPivots()
{
    pkn = H > Ref( HHV( H, ( leftStrength + 0 ) * fact ), -1 );
    trn = L < Ref( LLV( L, ( leftStrength + 0 ) * fact ), -1 );

    for( i = 0; i < 3; i++ )
    {
        VarSet( "pxn" + i, ValueWhen( pkn, x, i ) );
        VarSet( "txn" + i, ValueWhen( trn, x, i ) );
        VarSet( "phn" + i, ValueWhen( pkn, H, i ) );
        VarSet( "tln" + i, ValueWhen( trn, L, i ) );
    }
}

GraphXSpace = 5;
SetChartBkColor( colorBlack );
SetChartOptions( 1, chartShowDates, chartGridMiddle, 0, 0, 0 );
SetBarFillColor( IIf( C > O, ColorRGB( 0, 75, 0 ), IIf( C <= O, ColorRGB( 75, 0, 0 ), colorLightGrey ) ) );
Plot( C, "", IIf( C > O, ColorRGB( 0, 255, 0 ), IIf( C <= O, ColorRGB( 255, 0, 0 ), colorLightGrey ) ), 64, Null, Null, 0, 0, 1 );

function drawPivotLabels()
{
    sz = 5;

    for( i = lvb; i > fvb; i-- )
    {
        {
            if( ll[i] ) PlotTextSetFont( "LL", "Arial Black", sz, i, L[i], colorGreen, colorDefault, -25 );

            if( hl[i] ) PlotTextSetFont( "HL", "Arial Black", sz, i, L[i], colorGreen, colorDefault, -25 );

            if( db[i] ) PlotTextSetFont( "DB", "Arial Black", sz, i, L[i], colorLightBlue, colorDefault, -25 );

            if( hh[i] ) PlotTextSetFont( "HH", "Arial Black", sz, i, H[i], colorRed, colorDefault, 20 );

            if( lh[i] ) PlotTextSetFont( "LH", "Arial Black", sz, i, H[i], colorRed, colorDefault, 20 );

            if( dt[i] ) PlotTextSetFont( "DT", "Arial Black", sz, i, H[i], colorOrange, colorDefault, 20 );
        }
    }
}

calculateMainPivots();
calculateWorkingPivots();
drawPivotLabels();

PlotShapes( shapeSmallCircle*trn, ColorRGB( 0, 30, 0 ), 0, L, -10 );
PlotShapes( shapeSmallCircle*pkn, ColorRGB( 50, 0, 0 ), 0, H, 10 );

if( !tog1 )// cleanpivots turned off
{
    PlotShapes( shapeSmallCircle * tr, IIf( txdis1 > rightStrength * fact, ColorRGB( 0, 255, 0 ), colorWhite ), 0, L, -10 );
    PlotShapes( shapeSmallCircle * pk, IIf( pxdis1 > rightStrength * fact, ColorRGB( 255, 0, 0 ), colorWhite ), 0, H, 10 );
}
else // cleanpivots turned on
{   
	// => this part not finished, validation still needs to be adressed
    PlotShapes( shapeSmallCircle * tr, ColorRGB( 0, 255, 0 ), 0, L, -10 );
    PlotShapes( shapeSmallCircle * pk, ColorRGB( 255, 0, 0 ), 0, H, 10 );            
}

Title = Name() +
        " | " + Now( 2 );

Main Menu

Indicators

Sponsors