// Downloaded From https://www.WiseStockTrader.com
_SECTION_BEGIN("EMA Channel Offset Trading System ");
SetChartOptions(0,chartShowArrows|chartShowDates);
_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));
Plot( C, "Close", ParamColor("Color", colorBlack ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() ); 

P = Optimize ( "P AVG", Param("P Avg",34,1,200,1), 1,50,1);
P1 = Optimize("FILTER", Param("Filter",15,1,25,1),5,20,1);
P2= Param("DELAY",21,1,200,1);


A = EMA(( (H+L)/2)+P1,P );
B = EMA( ( (H+L)/2)-P1,P );

 					
x= Ref(A,-P2);
y= Ref(B,-P2);


/* Buy or Sell Condition */
Buy= Cover = Cross(Close,x);
Sell= Short = Cross(y,Close);
Buy = ExRem(Buy,Sell);
Sell = ExRem(Sell,Buy);

Filter = Buy OR Sell;
/* Exploration Parameters */
AddTextColumn( FullName(), "Company Name" );
AddColumn( Buy, "Buy", 1 );
AddColumn( Sell, "Sell", 1 );
AddColumn( C, "Close", 1.3 );
AddColumn( H, "High", 1.3 );


Plot ( x ,"",colorBlue, styleLine);
Plot ( y,"",colorBlue, styleLine);

Title = EncodeColor(colorWhite)+ "EMA OFFSET Trading System" + " - " +  Name() + " - " + EncodeColor(colorRed)+ Interval(2) + EncodeColor(colorWhite) +
 "  - " + Date() +" - "+"\n" +EncodeColor(colorRed) +"Op-"+O+"  "+"Hi-"+H+"  "+"Lo-"+L+"  "+
"Cl-"+C+"  "+ "Vol= "+ WriteVal(V)+"\n"+ 
EncodeColor(colorLime)+
WriteIf (Buy , " GO LONG / Reverse Signal at "+C+"  ","")+
WriteIf (Sell , " EXIT LONG / Reverse Signal at "+C+"  ","")+"\n"+EncodeColor(colorWhite)+
WriteIf(Sell , "Total Profit/Loss for the Last Trade Rs."+(C-BuyPrice)+"","")+
WriteIf(Buy  , "Total Profit/Loss for the Last trade Rs."+(SellPrice-C)+"","");

PlotShapes(IIf(Buy, shapeSquare, shapeNone),colorGreen, 0, L, Offset=-40);
PlotShapes(IIf(Buy, shapeSquare, shapeNone),colorLime, 0,L, Offset=-50);                      
PlotShapes(IIf(Buy, shapeUpArrow, shapeNone),colorWhite, 0,L, Offset=-45); 
PlotShapes(IIf(Sell, shapeSquare, shapeNone),colorRed, 0, H, Offset=40);
PlotShapes(IIf(Sell, shapeSquare, shapeNone),colorOrange, 0,H, Offset=50);                      
PlotShapes(IIf(Sell, shapeDownArrow, shapeNone),colorWhite, 0,H, Offset=-45);

dist = 1.5*ATR(20);
dist1 = 3*ATR(20);
for( i = 0; i < BarCount; i++ )
{
if( Buy[i] )
{
PlotText( "\nBuy:" + C[ i ], i, L[ i ]-dist[i], colorGreen, colorYellow );
}
if( Sell[i] )
{
PlotText( "Sell:" + C[ i ], i, H[ i ]+dist1[i], colorRed, colorYellow );
}
}

_SECTION_END();