Contribute

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

New! Stock Portfolio Organizer is now available:
  • Shares, Margin, Futures and Forex
  • EOD and Realtime data
  • And Much More...
GoTo Stock Portfolio Organizer
New! WiseTrader Toolbox for Amibroker is now available with:
  • Advanced Adaptive Indicators
  • Advanced Pattern Exploration
  • Neural Networks
  • And Much More...
GoTo WiseTrader Toolbox

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