extern double Lots = 0.1; extern int TakeProfit = 10; extern int StopLoss = 0; extern bool ConstantStop = FALSE; extern int Step1 = 20; extern int TP1 = 23; extern int Step2 = 20; extern int TP2 = 23; extern int Step3 = 20; extern int TP3 = 25; extern int Step4 = 20; extern int TP4 = 27; extern int Step5 = 20; extern int TP5 = 30; extern int Step6 = 20; extern int TP6 = 35; extern int Step7 = 20; extern int TP7 = 35; extern int Step8 = 20; extern int TP8 = 40; extern int Step9 = 20; extern int TP9 = 40; extern int Step10 = 20; extern int TP10 = 40; extern int StartHour = 0; extern int EndHour = 24; extern int Magic = 111; extern bool CloseAllNow = FALSE; bool gi_192 = FALSE; extern int BrokerMode = 1; extern bool MM_advisor = FALSE; extern int FridayCloseTime = 13; int g_slippage_208 = 3; extern int gi_212 = 1; int start() { int li_0; int l_ticket_4; double l_price_8; double l_price_16; double l_price_24; double l_lots_32; double l_pips_40; double l_pips_48; bool l_bool_56; string ls_64; int l_str2time_72; int l_ticket_80; int l_ticket_84; int l_ticket_88; int l_ticket_92; int li_unused_96; int li_unused_100; double l_ord_lots_104; double l_ord_lots_112; double l_ord_open_price_120; double l_ord_open_price_128; double l_ord_takeprofit_136; double l_ord_takeprofit_144; double ld_unused_152; double ld_unused_160; double l_ord_lots_168; double l_ord_lots_176; double ld_184; double ld_192; double l_ord_lots_200; double l_ord_lots_208; string ls_216; string ls_224; string ls_232; string ls_240; string ls_248; string ls_256; string ls_264; string ls_272; string ls_280; int li_60 = 0; if (Check() != 0) { ls_64 = "2008.18.10"; l_str2time_72 = StrToTime(ls_64); if (CloseAllNow == TRUE) { for (int l_ord_total_76 = OrdersTotal(); l_ord_total_76 >= 0; l_ord_total_76--) { OrderSelect(l_ord_total_76, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() == Symbol() || BrokerMode == 3 && OrderMagicNumber() == Magic) { if (OrderType() == OP_BUY || OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 5, CLR_NONE); if (OrderType() != OP_BUY && OrderType() != OP_SELL) OrderDelete(OrderTicket()); } } return (0); } l_ticket_80 = 0; l_ticket_84 = 0; l_ticket_88 = 0; l_ticket_92 = 0; li_unused_96 = 0; li_unused_100 = 0; l_ord_lots_104 = 0; l_ord_lots_112 = 0; l_ord_open_price_120 = 0; l_ord_open_price_128 = 0; l_ord_takeprofit_136 = 0; l_ord_takeprofit_144 = 0; ld_unused_152 = 0; ld_unused_160 = 0; l_ord_lots_168 = 0; l_ord_lots_176 = 0; ld_184 = 0; ld_192 = 0; l_ord_lots_200 = 0; l_ord_lots_208 = 0; ls_216 = ""; ls_224 = ""; ls_232 = ""; ls_240 = ""; ls_248 = ""; ls_256 = ""; ls_264 = ""; ls_272 = ""; ls_280 = ""; if (MM_advisor == TRUE) li_0 = 100; else li_0 = 1; if (iMACD(NULL, 0, 14, 26, 9, PRICE_CLOSE, MODE_MAIN, 0) > iMACD(NULL, 0, 14, 26, 9, PRICE_CLOSE, MODE_MAIN, 1)) li_60 = 2; if (iMACD(NULL, 0, 14, 26, 9, PRICE_CLOSE, MODE_MAIN, 0) < iMACD(NULL, 0, 14, 26, 9, PRICE_CLOSE, MODE_MAIN, 1)) li_60 = 1; for (int l_pos_288 = 0; l_pos_288 < OrdersTotal(); l_pos_288++) { OrderSelect(l_pos_288, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() == Symbol() || BrokerMode == 3 && OrderMagicNumber() == Magic) { if (OrderType() == OP_BUY && l_ticket_80 < OrderTicket()) { l_ord_lots_104 = OrderLots(); l_ord_open_price_120 = OrderOpenPrice(); l_ticket_80 = OrderTicket(); l_ord_takeprofit_144 = OrderTakeProfit(); } if (OrderType() == OP_BUY) { if (OrderLots() < l_ord_lots_200 || l_ord_lots_200 == 0.0) { l_ord_lots_200 = OrderLots(); ld_184 = OrderOpenPrice() - StopLoss * Point; } } if (OrderType() == OP_SELL && l_ticket_84 < OrderTicket()) { l_ord_lots_112 = OrderLots(); l_ord_open_price_128 = OrderOpenPrice(); l_ticket_84 = OrderTicket(); l_ord_takeprofit_136 = OrderTakeProfit(); } if (OrderType() == OP_SELL) { if (OrderLots() < l_ord_lots_208 || l_ord_lots_208 == 0.0) { l_ord_lots_208 = OrderLots(); ld_192 = OrderOpenPrice() + StopLoss * Point; } } if (OrderType() == OP_BUYLIMIT) { l_ticket_88 = OrderTicket(); l_ord_lots_168 = OrderLots(); } if (OrderType() == OP_SELLLIMIT) { l_ticket_92 = OrderTicket(); l_ord_lots_176 = OrderLots(); } } } if (l_ticket_80 == 0 && l_ticket_88 != 0) OrderDelete(l_ticket_88); if (l_ticket_80 == 0 && l_ticket_88 == 0) { l_price_16 = Ask - StopLoss * Point; if (StopLoss <= 0) l_price_16 = 0; l_price_24 = Ask + TakeProfit * Point; if ((StartHour < EndHour && TimeHour(TimeCurrent()) >= StartHour && TimeHour(TimeCurrent()) < EndHour) || (StartHour > EndHour && TimeHour(TimeCurrent()) >= StartHour || TimeHour(TimeCurrent()) < EndHour)) { if (DayOfWeek() != 5 || Hour() < FridayCloseTime) { if ((li_60 == 2 && l_ticket_84 == 0) || gi_192 == FALSE) { if (AccountFreeMarginCheck(Symbol(), OP_BUY, Lots * li_0) >= 0.0) { if (BrokerMode != 2 && BrokerMode != 3) OrderSend(Symbol(), OP_BUY, Lots, Ask, g_slippage_208, l_price_16, l_price_24, "Magic = " + Magic, Magic, 0, CLR_NONE); else { l_ticket_4 = OrderSend(Symbol(), OP_BUY, Lots, Ask, g_slippage_208, 0, 0, "Magic = " + Magic, Magic, 0, CLR_NONE); l_bool_56 = OrderModify(l_ticket_4, OrderOpenPrice(), l_price_16, l_price_24, 0, CLR_NONE); if (l_bool_56 == FALSE) Print("Error modifying BUY order : ", GetLastError()); } } else { if (AccountFreeMarginCheck(Symbol(), OP_BUY, Lots) >= 0.0) ls_280 = "Recommended to Decrease Lots used or Increase the Balance!"; else ls_232 = "BUY, " + DoubleToStr(Lots, 2) + " lots. "; } } } } } if (l_ticket_84 == 0 && l_ticket_92 != 0) OrderDelete(l_ticket_92); if (l_ticket_84 == 0 && l_ticket_92 == 0) { l_price_16 = Bid + StopLoss * Point; if (StopLoss <= 0) l_price_16 = 0; l_price_24 = Bid - TakeProfit * Point; if ((StartHour < EndHour && TimeHour(TimeCurrent()) >= StartHour && TimeHour(TimeCurrent()) < EndHour) || (StartHour > EndHour && TimeHour(TimeCurrent()) >= StartHour || TimeHour(TimeCurrent()) < EndHour)) { if (DayOfWeek() != 5 || Hour() < FridayCloseTime) { if ((li_60 == 1 && l_ticket_80 == 0) || gi_192 == FALSE) { if (AccountFreeMarginCheck(Symbol(), OP_SELL, Lots * li_0) >= 0.0) { if (BrokerMode != 2 && BrokerMode != 3) OrderSend(Symbol(), OP_SELL, Lots, Bid, g_slippage_208, l_price_16, l_price_24, "Magic = " + Magic, Magic, 0, CLR_NONE); else { l_ticket_4 = OrderSend(Symbol(), OP_SELL, Lots, Bid, g_slippage_208, 0, 0, "Magic = " + Magic, Magic, 0, CLR_NONE); l_bool_56 = OrderModify(l_ticket_4, OrderOpenPrice(), l_price_16, l_price_24, 0, CLR_NONE); if (l_bool_56 == FALSE) Print("Error modifying SELL order : ", GetLastError()); } } else { if (AccountFreeMarginCheck(Symbol(), OP_SELL, Lots) >= 0.0) ls_280 = "Recommended to Decrease Lots used or Increase the Balance!"; else ls_240 = "SELL, " + DoubleToStr(Lots, 2) + " lots. "; } } } } } if (l_ticket_80 != 0 && l_ticket_88 != 0) { if (AccountFreeMarginCheck(Symbol(), OP_BUY, l_ord_lots_168) < 0.0) { ls_264 = "BUYLIMIT, " + DoubleToStr(1.5 * l_ord_lots_168, gi_212) + " lots. "; OrderDelete(l_ticket_88); } } if (l_ticket_80 != 0 && l_ticket_88 == 0) { if (AccountFreeMarginCheck(Symbol(), OP_BUY, 1.5 * l_ord_lots_104) >= 0.0) { l_pips_48 = FinalStep(NormalizeDouble(l_ord_lots_104 / l_ord_lots_200, 0)); l_pips_40 = FinalTP(NormalizeDouble(l_ord_lots_104 / l_ord_lots_200, 0)); l_price_8 = l_ord_open_price_120 - l_pips_48 * Point; if (ConstantStop == FALSE) l_price_16 = l_price_8 - StopLoss * Point; else l_price_16 = ld_184; if (StopLoss <= 0) l_price_16 = 0; l_price_24 = l_price_8 + l_pips_40 * Point; l_lots_32 = NormalizeDouble(1.5 * l_ord_lots_104, gi_212); OrderSend(Symbol(), OP_BUYLIMIT, l_lots_32, l_price_8, g_slippage_208, l_price_16, l_price_24, "Magic = " + Magic, Magic, 0, CLR_NONE); } else ls_248 = "BUYLIMIT, " + DoubleToStr(1.5 * l_ord_lots_104, gi_212) + " lots. "; } if (l_ticket_84 != 0 && l_ticket_92 != 0) { if (AccountFreeMarginCheck(Symbol(), OP_SELL, l_ord_lots_176) < 0.0) { ls_272 = "SELLLIMIT, " + DoubleToStr(1.5 * l_ord_lots_176, gi_212) + " lots. "; OrderDelete(l_ticket_92); } } if (l_ticket_84 != 0 && l_ticket_92 == 0) { if (AccountFreeMarginCheck(Symbol(), OP_SELL, 1.5 * l_ord_lots_112) >= 0.0) { l_pips_48 = FinalStep(NormalizeDouble(l_ord_lots_112 / l_ord_lots_208, 0)); l_pips_40 = FinalTP(NormalizeDouble(l_ord_lots_112 / l_ord_lots_208, 0)); l_price_8 = l_ord_open_price_128 + l_pips_48 * Point; if (ConstantStop == FALSE) l_price_16 = l_price_8 + StopLoss * Point; else l_price_16 = ld_192; if (StopLoss <= 0) l_price_16 = 0; l_price_24 = l_price_8 - l_pips_40 * Point; l_lots_32 = NormalizeDouble(1.5 * l_ord_lots_112, gi_212); OrderSend(Symbol(), OP_SELLLIMIT, l_lots_32, l_price_8, g_slippage_208, l_price_16, l_price_24, "Magic = " + Magic, Magic, 0, CLR_NONE); } else ls_256 = "SELLLIMIT, " + DoubleToStr(1.5 * l_ord_lots_112, gi_212) + " lots. "; } for (l_pos_288 = 0; l_pos_288 < OrdersTotal(); l_pos_288++) { OrderSelect(l_pos_288, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() == Symbol() || BrokerMode == 3 && OrderType() == OP_BUY && l_ticket_80 != 0 && OrderMagicNumber() == Magic) { if (ConstantStop == FALSE) l_price_16 = l_ord_open_price_120 - StopLoss * Point; else l_price_16 = ld_184; if (StopLoss <= 0) l_price_16 = 0; if (l_ticket_80 > OrderTicket()) l_price_24 = l_ord_takeprofit_144; else l_price_24 = OrderTakeProfit(); if (l_price_24 != OrderTakeProfit() || l_price_16 != OrderStopLoss()) OrderModify(OrderTicket(), OrderOpenPrice(), l_price_16, l_price_24, 0, CLR_NONE); } if (OrderSymbol() == Symbol() || BrokerMode == 3 && OrderType() == OP_SELL && l_ticket_84 != 0 && OrderMagicNumber() == Magic) { if (ConstantStop == FALSE) l_price_16 = l_ord_open_price_128 + StopLoss * Point; else l_price_16 = ld_192; if (StopLoss <= 0) l_price_16 = 0; if (l_ticket_84 > OrderTicket()) l_price_24 = l_ord_takeprofit_136; else l_price_24 = OrderTakeProfit(); if (l_price_24 != OrderTakeProfit() || l_price_16 != OrderStopLoss()) OrderModify(OrderTicket(), OrderOpenPrice(), l_price_16, l_price_24, 0, CLR_NONE); } } if (ls_232 != "" || ls_240 != "" || ls_248 != "" || ls_256 != "" || ls_264 != "" || ls_272 != "") ls_216 = "Not enough balance to Open Position!"; Comment(ls_224, "\n", ls_216, ls_232, ls_240, ls_248, ls_256, ls_264, ls_272, "\n", ls_280); } return (0); } int FinalStep(double ad_0) { switch (ad_0) { case 1.0: return (Step1); case 2.0: return (Step2); case 3.0: return (Step3); case 4.0: return (Step4); case 5.0: return (Step5); case 6.0: return (Step6); case 7.0: return (Step7); case 8.0: return (Step8); case 9.0: return (Step9); case 10.0: return (Step10); } return (Step10); } int FinalTP(double ad_0) { switch (ad_0) { case 1.0: return (TP1); case 2.0: return (TP2); case 3.0: return (TP3); case 4.0: return (TP4); case 5.0: return (TP5); case 6.0: return (TP6); case 7.0: return (TP7); case 8.0: return (TP8); case 9.0: return (TP9); case 10.0: return (TP10); } return (TP10); } int Check() { int li_0 = 220941; string ls_4 = "http://www.forex-robots-tested.com"; string ls_12 = "4xcb1.5x"; if (IsDemo() == TRUE) return (1); if (AccountNumber() != li_0) { Alert("Account Number: " + AccountNumber() + " is not allowed to use " + ls_12, "\n", "Please contact: " + ls_4); return (0); } return (1); }