/*[[ Name := Your_Choice_Hourly_Breakout3 Author := Copyright © 2005, David W Honeywell Link := DavidHon@msn.com Lots := 1.00 Stop Loss := 20 Take Profit := 250 Trailing Stop := 0 ]]*/ If TimeYear(Time)<2005 then exit; Defines: TradeHour(0), DistFromHL(5), Chart(60), HoursLookback(1), DltAftr_Mnts(120), Adj2B.E.Aftr_Pips(10), AtrPeriods(2), TrailAt_TimesATR(1.5); Variables: cnt(0), reset(0), BuyStop(0), buytime(0), SellStop(0), selltime(0), closesellorder(0), closebuyorder(0), b(0), s(0), i(0); Buystop = High[Highest(MODE_HIGH,HoursLookback,HoursLookback)]+DistFromHL*point; Sellstop = Low[Lowest(MODE_LOW,HoursLookback,HoursLookback)]-DistFromHL*point; b = (1 * Point) + (iATR(AtrPeriods,0) * TrailAt_TimesATR); s = (1 * Point) + (iATR(AtrPeriods,0) * TrailAt_TimesATR); if period != Chart then { Alert("This advisor only works on the ",chart," minute chart"); exit; }; closesellorder=0; closebuyorder=0; If TotalTrades==2 then { for cnt=1 to TotalTrades { if Ord(cnt,VAL_TYPE)==OP_BUY then { closesellorder=1; }; if Ord(cnt,VAL_TYPE)==OP_SELL then { closebuyorder=1; }; }; }; If TotalTrades>=1 then { for cnt=1 to TotalTrades { if closesellorder==1 and Ord(cnt,VAL_TYPE)==OP_SELLSTOP then { DeleteOrder(OrderValue(cnt,VAL_TICKET),LightGoldenrod); }; if closebuyorder==1 and Ord(cnt,VAL_TYPE)==OP_BUYSTOP then { DeleteOrder(OrderValue(cnt,VAL_TICKET),LightGoldenrod); }; }; }; If TotalTrades>=1 Then { for cnt = 1 to TotalTrades { If Ord(cnt,VAL_TYPE)==OP_BUYSTOP or Ord(cnt,VAL_TYPE)==OP_SELLSTOP then // this is a waiting order! { // check how long it exists in the trading terminal If (CurTime-OrderValue(cnt,VAL_OPENTIME))>(DltAftr_Mnts*60) then { DeleteOrder(OrderValue(cnt,VAL_TICKET),LightGoldenrod); Exit; }; }; }; }; If Hour!=0 then { reset=0; }; If Hour==0 and TradeHour+1==24 then { reset=1; }; if Hour==TradeHour+1 or reset==1 then { buytime=0; selltime=0; }; if Hour==TradeHour and Minute<5 then { if buytime!=T[0] then //no open trades in any currency { SetOrder(OP_BUYSTOP,Lots,buystop,3,(buystop)-StopLoss*Point,(buyStop)+TakeProfit*Point,Cyan); buytime=T[0]; exit; }; if selltime!=T[0] then { SetOrder(OP_SELLSTOP,Lots,sellStop,3,(sellStop)+StopLoss*Point,(sellStop)-TakeProfit*Point,Fuchsia); selltime=T[0]; exit; }; }; for i = 1 to TotalTrades { If Ord(i,VAL_TYPE)=OP_BUY and Ord(i,VAL_SYMBOL)=Symbol Then { If Ord(i,VAL_STOPLOSS)=Ord(i,VAL_OPENPRICE)-StopLoss*Point and Bid-Ord(i,VAL_OPENPRICE)>Adj2B.E.Aftr_Pips*Point then { ModifyOrder(Ord(i,VAL_TICKET), Ord(i,VAL_OPENPRICE), Bid-Adj2B.E.Aftr_Pips*Point, Ord(i,VAL_TAKEPROFIT), Cyan); } else { if Bid - OrderValue(i,VAL_OPENPRICE) > b and Bid-b > Ord(i,VAL_STOPLOSS) then { ModifyOrder(OrderValue(i,VAL_TICKET), OrderValue(i,VAL_OPENPRICE), Bid - b, OrderValue(i,VAL_TAKEPROFIT), Cyan); Exit; }; }; }; If Ord(i,VAL_TYPE)=OP_SELL and Ord(i,VAL_SYMBOL)=Symbol Then { If Ord(i,VAL_STOPLOSS)=Ord(i,VAL_OPENPRICE)+StopLoss*Point and Ord(i,VAL_OPENPRICE)-Ask>Adj2B.E.Aftr_Pips*Point then { ModifyOrder(Ord(i,VAL_TICKET), Ord(i,VAL_OPENPRICE), Ask+Adj2B.E.Aftr_Pips*Point, Ord(i,VAL_TAKEPROFIT), Fuchsia); } else { if OrderValue(i,VAL_OPENPRICE) - Ask > s and Ask+s < Ord(i,VAL_STOPLOSS) then { ModifyOrder(OrderValue(i,VAL_TICKET), OrderValue(i,VAL_OPENPRICE), Ask + s, OrderValue(i,VAL_TAKEPROFIT), Fuchsia); Exit; }; }; }; }; Comment("\n",//" TradeHour: ",TradeHour," TradeHour + 1 ",TradeHour+1, //"\n", //"\n"," reset: ",reset, //"\n", "\n"," buystop: @ ",buystop," sellstop: @ ",sellstop, "\n", "\n"," TrailingStop: = ",s);