/*[[ Name := Breakout Author := Copyright © 2005, Milan Stop Loss := 50 Take Profit := 80 Trailing Stop := 0 ]]*/ Define: Start(10); Define: Length(4); Define: EOD(24); Define: Pips(5); Define: BreakEven(30); var: i(0),Ticket(0),LastOrderTime(0),StartTime(0),EODTime(0),Bought(0),Sold(0),Lot(0.1),SL(50),TP(80); var: EntryLong(0),EntryShort(0),SLLong(0),SLShort(0),TPLong(0),TPShort(0); //Settings if !IsTesting then { switch Symbol { case "EURUSD": Start=10; Length=4; EOD=24; Pips=5; SL=50; BreakEven=30; TP=80; case "GBPUSD": Start=10; Length=4; EOD=24; Pips=5; SL=70; BreakEven=40; TP=120; default: Start=9; Length=4; EOD=23; Pips=5; SL=50; BreakEven=30; TP=80; }; } else { SL=StopLoss; TP=TakeProfit; Lot=Lots; } //Count time if Hour>=Start-1 then { StartTime = StrToTime(Year+"."+Month+"."+Day+" "+Start+":00"); if DayOfWeek==6 then EODTime = Min(StrToTime(Year+"."+Month+"."+Day+" 19:55"),StrToTime(Year+"."+Month+"."+Day+" "+EOD+":00")) else EODTime = StartTime+(EOD-Start)*3600-60; } //Set orders if CurTime>= StartTime & CurTime()1 then { //more than 1 buy order if CurTime>LastTradeTime+10 then { if OrderValue(i,VAL_SYMBOL)==Symbol & OrderValue(i,VAL_TYPE)==OP_BUY then { CloseOrder(OrderValue(i,VAL_TICKET),OrderValue(i,VAL_LOTS),Bid,3,Red); exit; } if OrderValue(i,VAL_SYMBOL)==Symbol & OrderValue(i,VAL_TYPE)==OP_BUYSTOP then { DeleteOrder(OrderValue(i,VAL_TICKET),Red); exit; } } } if OrderValue(i,VAL_SYMBOL)==Symbol & (OrderValue(i,VAL_TYPE)==OP_SELLSTOP | OrderValue(i,VAL_TYPE)==OP_SELL) then Sold++; if Sold>1 then { //more than 1 sell order if CurTime>LastTradeTime+10 then { if OrderValue(i,VAL_SYMBOL)==Symbol & OrderValue(i,VAL_TYPE)==OP_SELL then { CloseOrder(OrderValue(i,VAL_TICKET),OrderValue(i,VAL_LOTS),Ask,3,Red); exit; } if OrderValue(i,VAL_SYMBOL)==Symbol & OrderValue(i,VAL_TYPE)==OP_SELLSTOP then { DeleteOrder(OrderValue(i,VAL_TICKET),Red); exit; } } } } if Bought==0 then { if CurTime>LastTradeTime+10 then { SetOrder(OP_BUYSTOP,Lot,EntryLong,3,SLLong,TPLong,Green); exit; } } if Sold==0 then { if CurTime>LastTradeTime+10 then { SetOrder(OP_SELLSTOP,Lot,EntryShort,3,SLShort,TPShort,Green); exit; } } } //Manage opened orders for i=1 to TotalTrades { if CurTime>LastTradeTime+10 then { //close opened positions at EOD if CurTime>=EODTime then { if OrderValue(i,VAL_SYMBOL)==Symbol & OrderValue(i,VAL_TYPE)==OP_BUY then { CloseOrder(OrderValue(i,VAL_TICKET),OrderValue(i,VAL_LOTS),Bid,3,Red); exit; } if OrderValue(i,VAL_SYMBOL)==Symbol & OrderValue(i,VAL_TYPE)==OP_SELL then { CloseOrder(OrderValue(i,VAL_TICKET),OrderValue(i,VAL_LOTS),Ask,3,Red); exit; } if OrderValue(i,VAL_SYMBOL)==Symbol & OrderValue(i,VAL_TYPE)==OP_BUYSTOP then { DeleteOrder(OrderValue(i,VAL_TICKET),Red); exit; } if OrderValue(i,VAL_SYMBOL)==Symbol & OrderValue(i,VAL_TYPE)==OP_SELLSTOP then { DeleteOrder(OrderValue(i,VAL_TICKET),Red); exit; } } //move at BE if profit>BE else { if OrderValue(i,VAL_SYMBOL)==Symbol & OrderValue(i,VAL_TYPE)==OP_BUY then { if High[0]-OrderValue(i,VAL_OPENPRICE)>=BreakEven*Point & OrderValue(i,VAL_STOPLOSS)!=OrderValue(i,VAL_OPENPRICE) then{ ModifyOrder(OrderValue(i,VAL_TICKET),OrderValue(i,VAL_OPENPRICE),OrderValue(i,VAL_OPENPRICE),OrderValue(i,VAL_TAKEPROFIT),Green); exit; } } if OrderValue(i,VAL_SYMBOL)==Symbol & OrderValue(i,VAL_TYPE)==OP_SELL then { if OrderValue(i,VAL_OPENPRICE)-Low[0]>=BreakEven*Point & OrderValue(i,VAL_STOPLOSS)!=OrderValue(i,VAL_OPENPRICE) then { ModifyOrder(OrderValue(i,VAL_TICKET),OrderValue(i,VAL_OPENPRICE),OrderValue(i,VAL_OPENPRICE),OrderValue(i,VAL_TAKEPROFIT),Green); exit; } } } } }