// Downloaded From https://www.WiseStockTrader.com //GEN_CROSS_CONF.AFL #include_once ; SetBarsRequired(500000); pebstime = Hour()*60+Minute(); OptimizerSetEngine("cmae"); Lastticktime = Param("Lastticktime",9999,0,9999,1); //If like in SA there is a closing tick instead of a closing bar, then we execute immediately there instead of the usual delay of 1 bar Firsttradetime = Param("FirstTradeTime",0,0,9999,1); //Never do any trade before this time Lasttradetime = Param("LastTradeTime",9999,0,9999,1); //Never do any trade after this time Firstsignaltime = Param("FirstSignalTime",0,0,9999,1); //do not trade on signals that trigger before this time, remember trade is entered usually 1 bar delay after signal Lastsignaltime = Param("LastSignalTime",9999,0,9999,1); //do not trade on signals that trigger after this time, remember trade is entered usually 1 bar delay after signal ExitatClose = ParamToggle("Exit at Close of Day","No|Yes"); xxxdelay = 1-(pebstime>=Lastticktime)*1; //Ignore the delay when last tick, otherwise that trade will only happen next morning Confirm = ParamToggle("Confirming bar required","N|Y",1); fn1 = ParamList("Fn1","ema|sma|brkema|brkema2|brkema3|brkema4|frama|kama|tsf|dema|tema|wilder|hull"); n_fn1_par = Param("n_Fn1",7,1,100,1); fn2 = ParamList("Fn2","ema|sma|brkema|brkema2|brkema3|brkema4|frama|kama|tsf|dema|tema|wilder|hull"); n_fn2_par = Param("n_Fn2",21,1,100,1); n_fn1_opt = ParamToggle("Optimize n_Fn1","No|Yes",1); n_fn2_opt = ParamToggle("Optimize n_Fn2","No|Yes",1); target_fn = ParamList("TargetFn","OHLC4|O|H|L|C|ema|sma|brkema|brkema2|brkema3|brkema4|frama|kama|tsf|dema|tema|wilder|hull"); n_targetfn_par = Param("n_TargetFn",20,1,100,1); n_targetfn_opt = ParamToggle("Optimize n_TargetFn","No|Yes",0); Cntxt = ParamList("Context","None|Contextfilter|Contextfilter2|Contextfilter_Hist60"); firststoptime = Param("First Stoptime",0,0,9999,1); Laststoptime = Param("Last Stoptime",9999,0,9999,1); TradeSL = Param("Trade stoploss",99999,0,99999,1); TradeSP = Param("Trade stopprofit",99999,0,99999,1); DaySL = Param("Day stoploss",99999,0,99999,1); DaySP = Param("Day stopprofit",99999,0,99999,1); MonthSL = Param("Month stoploss",99999,0,99999,1); MonthSP = Param("Month stopprofit",99999,0,99999,1); if (NOT n_fn1_opt){ n_fn1= n_fn1_par; } else { n_fn1 = Optimize("n_Fn1",n_fn1_par,1,100,1); } if (NOT n_fn2_opt){ n_fn2= n_fn2_par; } else { n_fn2 = Optimize("n_Fn2",n_fn2_par,1,100,1); } if (NOT n_targetfn_opt){ n_targetfn= n_targetfn_par; } else { n_targetfn = Optimize("n_TargetFn",n_targetfn_par,1,20,1); } symbol = ParamStr("Basesymbol",Name()); // trade on next bar open SetTradeDelays( 0, 0, 0, 0 ); BuyPrice = SellPrice = Open; ShortPrice = CoverPrice = Open; //Points only PositionSize = MarginDeposit = 1; SetForeign(symbol); switch (target_fn){ case "OHLC4": xxx = (O+H+L+C)/4; break; case "O": xxx = O; break; case "H": xxx=H; break; case "L": xxx=L; break; case "C": xxx = C; break; case "ema": xxx = EMA((O+H+L+C)/4,n_targetfn); break; case "sma": xxx = MA((O+H+L+C)/4,n_targetfn); break; case "brkema": xxx = brkema(n_targetfn); break; case "brkema2": xxx = brkema2(n_targetfn); break; case "brkema3": xxx = brkema3(n_targetfn); break; case "brkema4": xxx = brkema4(n_targetfn); break; case "frama": xxx = frama(n_targetfn); break; case "kama": xxx = kama(n_targetfn,2,30); break; case "tsf": xxx = TSF((O+H+L+C)/4,n_targetfn); break; case "dema": xxx = DEMA((O+H+L+C)/4,n_targetfn); break; case "tema": xxx = TEMA((O+H+L+C)/4,n_targetfn); break; case "wilder": xxx = Wilders((O+H+L+C)/4,n_targetfn); break; case "hull": xxx = HullMA((O+H+L+C)/4,n_targetfn,0); break; } switch (fn1){ case "ema": aaa = EMA(xxx,n_fn1); break; case "sma": aaa = MA(xxx,n_fn1); break; case "brkema": aaa = brkema(n_fn1); break; case "brkema2": aaa = brkema2(n_fn1); break; case "brkema3": aaa = brkema3(n_fn1); break; case "brkema4": aaa = brkema4(n_fn1); break; case "frama": aaa = frama(n_fn1); break; case "kama": aaa = kama(n_fn1,2,30); break; case "tsf": aaa = TSF(xxx,n_fn1); break; case "dema": aaa = DEMA(xxx,n_fn1); break; case "tema": aaa = TEMA(xxx,n_fn1); break; case "wilder": aaa = Wilders(xxx,n_fn1); break; case "hull": aaa = HullMA(xxx,n_fn1,0); break; } switch (fn2){ case "ema": bbb = EMA(xxx,n_fn2); break; case "sma": bbb = MA(xxx,n_fn2); break; case "brkema": bbb = brkema(n_fn2); break; case "brkema2": bbb = brkema2(n_fn2); break; case "brkema3": bbb = brkema3(n_fn2); break; case "brkema4": bbb = brkema4(n_fn2); break; case "frama": bbb = frama(n_fn2); break; case "kama": bbb = kama(n_fn2,2,30); break; case "tsf": bbb = TSF(xxx,n_fn2); break; case "dema": bbb = DEMA(xxx,n_fn2); break; case "tema": bbb = TEMA(xxx,n_fn2); break; case "wilder": bbb = Wilders(xxx,n_fn2); break; case "hull": bbb = HullMA(xxx,n_fn2,0); break; } Confirmvalue = IIf(aaa>=bbb,( Close > ValueWhen( Cross( aaa, bbb ), Max( Open, Close ), 1 ) ),( Close < ValueWhen( Cross( bbb, aaa ), Min( Open, Close ), 1 ) )); confirmvalue = IIf(Confirm,Confirmvalue,1); Buysignal = (aaa>=bbb) AND Confirmvalue AND (pebstime>=firstsignaltime) AND (pebstime<=Lastsignaltime); Sellsignal = (aaa=firstsignaltime) AND (pebstime<=Lastsignaltime) OR ((pebstime>=Lastticktime) AND ExitAtClose ); Shortsignal = (aaa=firstsignaltime) AND (pebstime<=Lastsignaltime); Coversignal = (aaa>=bbb) AND Confirmvalue AND (pebstime>=firstsignaltime) AND (pebstime<=Lastsignaltime) OR ((pebstime>=Lastticktime) AND ExitAtClose); //is this the best spot to remove the extra signals? i think so because after contextfilters you expect and do not want to remove consecutive buy or short signals Buysignal = ExRem(Buysignal,Sellsignal); Shortsignal = ExRem(Shortsignal,Coversignal); Longstate = Flip(Buysignal,(Sellsignal OR Shortsignal)); Shortstate = Flip(Shortsignal,(Coversignal OR BuySignal)); Totalstate = Longstate*1+Shortstate*(-1); totalstate = Ref(totalstate,-xxxdelay); //apply trade delay before applying contextfilter as contextfilters already have trade delay built in = switch (Cntxt){ case "None": break; case "Contextfilter": Totalstate = Contextfilter(Totalstate); break; case "Contextfilter2": Totalstate = Contextfilter2(Totalstate); break; case "Contextfilter_Hist60": Totalstate = Contextfilter_Hist60(Totalstate); break; } //apply stops; delay already built in here correctly? still need to adjust for lastticktime 0 delay totalstate = TradeSLSP(totalstate,1,tradeSL,tradeSP,firststoptime,Laststoptime,Lastticktime); totalstate = DaySLSP(totalstate,1,DaySL,DaySP,firststoptime,Laststoptime,Lastticktime); totalstate = MonthSLSP(totalstate,1,MonthSL,MonthSP,firststoptime,Laststoptime,Lastticktime); Buysignal = (totalstate>0) AND (pebstime>=firsttradetime) AND (pebstime<=Lasttradetime); Sellsignal = (totalstate<=0) AND (pebstime>=firsttradetime) AND (pebstime<=Lasttradetime); Shortsignal = (totalstate<0) AND (pebstime>=firsttradetime) AND (pebstime<=Lasttradetime); Coversignal = (totalstate>=0) AND (pebstime>=firsttradetime) AND (pebstime<=Lasttradetime); RestorePriceArrays(); Buy = Buysignal; Sell = Sellsignal; Short = Shortsignal; Cover = Coversignal; Longstate = Flip(Buysignal,(Sellsignal OR Shortsignal)); Shortstate = Flip(Shortsignal,(Coversignal OR BuySignal)); Totalstate = Longstate*1+Shortstate*(-1); //this totalstate already has the trade delay in PlotOHLC(0,0,Totalstate,Totalstate,_DEFAULT_NAME(),IIf(Totalstate<0,colorRed,colorGreen),styleCloud); SetChartBkColor(colorBlack);