AFL for SH's MArket Correction Prediction Strategy

akgandhi

Active Member
#1
Hi All,

This AFL is for the method/principles stated by TradeWithHunter in the following post as per the link

SH's MArket Correction Prediction Strategy

The code has an exploration also with it.Happy Trading Guys :clap::thumb:

Here is the code.I am using Ami 5.3 plus versions

Code:
SetChartOptions( 0, chartShowArrows | chartShowDates );
colorCrimson = ColorRGB( 220, 20, 60 );
SetChartBkColor( colorWhite );

/*
Reversion to Mean rules for NIFTY

- Nifty futures price has to revert to 3 EMA within a maximum of 3 days before it goes anywhere else.

- Nifty futures price has to revert to 15 EMA within a maximum of 6 weeks before it goes anywhere else..

- NIfty Futures price has to revert to 34 EMA within a maximum of 16-18 weeks (4 months) before it goes anywhere else.

- NIfty Futures price has to revert to 100 EMA within a maximum of 28 weeks before it goes anywhere else. (7 months)

*/

function getMA( period )
{
    return EMA( C, period );
}


p1 = 3;
p2 = 15;
p3 = 34;
p4 = 100;

e1 = getMA( p1 );
e2 = getMA( p2 );
e3 = getMA( p3 );
e4 = getMA( p4 );

dCount1 = Null;
dCount2 = Null;
dCount3 = Null;
dCount4 = Null;

C1 = colorRed;
C2 = colorGreen;
C3 = colorBlue;
C4 = colorDarkBlue;


Plot( e1, "MA" + p1, C1, styleLine );
Plot( e2, "MA" + p2, C2, styleLine );
Plot( e3, "MA" + p3, C3, styleLine );
Plot( e4, "MA" + p4, C4, styleLine | styleDots );

GapUp1 = L > e1;
GapDown1 = H < e1;
Gap1 = GapUp1 OR GapDown1;

GapUp2 = L > e2;
GapDown2 = H < e2;
Gap2 = GapUp2 OR GapDown2;

GapUp3 = L > e3;
GapDown3 = H < e3;
Gap3 = GapUp3 OR GapDown3;

GapUp4 = L > e4;
GapDown4 = H < e4;
Gap4 = GapUp4 OR GapDown4;

myColor = IIf( C > Ref( C, -1 ), colorDarkBlue, ColorCrimson );

PlotOHLC( O, H, L, C, "OHLC", myColor, styleBar );

DayCount = Null;

Plot15_1 = Null;

Plot15_2 = Null;

for ( i = BarCount - 1;i >= 0;i-- )
{

    if ( gap1[i] )
    {
        dcount1[i] = 0;
        first = True;
        m = H[i];

        for ( j = i;j > 0 && gap1[j] == 1;j-- )
        {
            dcount1[i]++;

            if ( first == False )
                gap1[j] = 0;

            first = False;

            m = Max( m, H[j] );
        }

        PlotText( "" + dCount1[i], i, m, colorWhite, colorRed );

    }

    if ( gap2[i] )
    {
        dcount2[i] = 0;
        m = H[i];

        first = True;

        for ( j = i;j > 0 && gap2[j] == 1;j-- )
        {
            dcount2[i]++;

            if ( first == False )
                gap2[j] = 0;

            first = False;

            m = Max( m, H[j] );

        }

        PlotText( "" + dCount2[i], ( i ) - 1, m, colorWhite, colorGreen );

    }

    if ( gap3[i] )
    {
        dcount3[i] = 0;
        m = H[i];

        first = True;

        for ( j = i;j > 0 && gap3[j] == 1;j-- )
        {
            dcount3[i]++;

            if ( first == False )
                gap3[j] = 0;

            first = False;

            m = Max( m, H[j] );

        }

        PlotText( "" + dCount3[i], ( i ) - 2, m, colorWhite, colorBlue );

    }

    if ( gap4[i] )
    {
        dcount4[i] = 0;
        m = H[i];

        first = True;

        for ( j = i;j > 0 && gap4[j] == 1;j-- )
        {
            dcount4[i]++;

            if ( first == False )
                gap4[j] = 0;

            first = False;

            m = Max( m, H[j] );

        }

        PlotText( "" + dCount4[i], ( i ) - 3, m, colorWhite, colorDarkBlue );

    }
}

ToolTip = StrFormat( "Open: %g\nHigh:  %g\nLow:   %g\nClose:  %g (%.1f%%)\nVolume: " + NumToStr( V, 1 ), O, H, L, C, SelectedValue( ROC( C, 1 ) ) );

Cond = gap1 OR gap2 OR gap3 OR gap4;

Filter = COnd;

AddColumn( LastValue( C ), "Last Close", 0, colorBlue );
AddColumn( O, "Open", 0, colorDarkBlue, colorLightYellow, 60 );
AddColumn( H, "High", 0, colorDarkBlue, colorLightYellow, 60 );
AddColumn( L, "Low", 0, colorDarkBlue, colorLightYellow, 60 );
AddColumn( C, "Close", 0, colorDarkBlue, colorLightYellow, 60 );
AddColumn( dcount1, "EMA  3", 0, IIf( C - e1 > 0, colorRed, colorGreen ), colorLightYellow, 60 );
AddColumn( dcount2, "EMA 15", 0, IIf( C - e2 > 0, colorRed, colorGreen ), colorLightYellow, 60 );
AddColumn( dcount3, "EMA 34", 0, IIf( C - e3 > 0, colorRed, colorGreen ), colorLightYellow, 60 );
AddColumn( dcount4, "EMA 100", 0, IIf( C - e4 > 0, colorRed, colorGreen ), colorLightYellow, 60 );
 

a1b1trader

Well-Known Member
#2
Hi All,

This AFL is for the method/principles stated by TradeWithHunter in the following post as per the link

SH's MArket Correction Prediction Strategy

The code has an exploration also with it.Happy Trading Guys :clap::thumb:

Here is the code.I am using Ami 5.3 plus versions
Thanks for the code.
A good one to follow.

Please let me know, how to use the exploration.
 

akgandhi

Active Member
#3
Here is the sample screenshot of the system.The numbers within the colored boxes tell the number of days that the closing price has not touched the corresponding EMA , match the color of the box and the ema color line in the chart and we can quickly get a visual representation of how many days it has not touched.Also on exploring the same thing gets represented in the report window.
 
Last edited:

Similar threads