// Downloaded From https://www.WiseStockTrader.com
function trail_func(jj,trBull,trBear)
{
	trailArray[ 0 ] = jj[ 0 ]; // initialize
	for( i = 1; i < BarCount; i++ )
	{
		prev = trailArray[ i - 1 ];
 
		if (jj[ i ] > prev AND jj[ i - 1 ] > prev)
		{
			trailArray[ i ] = Max(prev,jj[ i ] - trBull[ i ]);
		}
		else if (jj[ i ] < prev AND jj[ i - 1 ] < prev)
		{
			trailArray[ i ] = Min(prev,jj[ i ] + trBear[ i ]);
		}
		else if (jj[ i ] > prev)
		{
			trailArray[ i ] = jj[ i ] - trBull[ i ];
		}
		else
		{
			trailArray[ i ] = jj[ i ] + trBear[ i ];	
		}
	}
	return trailArray;
}

// code by E.M.Pottasch
// adjusted from M.Kartnik 
// following: http://wisestocktrader.com/indicators/1710-nma-v-3-6-a-optimiser

k_bull = Param("mult bull",1.25,1,4,0.05); 
k_bear = Param("mult bear",1.25,1,4,0.05); 
Per= Param("period",10,5,50,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));

ms=ParamList("ST0P/REV",List="Reg|Smoothed",0);
if(ms=="Reg")
{
	nm =(H-L);
	j=(O+H+L+C)/4;
}
else
{
	nm=(HaHigh-HaLow);
	j=(HaOpen+HaHigh+HaLow+HaClose)/4;
}
 
rfsctor = WMA(nm,PER); 
revers_bull=k_bull*rfsctor; 
revers_bear=k_bear*rfsctor;

nw = trail_func(j,revers_bull,revers_bear);

GraphXSpace = 5;
SetChartOptions(0, chartShowDates);
Plot( Close, "\nPrice", colorWhite, styleCandle ); 
Plot(IIf(NW > j,NW,Null),"\ntrailShort",ParamColor("ColorTrailShort",ColorRGB(255,0,0)),styleStaircase);
Plot(IIf(NW < j,NW,Null),"\ntrailLong",ParamColor("ColorTrailLong",ColorRGB(0,255,0)),styleStaircase);