/*[[ Name := XT12 Author := ERB Link := Notes := Lots := TradeVol Stop Loss := 0 Take Profit := 0 Trailing Stop := 0 ]]*/ Defines: Compounding(0),GearingToOne(10),StartBar(0); Variables: cnt(0),TradeVol(0),OPar0(0),OPar1(0),OPar2(0),FPar0(0),FPar1(0); Variables: TP(1000),TS(0),SL(0),G(0),I(0),FT(0),P(0),Q(0),X(16); If TimeYear(Time)=2003 and Month<6 then Exit; If TimeYear(Time)=2003 and Month=6 and Day<19 then Exit; If Symbol="USDCHF"|Symbol="EURJPY"|Symbol="EURUSD"|Symbol="GBPUSD" then { If Symbol="USDCHF" then {G=180;I=40;P=11;Q=5;FT=0;SL=50;TS=70;}; If Symbol="EURJPY" then {G=180;I=40;P=12;Q=5;FT=1;SL=50;TS=60;}; If Symbol="EURUSD" then {G=200;I=200;P=12;Q=5;FT=0;SL=60;TS=70;}; If Symbol="GBPUSD" then{G=220;I=40;P=14;Q=4;FT=0;SL=50;TS=65;};}; If Bars < (StartBar*1000) then Exit; If Bars > (X*1000) then Exit; If Compounding = 1 then TradeVol = 0.1*(Round(Equity/(10000/GearingToOne))); If Compounding = 0 then TradeVol = Lots; OPar0 = iSAR(0.0001*G,0.001*I,0); OPar1 = iSAR(0.0001*G,0.001*I,1); OPar2 = iSAR(0.0001*G,0.001*I,2); FPar0 = iSAR(0.0001*P,0.001*Q,0); FPar1 = iSAR(0.0001*P,0.001*Q,1); If TotalTrades < 1 and OPar0Close[1] and FPar0Close[1] then { SetOrder(OP_BUY,TradeVol,Ask,3,Bid-SL*Point,Ask+TP*Point,Lime); Exit; }; If TotalTrades < 1 and LastTradeTime < Time[0] and OPar1>Close[1] and OPar2Close[0] and OPar1Close[0] then { SetOrder(OP_SELL,TradeVol,Bid,3,Ask+SL*Point,Bid-TP*Point,DeepSkyBlue); Exit; }; If FT = 1 and TotalTrades < 1 and FPar0>Close[0] and FPar1Close[2] and FPar0>Close[0] then { SetOrder(OP_SELLSTOP,TradeVol,OPar0,3,Ask+SL*Point,Bid-TP*Point,DeepSkyBlue); Exit; }; for cnt=1 to TotalTrades begin If Ord(cnt,VAL_TYPE)=OP_BUY then { If (Bid-Ord(cnt,VAL_OPENPRICE))>(TS*Point) then { If Ord(cnt,VAL_STOPLOSS)<(Bid-TS*Point) then { ModifyOrder(Ord(cnt,VAL_TICKET),Ord(cnt,VAL_OPENPRICE), Bid-TS*Point,Ord(cnt,VAL_TAKEPROFIT),Red); Exit; }; }; If LastTradeTime < Time[0] then ( If Ord(cnt,VAL_STOPLOSS) < OPar0 and OPar0 < Close[0] then { ModifyOrder(Ord(cnt,VAL_TICKET),Ord(cnt,VAL_OPENPRICE), OPar0,Ord(cnt,VAL_TAKEPROFIT),Red); Exit; }; }; }; If Ord(cnt,VAL_TYPE)=OP_SELL then ( If (Ord(cnt,VAL_OPENPRICE)-Ask)>(TS*Point) then { If Ord(cnt,VAL_STOPLOSS)>(Ask+TS*Point) or Ord(cnt,VAL_STOPLOSS)=0 then { ModifyOrder(Ord(cnt,VAL_TICKET),Ord(cnt,VAL_OPENPRICE), Ask+TS*Point,Ord(cnt,VAL_TAKEPROFIT),Red); Exit; }; }; If LastTradeTime < Time[0] then ( If Ord(cnt,VAL_STOPLOSS) > OPar0 and OPar0 > Close[0] then { ModifyOrder(Ord(cnt,VAL_TICKET),Ord(cnt,VAL_OPENPRICE), OPar0,Ord(cnt,VAL_TAKEPROFIT),Red); Exit; }; }; }; If Ord(cnt,VAL_TYPE)>OP_SELL then { If Ord(cnt,VAL_TYPE)=OP_BUYSTOP then { If FPar0>Close[0] then { DeleteOrder(Ord(cnt,VAL_TICKET),Red); Exit; }; If Ord(cnt,VAL_OPENPRICE)>OPar0 and LastTradeTime < Time[0] then { ModifyOrder(Ord(cnt,VAL_TICKET),OPar0, OPar0-SL*Point,Ord(cnt,VAL_TAKEPROFIT),Red); Exit; }; If Bid-Ord(cnt,VAL_STOPLOSS)>SL*Point then { ModifyOrder(Ord(cnt,VAL_TICKET),OPar0, OPar0-SL*Point,Ord(cnt,VAL_TAKEPROFIT),Red); Exit; }; }; If Ord(cnt,VAL_TYPE)=OP_SELLSTOP then ( If FPar0SL*Point then { ModifyOrder(Ord(cnt,VAL_TICKET),OPar0, OPar0+SL*Point,Ord(cnt,VAL_TAKEPROFIT),Red); Exit; }; }; }; end;