// Downloaded From https://www.WiseStockTrader.com
SetChartBkGradientFill( ParamColor( "TopColor", ColorRGB( 217, 197, 137 ) ), ParamColor( "BottomColor", ColorRGB( 254, 244, 224 ) ) );
_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));

_SECTION_BEGIN("SingleMA");

SetChartOptions(0, chartShowDates | chartWrapTitle);
Plot(C,"",IIf(C>O,ParamColor("Wick UP Color", colorDarkGreen),IIf(C<=O,ParamColor("Wick Down Color", colorDarkRed),colorLightGrey)),64,0,0,0,0);
kk = Optimize( "mult", Param( "mult", 2, 1, 6, 0.25 ), 1, 2, 0.25 );
Per = Optimize( "period", Param( "period", 10, 5, 50, 1 ), 5, 50, 1 );
sdfact = Param( "Standard Deviation Factor", 2, 0.5, 5, 0.1 );
offset = Param( "Offset", 2, 1, 50, 1 );
tc = ParamList( "Channel Display", List = "No Channel|Channel|ChannelRT|Both
Channels", 1 );
ms = ParamToggle( "Trend", "Regular|Smoothed", 1 );

x = Cum( 1 );
HaClose = ( O + H + L + C ) / 4;
HaOpen = AMA( Ref( HaClose, -1 ), 0.5 );
HaHigh = Max( H, Max( HaClose, HaOpen ) );
HaLow = Min( L, Min( HaClose, HaOpen ) );

if ( ms == 0 )
{
    nm = ( H - L );
    j = ( O + H + L + C ) / 4;
}
else
{
    nm = ( HaHigh - HaLow );
    j = ( HaOpen + HaHigh + HaLow + HaClose ) / 4;
}

rfsctor = WMA( nm, Per );

revers = kk * rfsctor;
Trend = 1;
NW[0] = 0;

for ( i = 1;i < BarCount;i++ )
{
    if ( Trend[i-1] == 1 )
    {
        if ( j[i] < NW[i-1] )
        {
            Trend[i] = -1;
            NW[i] = j[i] + Revers[i];
        }
        else
        {
            Trend[i] = 1;

            if ( ( j[i] - Revers[i] ) > NW[i-1] )
            {
                NW[i] = j[i] - Revers[i];
            }
            else
            {
                NW[i] = NW[i-1];
            }
        }
    }

    if ( Trend[i-1] == -1 )
    {
        if ( j[i] > NW[i-1] )
        {
            Trend[i] = 1;
            NW[i] = j[i] - Revers[i];
        }
        else
        {
            Trend[i] = -1;

            if ( ( j[i] + Revers[i] ) < NW[i-1] )
            {
                NW[i] = j[i] + Revers[i];
            }
            else
            {
                NW[i] = NW[i-1];
            }
        }
    }
}

cp = ( H + L ) / 2;

Plot( IIf( NW < j, NW, Null ), "\ntrailLong", ParamColor( "ColorTrailLong",
colorBlue ), styleStaircase | styleDots );
Plot( IIf( NW > j, NW, Null ), "\ntrailShort", ParamColor( "ColorTrailShort",
colorRed ), styleStaircase | styleDots );

Buy = NW < j;
Short = NW > j;

Cover=Buy = ExRem(Buy, Short);
Sell=Short = ExRem(Short, Buy);

PlotShapes(IIf(Buy, shapeUpArrow, shapeNone),colorBlue, 0,NW);
PlotShapes(IIf(Short, shapeDownArrow, shapeNone),colorRed, 0,NW);



_SECTION_END();