_SECTION_BEGIN("AlgoJi.com ATR Bands Strategy"); 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() ); SetBarsRequired(10000,0); SetPositionSize(1, spsShares); OptimizerSetEngine("cmae"); per1= Param("Band Periods", 50,1,50,1); per2= Param("Band Multiplier", 3,1,10,0.1); ubb= EMA(C,per1)+ per2*ATR(per1); Lbb= EMA(C,per1)- per2*ATR(per1); Buy=Cross(C,ubb); Sell=Cross(Lbb,C); Buy = ExRem( Buy, Sell ); Sell = ExRem( Sell, Buy ); Short = Cross(Lbb,C); Cover = Cross(C,ubb); Short = ExRem( Short, Cover ); Cover = ExRem( Cover, Short ); Plot(ubb, "", colorBlue, styleLine); Plot(lbb, "", colorRed, styleLine); Plot(EMA(C,per1), "", colorDarkGrey); Title = NumToStr( DateTime(), formatDateTime ) + " O " + O + " H " + H + " L " + L + " C " + 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, shapeDownArrow, shapeNone ), colorRed, 0, H, Offset = -45 ); PlotShapes( IIf( Short, shapeSquare, shapeNone ), colorRed, 0, H, Offset = 40 ); PlotShapes( IIf( Short, shapeSquare, shapeNone ), colorOrange, 0, H, Offset = 50 ); PlotShapes( IIf( Short, shapeDownArrow, shapeNone ), colorWhite, 0, H, Offset = -45 ); PlotShapes( IIf( Cover, shapeUpArrow, shapeNone ), colorBlue, 0, L, Offset = -45 ); _SECTION_END(); ///section begins for options; apply strategy code above this section bsym= ParamStr("Base Symbol", "BANKNIFTY"); expiry= ParamStr("Expiry(dd-mm-yy)","26-09-2019"); strikedist= Param("Strike Dist",0, -1000, 1000); instr= ParamList("Instrument Name","OPTIDX|OPTSTK"); qt= Param("Quantity", 20, 1, 10000); stag= ParamStr("Strategy Tag", "STG1"); Buy=Ref(Buy,-1); Sell=Ref(Sell,-1); Short= Ref(Short,-1); Cover= Ref(Cover,-1); if(LastValue(BarsSince(Buy) x1 AND pxy1 AND py < y2 AND Click ) { AlertIf( 1, "SOUND C:\\Windows\\Media\\tada.wav", "Audio alert", 1, 2, 1 ); PopupWindowEx( "ID:1", "BUY", "Buy Triggered from Button "+Name(), 1, -1, -1 ); StaticVarSet("counter", Nz(StaticVarGet("counter"))+1 ); _TRACE( "#"+Nz(StaticVarGet("counter"))+",LE,"+csym+",,," +bp +","+qty+","+instr+",,"); Algoji_Signal(NumToStr(Nz(StaticVarGet("counter")),0,False), "LE",csym,"M","",bp,qty,instr,stag); StaticVarSet("counter", Nz(StaticVarGet("counter"))+1 ); _TRACE( "#"+Nz(StaticVarGet("counter"))+",LX,"+psym+",,," +bp +","+qty+","+instr+",,"); Algoji_Signal(NumToStr(Nz(StaticVarGet("counter")),0,False), "LX",psym,"M","",bp,qty,instr,stag); } //https://algoji.com/ if ( px > sx1 AND pxsy1 AND py < sy2 AND Click ) { AlertIf( 2, "SOUND C:\\Windows\\Media\\tada.wav", "Audio alert", 2, 2, 1 ); PopupWindowEx( "ID:3", "SHORT", "Short Triggered from Button "+Name(), 1, -1, -1 ); StaticVarSet("counter", Nz(StaticVarGet("counter"))+1 ); _TRACE( "#"+Nz(StaticVarGet("counter"))+",LE,"+psym+",,," +sp +","+qty+","+instr+",,"); Algoji_Signal(NumToStr(Nz(StaticVarGet("counter")),0,False), "LE",psym,"M","",sp,qty,instr,stag); StaticVarSet("counter", Nz(StaticVarGet("counter"))+1 ); _TRACE( "#"+Nz(StaticVarGet("counter"))+",LX,"+csym+",,," +sp +","+qty+","+instr+",,"); Algoji_Signal(NumToStr(Nz(StaticVarGet("counter")),0,False), "LX",csym,"M","",sp,qty,instr,stag); } }