/*[[ Name := Your_Choice_Hourly_Breakout_v3e Author := Copyright © 2005, David W Honeywell Link := DavidHon@msn.com Lots := 1.00 Stop Loss := 0 Take Profit := 0 Trailing Stop := 0 ]]*/ //- This version will operate on multiple currency pairs //- Only one(1) trade session per day //- Pip buffer of currency pair spread plus DistFromHL +/- of PeriodsLookback HH/LL If TimeYear(Time)<2005 Then Exit; Variables: cnt(0), opentrades(0), MaxProfit(0), MaxLoss(0), TradeHour(0), LessThanMinute(0), PeriodsLookback(0), DistFromHL(0), CnclPndngIfActvTrd(0), DeleteOrderAfterMnts(0), DltAftr_Mnts(0), AdjustToBreakeven(0), Adj2B.E.Aftr_Pips(0), AtrTrailing(0), AtrPeriods(0), TrailAt_TimesATR(0), StandardTrailAmt(0), spread(0), buyStop(0), sellStop(0), b(0), s(0), buyorder(0), sellorder(0), closebuyorder(0), closesellorder(0); //- Check for open trades and pending orders per symbol ---------------------------------------------------- opentrades=0; buyorder=0; sellorder=0; For cnt=1 To TotalTrades { If (OrderValue(cnt,VAL_SYMBOL)==Symbol) Then { opentrades++; }; }; For cnt=1 To TotalTrades { If ((OrderValue(cnt,VAL_SYMBOL)==Symbol) and (OrderValue(cnt,VAL_TYPE)==OP_BUYSTOP)) Then { buyorder++; }; }; For cnt=1 To TotalTrades { If ((OrderValue(cnt,VAL_SYMBOL)==Symbol) and (OrderValue(cnt,VAL_TYPE)==OP_SELLSTOP)) Then { sellorder++; }; }; If IsIndirect(Symbol) Then Exit; //- Set Variable Values ------------------------------------------------------------------------------------ /* Adjust These Values In The Switch Symbol Section Located Below ------------------------------------------------------------------------------------------------------------ MaxProfit take profit pips MaxLoss stop loss pips ------------------------------------------------------------------------------------------------------------ TradeHour The Chart Hour You Want The Orders To Be Set LessThanMinute Orders are set during these minutes-1 ------------------------------------------------------------------------------------------------------------ PeriodsLookback Chart Periods back to monitor HH/LL DistFromHL Order placement pip buffer ------------------------------------------------------------------------------------------------------------ CnclPndngIfActvTrd Set this to 1 if you want pending order cancelled after 1 pending becomes active ------------------------------------------------------------------------------------------------------------ DeleteOrderAfterMnts Set this to 1 if you want the orders deleted using DltAftr_Mnts Set to 0 if you do Not want to delete orders after (n) minutes (DltAftr_Mnts) DltAftr_Mnts Delete Pending Orders After This Many Minutes ------------------------------------------------------------------------------------------------------------ AdjustToBreakeven Set this to 1 if you want to adjust stop to breakeven after (n) pips profit Set to 0 if you do Not want to adjust stop to breakeven after (n) pips profit Adj2B.E.Aftr_Pips Adjust StopLoss to breakeven after this many pips profit ------------------------------------------------------------------------------------------------------------ AtrTrailing Set this to 1 if you want to use the ATR TrailingStop Set to 0 if you do not want to use the ATR TrailingStop When Set to 0 , the TrailingStop will Default to a regular TrailingStop AtrPeriods Atr Periods to calculate the ATR TrailingStop TrailAt_TimesATR Multiple of the ATR reading to calculate the final TrailingStop amount StandardTrailAmt Set this as you would for a normal TrailingStop ------------------------------------------------------------------------------------------------------------ */ ///////////////////////////////////////////////////// // Set Each Pairs Settings // Whatever You Like For That Pair ///////////////////////////////////////////////////// Switch Symbol { Case "USDCHF": MaxProfit=666; MaxLoss=120; TradeHour=8; LessThanMinute=5; PeriodsLookback=5; DistFromHL=5; CnclPndngIfActvTrd=0; DeleteOrderAfterMnts=1; DltAftr_Mnts=300; AdjustToBreakeven=1; Adj2B.E.Aftr_Pips=27; AtrTrailing=0; AtrPeriods=2; TrailAt_TimesATR=1.5; StandardTrailAmt=55; Break; Case "GBPUSD": MaxProfit=110; MaxLoss=100; TradeHour=8; LessThanMinute=5; PeriodsLookback=13; DistFromHL=5; CnclPndngIfActvTrd=1; DeleteOrderAfterMnts=1; DltAftr_Mnts=1430; AdjustToBreakeven=1; Adj2B.E.Aftr_Pips=30; AtrTrailing=1; AtrPeriods=2; TrailAt_TimesATR=1.5; StandardTrailAmt=55; Break; Case "USDJPY": MaxProfit=0; MaxLoss=0; TradeHour=0; LessThanMinute=0; PeriodsLookback=0; DistFromHL=0; CnclPndngIfActvTrd=0; DeleteOrderAfterMnts=0; DltAftr_Mnts=0; AdjustToBreakeven=0; Adj2B.E.Aftr_Pips=0; AtrTrailing=0; AtrPeriods=0; TrailAt_TimesATR=0; StandardTrailAmt=0; Break; Case "EURUSD": MaxProfit=70; MaxLoss=100; TradeHour=8; LessThanMinute=5; PeriodsLookback=13; DistFromHL=5; CnclPndngIfActvTrd=1; DeleteOrderAfterMnts=1; DltAftr_Mnts=1430; AdjustToBreakeven=1; Adj2B.E.Aftr_Pips=17; AtrTrailing=1; AtrPeriods=2; TrailAt_TimesATR=1.5; StandardTrailAmt=45; Break; Case "AUDUSD": MaxProfit=0; MaxLoss=0; TradeHour=0; LessThanMinute=0; PeriodsLookback=0; DistFromHL=0; CnclPndngIfActvTrd=0; DeleteOrderAfterMnts=0; DltAftr_Mnts=0; AdjustToBreakeven=0; Adj2B.E.Aftr_Pips=0; AtrTrailing=0; AtrPeriods=0; TrailAt_TimesATR=0; StandardTrailAmt=0; Break; Case "USDCAD": MaxProfit=0; MaxLoss=0; TradeHour=0; LessThanMinute=0; PeriodsLookback=0; DistFromHL=0; CnclPndngIfActvTrd=0; DeleteOrderAfterMnts=0; DltAftr_Mnts=0; AdjustToBreakeven=0; Adj2B.E.Aftr_Pips=0; AtrTrailing=0; AtrPeriods=0; TrailAt_TimesATR=0; StandardTrailAmt=0; Break; Case "EURGBP": MaxProfit=0; MaxLoss=0; TradeHour=0; LessThanMinute=0; PeriodsLookback=0; DistFromHL=0; CnclPndngIfActvTrd=0; DeleteOrderAfterMnts=0; DltAftr_Mnts=0; AdjustToBreakeven=0; Adj2B.E.Aftr_Pips=0; AtrTrailing=0; AtrPeriods=0; TrailAt_TimesATR=0; StandardTrailAmt=0; Break; Case "EURCHF": MaxProfit=0; MaxLoss=0; TradeHour=0; LessThanMinute=0; PeriodsLookback=0; DistFromHL=0; CnclPndngIfActvTrd=0; DeleteOrderAfterMnts=0; DltAftr_Mnts=0; AdjustToBreakeven=0; Adj2B.E.Aftr_Pips=0; AtrTrailing=0; AtrPeriods=0; TrailAt_TimesATR=0; StandardTrailAmt=0; Break; Case "EURJPY": MaxProfit=0; MaxLoss=0; TradeHour=0; LessThanMinute=0; PeriodsLookback=0; DistFromHL=0; CnclPndngIfActvTrd=0; DeleteOrderAfterMnts=0; DltAftr_Mnts=0; AdjustToBreakeven=0; Adj2B.E.Aftr_Pips=0; AtrTrailing=0; AtrPeriods=0; TrailAt_TimesATR=0; StandardTrailAmt=0; Break; Case "GBPJPY": MaxProfit=0; MaxLoss=0; TradeHour=0; LessThanMinute=0; PeriodsLookback=0; DistFromHL=0; CnclPndngIfActvTrd=0; DeleteOrderAfterMnts=0; DltAftr_Mnts=0; AdjustToBreakeven=0; Adj2B.E.Aftr_Pips=0; AtrTrailing=0; AtrPeriods=0; TrailAt_TimesATR=0; StandardTrailAmt=0; Break; Case "NZDUSD": MaxProfit=0; MaxLoss=0; TradeHour=0; LessThanMinute=0; PeriodsLookback=0; DistFromHL=0; CnclPndngIfActvTrd=0; DeleteOrderAfterMnts=0; DltAftr_Mnts=0; AdjustToBreakeven=0; Adj2B.E.Aftr_Pips=0; AtrTrailing=0; AtrPeriods=0; TrailAt_TimesATR=0; StandardTrailAmt=0; Break; Case "GBPCHF": MaxProfit=0; MaxLoss=0; TradeHour=0; LessThanMinute=0; PeriodsLookback=0; DistFromHL=0; CnclPndngIfActvTrd=0; DeleteOrderAfterMnts=0; DltAftr_Mnts=0; AdjustToBreakeven=0; Adj2B.E.Aftr_Pips=0; AtrTrailing=0; AtrPeriods=0; TrailAt_TimesATR=0; StandardTrailAmt=0; Break; Case "CHFJPY": MaxProfit=0; MaxLoss=0; TradeHour=0; LessThanMinute=0; PeriodsLookback=0; DistFromHL=0; CnclPndngIfActvTrd=0; DeleteOrderAfterMnts=0; DltAftr_Mnts=0; AdjustToBreakeven=0; Adj2B.E.Aftr_Pips=0; AtrTrailing=0; AtrPeriods=0; TrailAt_TimesATR=0; StandardTrailAmt=0; Break; Case "AUDJPY": MaxProfit=0; MaxLoss=0; TradeHour=0; LessThanMinute=0; PeriodsLookback=0; DistFromHL=0; CnclPndngIfActvTrd=0; DeleteOrderAfterMnts=0; DltAftr_Mnts=0; AdjustToBreakeven=0; Adj2B.E.Aftr_Pips=0; AtrTrailing=0; AtrPeriods=0; TrailAt_TimesATR=0; StandardTrailAmt=0; Break; Case "EURCAD": MaxProfit=0; MaxLoss=0; TradeHour=0; LessThanMinute=0; PeriodsLookback=0; DistFromHL=0; CnclPndngIfActvTrd=0; DeleteOrderAfterMnts=0; DltAftr_Mnts=0; AdjustToBreakeven=0; Adj2B.E.Aftr_Pips=0; AtrTrailing=0; AtrPeriods=0; TrailAt_TimesATR=0; StandardTrailAmt=0; Break; Case "EURAUD": MaxProfit=0; MaxLoss=0; TradeHour=0; LessThanMinute=0; PeriodsLookback=0; DistFromHL=0; CnclPndngIfActvTrd=0; DeleteOrderAfterMnts=0; DltAftr_Mnts=0; AdjustToBreakeven=0; Adj2B.E.Aftr_Pips=0; AtrTrailing=0; AtrPeriods=0; TrailAt_TimesATR=0; StandardTrailAmt=0; Break; Case "AUDCAD": MaxProfit=0; MaxLoss=0; TradeHour=0; LessThanMinute=0; PeriodsLookback=0; DistFromHL=0; CnclPndngIfActvTrd=0; DeleteOrderAfterMnts=0; DltAftr_Mnts=0; AdjustToBreakeven=0; Adj2B.E.Aftr_Pips=0; AtrTrailing=0; AtrPeriods=0; TrailAt_TimesATR=0; StandardTrailAmt=0; Break; Case "AUDNZD": MaxProfit=0; MaxLoss=0; TradeHour=0; LessThanMinute=0; PeriodsLookback=0; DistFromHL=0; CnclPndngIfActvTrd=0; DeleteOrderAfterMnts=0; DltAftr_Mnts=0; AdjustToBreakeven=0; Adj2B.E.Aftr_Pips=0; AtrTrailing=0; AtrPeriods=0; TrailAt_TimesATR=0; StandardTrailAmt=0; Break; Case "NZDJPY": MaxProfit=0; MaxLoss=0; TradeHour=0; LessThanMinute=0; PeriodsLookback=0; DistFromHL=0; CnclPndngIfActvTrd=0; DeleteOrderAfterMnts=0; DltAftr_Mnts=0; AdjustToBreakeven=0; Adj2B.E.Aftr_Pips=0; AtrTrailing=0; AtrPeriods=0; TrailAt_TimesATR=0; StandardTrailAmt=0; Break; Default: Exit; }; spread = (Ask-Bid); // currency spread is added as another pip buffer to HH/LL buystop = (High[Highest(MODE_HIGH,PeriodsLookback,PeriodsLookback)]+(DistFromHL*point))+spread; sellstop = (Low[Lowest(MODE_LOW,PeriodsLookback,PeriodsLookback)]-(DistFromHL*point))-spread; b = (1 * Point) + (iATR(AtrPeriods,0) * TrailAt_TimesATR); s = (1 * Point) + (iATR(AtrPeriods,0) * TrailAt_TimesATR); //- Place Comments on Chart Window ------------------------------------------------------------------------- Comment("\n"," Chart Hour: = ",Hour," , TradeHour: = ",TradeHour," , Opentrades: = ",Opentrades, "\n"," Buy Stops: = ",buyorder," , Sell Stops: = ",sellorder, "\n"," MaxProfit: = ",MaxProfit," , MaxLoss: = ",MaxLoss, "\n"," PeriodsLookback: = ",PeriodsLookback," , DistFromHL: = ",DistFromHL, "\n"," Highest High of PeriodsLookback: @ ",buystop, " , Lowest Low of PeriodsLookback: @ ",sellstop, "\n"," CnclPndngIfActvTrd: = ",CnclPndngIfActvTrd, " , DeleteOrderAfterMnts: = ",DeleteOrderAfterMnts, "\n"," DltAftr_Mnts: = ",DltAftr_Mnts," , Adj2B.E.Aftr_Pips: = ",Adj2B.E.Aftr_Pips, "\n"," AtrTrailing: = ",ATrTrailing, "\n"," AtrPeriods: = ",AtrPeriods," , TrailAt_TimesATR: = ",TrailAt_TimesATR, "\n"," Atr TrailingStop: = ",s," , StandardTrailAmt: = ",StandardTrailAmt); //- Set BuyStop and SellStop ------------------------------------------------------------------------------- If ((Hour==TradeHour) and (Minute(DltAftr_Mnts*60) Then { DeleteOrder(OrderValue(cnt,VAL_TICKET),LightGoldenrod); Exit; }; }; }; //- Adjust StopLoss to breakeven if in profit more than Adj2B.E.Aftr_Pips ---------------------------------- For cnt = 1 To TotalTrades { If ((Ord(cnt,VAL_SYMBOL)==Symbol) and (AdjustToBreakeven==1) and (Ord(cnt,VAL_TYPE)==OP_BUY)) Then { If (Ord(cnt,VAL_STOPLOSS)==(Ord(cnt,VAL_OPENPRICE)-MaxLoss*Point)) and (Ord(cnt,VAL_CLOSEPRICE)-(Ord(cnt,VAL_OPENPRICE))>Adj2B.E.Aftr_Pips*Point) Then { ModifyOrder(Ord(cnt,VAL_TICKET),Ord(cnt,VAL_OPENPRICE), Ord(cnt,VAL_CLOSEPRICE)-(Adj2B.E.Aftr_Pips*Point),Ord(cnt,VAL_TAKEPROFIT),Cyan); Exit; }; }; If ((Ord(cnt,VAL_SYMBOL)==Symbol) and (AdjustToBreakeven==1) and (Ord(cnt,VAL_TYPE)==OP_SELL)) Then { If (Ord(cnt,VAL_STOPLOSS)==(Ord(cnt,VAL_OPENPRICE)+MaxLoss*Point)) and (Ord(cnt,VAL_OPENPRICE)-Ord(cnt,VAL_CLOSEPRICE)>Adj2B.E.Aftr_Pips*Point) Then { ModifyOrder(Ord(cnt,VAL_TICKET),Ord(cnt,VAL_OPENPRICE), Ord(cnt,VAL_CLOSEPRICE)+(Adj2B.E.Aftr_Pips*Point),Ord(cnt,VAL_TAKEPROFIT),Fuchsia); Exit; }; }; }; //- ATR TrailingStop --------------------------------------------------------------------------------------- For cnt = 1 To TotalTrades { If ((Ord(cnt,VAL_SYMBOL)==Symbol) and (AtrTrailing==1) and (Ord(cnt,VAL_TYPE)==OP_BUY)) Then { If ((Ord(cnt,VAL_CLOSEPRICE)-OrderValue(cnt,VAL_OPENPRICE))>b and (Ord(cnt,VAL_CLOSEPRICE)-b)>Ord(cnt,VAL_STOPLOSS)) or (Ord(cnt,VAL_STOPLOSS)==0) Then { ModifyOrder(OrderValue(cnt,VAL_TICKET),OrderValue(cnt,VAL_OPENPRICE), (Ord(cnt,VAL_CLOSEPRICE)-b),OrderValue(cnt,VAL_TAKEPROFIT),White); Exit; }; }; If ((Ord(cnt,VAL_SYMBOL)==Symbol) and (AtrTrailing==1) and (Ord(cnt,VAL_TYPE)==OP_SELL)) Then { If ((OrderValue(cnt,VAL_OPENPRICE)-Ord(cnt,VAL_CLOSEPRICE))>s and (Ord(cnt,VAL_CLOSEPRICE)+s)StandardTrailAmt*Point and (Ord(cnt,VAL_CLOSEPRICE)-StandardTrailAmt*Point)>Ord(cnt,VAL_STOPLOSS)) or (Ord(cnt,VAL_STOPLOSS)==0) Then { ModifyOrder(OrderValue(cnt,VAL_TICKET),OrderValue(cnt,VAL_OPENPRICE), (Ord(cnt,VAL_CLOSEPRICE)-StandardTrailAmt*Point),OrderValue(cnt,VAL_TAKEPROFIT),White); Exit; }; }; If ((Ord(cnt,VAL_SYMBOL)==Symbol) and (AtrTrailing==0) and (Ord(cnt,VAL_TYPE)==OP_SELL)) Then { If ((OrderValue(cnt,VAL_OPENPRICE)-Ord(cnt,VAL_CLOSEPRICE))>StandardTrailAmt*Point and (Ord(cnt,VAL_CLOSEPRICE)+StandardTrailAmt*Point)