/*[[ Name := Mr.RobotM5i Author := FAB4X Link := http://www.metexinvest.com/ Notes := Use on 5M Chart for all majors. Lots := 1.00 Stop Loss := 45 Take Profit := 150 Trailing Stop := 15 ]]*/ Var: bull(0),bear(0); Define: slippage(2),MM(0),Risk(7.5),Start_Time(7),End_Time(20); Var: sl(0),tp(0),cnt(0),b(0),s(0),Opentrades(0),lotsi(0),ITB(0),ITS(0); var: vSlippage(0); Var: vSignal1(""); var: vSignal2(""); var: vSignal3(""); var: vSignal4(""); var: vSig151(0); var: vSig152(0); var: vSig153(0); var: vSig154(0); var: vSig15Buy(0); var: vSig15Sell(0); var: vStopLoss(0); var: vSigSell(""); var: vSigBuy(""); var: vMode01(0); var: vMode02(0); var: vTime(0); Var: Mode(0); var: FXSymbol(""); Var: Lastfilebartime(0),SecondsIn30M(108000); Var: Lastbarchecked(0),Filehandle1(0),First(true),temp1(0),temp2(0),temp3(0),temp4(0); If istesting and first Then Begin first = False; Filehandle1 = FileOpen("MRRobot"+Symbol+".csv", ","); End; ///////////////////////////////////////////////// // Trade Management and Creation ///////////////////////////////////////////////// vSignal1 = "[" + SYMBOL + "] Signal 1"; vSignal2 = "[" + SYMBOL + "] Signal 2"; vSignal3 = "[" + SYMBOL + "] Signal 3"; vSignal4 = "[" + SYMBOL + "] Signal 4"; if istesting then { if Lastfilebartime<=t[0]-SecondsIn30M then { While Lastfilebartime<=t[0]-SecondsIn30M Begin Lastfilebartime = FileReadNumber(Filehandle1); temp1 = FileReadNumber(Filehandle1); temp2 = FileReadNumber(Filehandle1); temp3 = FileReadNumber(Filehandle1); temp4 = FileReadNumber(Filehandle1); End; } If Lastfilebartime>t[0] then // This means a 30M bar was missing { vSig151=0; //Set all to 0 so nothing happens based on 30M bars if current 30M bar is missingthat are missing vSig152=0; vSig153=0; vSig154=0; } else { vSig151=temp1; vSig152=temp2; vSig153=temp3; vSig154=temp4; } } else { vSig151 = GetGlobalVariable(vSignal1); vSig152 = GetGlobalVariable(vSignal2); vSig153 = GetGlobalVariable(vSignal3); vSig154 = GetGlobalVariable(vSignal4); }; vMode01 = iCustom("iTrend",0,0,0,20,2,14,MODE_FIRST,1); vMode02 = iCustom("iTrend",0,0,0,20,2,14,MODE_SECOND,1); bull = iBullsPower(5,PRICE_CLOSE,1); bear = iBearsPower(5,PRICE_CLOSE,1); comment("bull+bear= ",bull + bear,"\n I Blue ",vMode01,"\n I Red ",vMode02,"\n I-30 Blue ",vSig151,"\n I-30 Red ",vSig152); ///////////////////////////////////////////////// // Calculation/Settings ///////////////////////////////////////////////// OpenTrades = 0; for cnt = 1 to TotalTrades { FXSymbol = OrderValue(cnt, VAL_SYMBOL); Mode = OrderValue(cnt, VAL_TYPE); if FXSymbol == Symbol then { if (Mode == OP_SELL or Mode == OP_BUY) then { OpenTrades++; } } } ////////////////////////////////////////////////// ///////////// Manage multiple trades ///////////// ////////////////////////////////////////////////// Opentrades=0; For cnt=1 to TotalTrades Begin If OrderValue(cnt,Val_Symbol)=Symbol then { Opentrades=Opentrades+1; }; End; ////////////////////////////////////////////////// ///////////// Money Manager ///////////// ////////////////////////////////////////////////// if mm<>0 then Lotsi=Ceil(Balance*risk/10000)/10 else Lotsi=Lots; if OpenTrades != 0 then { for cnt = 1 to TotalTrades { if OrderValue(cnt, VAL_SYMBOL) == Symbol then { if (OrderValue(cnt, VAL_TYPE) == OP_BUY) then { // if vSig151 or vSig153 then // { // Exit; // } if vSig152 or vSig154 or vSig153 or hour == End_Time then { CloseOrder (OrderValue(cnt, VAL_TICKET),OrderValue(cnt, VAL_LOTS),OrderValue(cnt, VAL_CLOSEPRICE),Slippage,yellow); Exit; } } if (OrderValue(cnt, VAL_TYPE) == OP_SELL) then { // if vSig152 or vSig153 then // { // Exit; // } if vSig151 or vSig154 or vSig153 or hour == End_Time then { CloseOrder (OrderValue(cnt, VAL_TICKET),OrderValue(cnt, VAL_LOTS),OrderValue(cnt, VAL_CLOSEPRICE),Slippage,yellow); Exit; } } } } } IF hour < Start_Time or hour >= End_Time then exit; if Opentrades = 0 then { if vTime != Time[0] then { if bull + bear > 0 and vMode01= 1 and vMode02= 0 and vSig151 and not vSig152 and not vSig153 and not vSig154 then { sl = Ask - StopLoss * Point; tp = Bid + TakeProfit * Point; SetOrder(OP_BUY,Lotsi,Ask,slippage,sl,tp,Blue); vTime = Time[0]; Exit; } } if vTime != Time[0] then { if bull + bear < 0 and vMode01 == 0 and vMode02 == -1 and vSig152 and not vSig151 and not vSig153 and not vSig154 then { sl = Bid + StopLoss * Point; tp = Ask - TakeProfit * Point; SetOrder(OP_SELL,Lotsi,Bid,slippage,sl,tp,Red); vTime = Time[0]; Exit; } } } b = 1 * Point + iATR(5,1) * 1.5; s = 1 * Point + iATR(5,1) * 1.5; for cnt = 1 to TotalTrades { if OrderValue(cnt,VAL_TYPE) == 0 and OrderValue(cnt,VAL_SYMBOL) == Symbol then { if OrderValue(cnt,VAL_OPENPRICE) > OrderValue(cnt,VAL_STOPLOSS) and Bid - OrderValue(cnt,VAL_OPENPRICE) > StopLoss * Point then { ModifyOrder(OrderValue(cnt,VAL_TICKET),OrderValue(cnt,VAL_OPENPRICE),OrderValue(cnt,VAL_OPENPRICE),OrderValue(cnt,VAL_TAKEPROFIT),Pink); Exit; } if Bid - OrderValue(cnt,VAL_OPENPRICE) > b then { if OrderValue(cnt,VAL_STOPLOSS) < Bid - b then { ModifyOrder(OrderValue(cnt,VAL_TICKET),OrderValue(cnt,VAL_OPENPRICE),Bid - b,OrderValue(cnt,VAL_TAKEPROFIT),pink); Exit; } } } if OrderValue(cnt,VAL_TYPE) == 1 and OrderValue(cnt,VAL_SYMBOL) == Symbol then { if OrderValue(cnt,VAL_OPENPRICE) < OrderValue(cnt,VAL_STOPLOSS) and OrderValue(cnt,VAL_OPENPRICE) - Ask > StopLoss * Point then { ModifyOrder(OrderValue(cnt,VAL_TICKET),OrderValue(cnt,VAL_OPENPRICE),OrderValue(cnt,VAL_OPENPRICE),OrderValue(cnt,VAL_TAKEPROFIT),pink); Exit; } if OrderValue(cnt,VAL_OPENPRICE) - Ask > s then { if OrderValue(cnt,VAL_STOPLOSS) > Ask + s then { ModifyOrder(OrderValue(cnt,VAL_TICKET),OrderValue(cnt,VAL_OPENPRICE),Ask + s,OrderValue(cnt,VAL_TAKEPROFIT),pink); Exit; } } } }