#property copyright "Copyright © 2008, FMR, Inc." #property link "http://www.ForexMetaRobot.com" double gd_76 = 200.0; extern int FMRSerialNumber = 0; extern string OrderManagement = "/////////////////////////////////////////////////"; extern int TakeProfit = 0; extern int StopLoss = 0; extern int TrailingStop = 0; extern int TrailingStep = 1; extern int BreakEven = 0; extern string RiskSettings = "/////////////////////////////////////////////////"; extern double Risk = 1.0; extern int NumberOfOrders = 3; extern double FixedLotSize = 1.0; extern int SpreadThreshold = 20; extern int MagicNumber = 0; extern string SpecialConditions = "/////////////////////////////////////////////////"; extern bool PauseButton = FALSE; extern bool TradeOnFriday? = FALSE; int g_acc_number_168; bool gi_172 = TRUE; extern string SetTradingHours = "--Trading Hours--"; extern string sm1 = "Times are GMT"; extern int GMT_Offset = 3; extern bool UseTradingHours = TRUE; bool gi_200 = FALSE; extern string sm3 = "Use Asian Market if trading only 1 period"; extern bool TradeAsianMarket = TRUE; extern int myAsianStart = 2200; extern int myAsianStop = 600; extern bool TradeEuropeanMarket = FALSE; extern int myEurStart = 700; extern int myEurStop = 1200; extern bool TradeNewYorkMarket = FALSE; extern int myNYStart = 1300; extern int myNYStop = 2100; int gi_248; int gi_252; int gi_256; int gi_260; int gi_264; int gi_268; bool gi_276; int gi_280; int gi_284 = 3; int gi_288 = 5; bool gi_292 = FALSE; bool gi_296 = TRUE; string gs_300 = "FMR lightning"; int gi_308 = 3; int gi_unused_312 = -1; int gi_316 = 0; int g_datetime_320 = 0; double gd_324 = 0.0; double gd_332 = 0.0; int gi_340 = 0; double gd_344 = 300.0; string gs_unused_352 = "---------- Indicator Setting"; bool gi_unused_360 = FALSE; int gi_unused_364 = 0; int gi_unused_368 = 5; int gi_unused_372 = 3; int gi_unused_376 = 1; int gi_unused_380 = 5; bool gi_unused_384 = TRUE; bool gi_unused_388 = FALSE; bool gi_unused_392 = FALSE; bool gi_unused_396 = TRUE; bool gi_unused_400 = FALSE; bool gi_unused_404 = TRUE; int gi_unused_408 = 65535; int gi_unused_412 = 16776960; int gi_unused_416 = 1485; bool gi_420; bool gi_424; int gi_428 = 5; int gi_432 = 1; double gd_436 = 0.0; int gi_444 = 7; int gi_unused_448 = 0; string gs_unused_452 = "alert.wav"; double g_iwpr_460 = 0.0; double g_iwpr_468 = 0.0; double g_iwpr_476 = 0.0; double g_iwpr_484 = 0.0; double gd_unused_492 = 0.0; double gd_unused_500 = 0.0; int g_spread_516 = 0; string g_name_520 = ""; int g_time_528 = 0; int init() { NumberOfOrders--; double ld_0 = FMRSerialNumber; double ld_8 = 3; g_acc_number_168 = AccountNumber(); if (g_acc_number_168 == (ld_0 - 293.0) / ld_8 - 1895.0) { Alert("Welcome to Forex Meta Robot Lightning Demo Version!"); gi_424 = TRUE; } else { if (g_acc_number_168 == (ld_0 - 263.0) / ld_8 - 1764.0) { Alert("Welcome to Forex Meta Robot Lightning Live Version!"); gi_420 = TRUE; } else { Alert("You Entered an Incorrect Serial Number - The EA Will now be disabled"); gi_424 = FALSE; gi_420 = FALSE; } } gi_316 = gi_284; return (0); } int deinit() { return (0); } int CheckTradingTimes() { bool li_8; bool li_12; bool li_16; int li_4 = 100 * Hour() + Minute(); int li_20 = 100 * GMT_Offset; if (gi_200 == TRUE) li_20 -= 100; gi_248 = myAsianStart + li_20; gi_252 = myAsianStop + li_20; gi_256 = myEurStart + li_20; gi_260 = myEurStop + li_20; gi_264 = myNYStart + li_20; gi_268 = myNYStop + li_20; bool li_ret_0 = TRUE; if (li_ret_0 == TRUE) { if (TradeAsianMarket == TRUE) { if (gi_252 - gi_248 < 0) li_8 = TRUE; if (li_8 == FALSE && li_4 >= gi_248 && li_4 <= gi_252) li_ret_0 = FALSE; if (li_8 == TRUE && li_4 >= gi_248 && li_4 <= 2400) li_ret_0 = FALSE; if (li_8 == TRUE && li_4 >= 0 && li_4 <= gi_252) li_ret_0 = FALSE; } } if (li_ret_0 == TRUE) { if (TradeEuropeanMarket == TRUE) { if (gi_260 - gi_256 < 0) li_12 = TRUE; if (li_12 == FALSE && li_4 >= gi_256 && li_4 <= gi_260) li_ret_0 = FALSE; if (li_12 == TRUE && li_4 >= gi_256 && li_4 <= 2400) li_ret_0 = FALSE; if (li_12 == TRUE && li_4 >= 0 && li_4 <= gi_260) li_ret_0 = FALSE; } } if (li_ret_0 == TRUE) { if (TradeNewYorkMarket == TRUE) { if (gi_268 - gi_264 < 0) li_16 = TRUE; if (li_16 == FALSE && li_4 >= gi_264 && li_4 <= gi_268) li_ret_0 = FALSE; if (li_16 == TRUE && li_4 >= gi_264 && li_4 <= 2400) li_ret_0 = FALSE; if (li_16 == TRUE && li_4 >= 0 && li_4 <= gi_268) li_ret_0 = FALSE; } } return (li_ret_0); } int start() { int l_pos_32; double ld_36; double ld_44; int l_pos_52; int l_count_56; bool li_60; bool li_64; bool li_68; bool li_72; double ld_unused_76; double ld_unused_84; double ld_unused_92; bool li_100; bool li_104; bool li_108; bool li_112; double ld_116; double ld_124; int l_ticket_132; double l_minlot_0 = MarketInfo(Symbol(), MODE_MINLOT); double l_maxlot_8 = MarketInfo(Symbol(), MODE_MAXLOT); double l_lotstep_16 = MarketInfo(Symbol(), MODE_LOTSTEP); bool li_24 = FALSE; if (DayOfWeek() == 5) gi_276 = TRUE; if (TradeOnFriday? == FALSE && gi_276 == TRUE) li_24 = TRUE; int l_bool_28 = IsDemo(); if (l_bool_28 == TRUE || gi_420 == TRUE) { if (gi_424 == TRUE || gi_420 == TRUE) { gi_280 = 0; if (UseTradingHours) gi_280 = CheckTradingTimes(); if (gi_280 == 0 && li_24 == FALSE && PauseButton == FALSE) { g_spread_516 = MarketInfo(Symbol(), MODE_SPREAD); if (g_spread_516 < SpreadThreshold) { if (gi_172) gi_340 = 1; else gi_340 = 0; g_name_520 = Symbol() + gs_300 + "-" + Month() + "-" + Day() + ".log"; l_pos_32 = 0; ld_36 = 0; ld_44 = 0; ld_36 = 0; ld_44 = 0; if (CntOrd(OP_BUY, MagicNumber) > 0) gi_unused_448 = 1; if (CntOrd(OP_SELL, MagicNumber) > 0) gi_unused_448 = -1; g_iwpr_460 = iWPR(NULL, 0, 26, 0); g_iwpr_468 = iWPR(NULL, 0, 27, 0); g_iwpr_476 = iWPR(NULL, 0, 29, 0); g_iwpr_484 = iWPR(NULL, 0, 30, 0); if (g_iwpr_460 < -99.99 && g_iwpr_468 < -99.99 && g_iwpr_476 < -99.99 && g_iwpr_484 < -99.99) ld_36 = 1; if (g_iwpr_460 > -0.01 && g_iwpr_468 > -0.01 && g_iwpr_476 > -0.01 && g_iwpr_484 > -0.01) ld_44 = 1; l_pos_52 = 0; l_count_56 = 0; li_60 = FALSE; li_64 = FALSE; li_68 = FALSE; li_72 = FALSE; ld_unused_76 = 0; ld_unused_84 = 0; ld_unused_92 = 0; li_100 = FALSE; li_104 = TRUE; if (li_104 == TRUE) { li_104 = FALSE; g_time_528 = Time[0]; } if (g_time_528 == Time[0] && TimeCurrent() - g_time_528 > gd_344) li_100 = FALSE; else { g_time_528 = Time[0]; li_100 = TRUE; } li_108 = FALSE; li_112 = FALSE; if (TimeCurrent() >= Time[0] + 60 * Period() - gd_324) li_108 = TRUE; else li_108 = FALSE; if (TimeCurrent() >= Time[0] + 60 * Period() - gd_332) li_112 = TRUE; else li_112 = FALSE; if (gd_324 == 0.0) li_108 = TRUE; if (gd_332 == 0.0) li_112 = TRUE; gd_436 = gd_76; gd_436 = FixedLotSize; l_count_56 = 0; for (l_pos_52 = 0; l_pos_52 < OrdersTotal(); l_pos_52++) { OrderSelect(l_pos_52, SELECT_BY_POS, MODE_TRADES); if (OrderType() == OP_SELL || OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber || MagicNumber == 0) l_count_56++; } if (l_count_56 >= 1) { li_60 = FALSE; li_64 = FALSE; } li_64 = FALSE; li_60 = FALSE; li_72 = FALSE; li_68 = FALSE; if (ld_44 > 0.0) { li_60 = TRUE; li_64 = FALSE; } if (ld_36 > 0.0) { li_64 = TRUE; li_60 = FALSE; } if (ld_44 > 0.0) li_72 = TRUE; if (ld_36 > 0.0) li_68 = TRUE; subPrintDetails(); for (l_pos_52 = 0; l_pos_52 < OrdersTotal(); l_pos_52++) { OrderSelect(l_pos_52, SELECT_BY_POS, MODE_TRADES); if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber || MagicNumber == 0) { if (li_72 == TRUE && li_112 == TRUE) { if (li_100 == TRUE && gi_340 > 0) { SetText(Time[0], High[0] + 1 * gi_444 * Point, "CloseBuy" + DoubleToStr(Time[0], 0), CharToStr(251), 16711935); PlaySound("alert.wav"); OrdClose(OrderTicket(), OrderLots(), Bid, gi_308, Red); Alerts(0, 0, li_72, li_68, Bid, 0, 0, OrderTicket()); return (0); } if (gi_340 == 0) { SetText(Time[0], High[0] + 1 * gi_444 * Point, "CloseBuy" + DoubleToStr(Time[0], 0), CharToStr(251), 16711935); PlaySound("alert.wav"); OrdClose(OrderTicket(), OrderLots(), Bid, gi_308, Red); Alerts(0, 0, li_72, li_68, Bid, 0, 0, OrderTicket()); return (0); } } } if (OrderType() == OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber || MagicNumber == 0) { if (li_68 == TRUE && li_112 == TRUE) { if (li_100 == TRUE && gi_340 > 0) { SetText(Time[0], High[0] - 0.3 * gi_444 * Point, "CloseSell" + DoubleToStr(Time[0], 0), CharToStr(251), 16711935); PlaySound("alert.wav"); OrdClose(OrderTicket(), OrderLots(), Ask, gi_308, Red); Alerts(0, 0, li_72, li_68, Ask, 0, 0, OrderTicket()); return (0); } if (gi_340 == 0) { SetText(Time[0], High[0] - 0.3 * gi_444 * Point, "CloseSell" + DoubleToStr(Time[0], 0), CharToStr(251), 16711935); PlaySound("alert.wav"); OrdClose(OrderTicket(), OrderLots(), Ask, gi_308, Red); Alerts(0, 0, li_72, li_68, Ask, 0, 0, OrderTicket()); return (0); } } } } ld_116 = 0; ld_124 = 0; l_ticket_132 = 0; if (l_count_56 <= NumberOfOrders) { if (li_60 == TRUE && li_108 == TRUE) { if (li_100 == TRUE && gi_340 > 0) { SetText(Time[0], High[0] + 1 * gi_444 * Point, "Sell" + DoubleToStr(Time[0], 0), CharToStr(234), 255); if (TakeProfit == 0) ld_124 = 0; else ld_124 = Bid - TakeProfit * Point; if (StopLoss == 0) ld_116 = 0; else ld_116 = Bid + StopLoss * Point; PlaySound("alert.wav"); l_ticket_132 = OrdSend(Symbol(), 1, gd_436, Bid, gi_308, ld_116, ld_124, "FMR Lightning", MagicNumber, 0, Red); OrderSelect(l_ticket_132, SELECT_BY_TICKET); OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(ld_116, Digits), NormalizeDouble(ld_124, Digits), 0, Green); Alerts(li_64, li_60, 0, 0, Bid, ld_116, ld_124, l_ticket_132); li_60 = FALSE; return (0); } if (gi_340 == 0) { SetText(Time[0], High[0] + 1 * gi_444 * Point, "Sell" + DoubleToStr(Time[0], 0), CharToStr(234), 255); if (TakeProfit == 0) ld_124 = 0; else ld_124 = Bid - TakeProfit * Point; if (StopLoss == 0) ld_116 = 0; else ld_116 = Bid + StopLoss * Point; PlaySound("alert.wav"); l_ticket_132 = OrdSend(Symbol(), 1, gd_436, Bid, gi_308, ld_116, ld_124, "FMR Lightning", MagicNumber, 0, Red); OrderSelect(l_ticket_132, SELECT_BY_TICKET); OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(ld_116, Digits), NormalizeDouble(ld_124, Digits), 0, Green); Alerts(li_64, li_60, 0, 0, Bid, ld_116, ld_124, l_ticket_132); li_60 = FALSE; return (0); } } if (li_64 == TRUE && li_108 == TRUE) { if (li_100 == TRUE && gi_340 > 0) { SetText(Time[0], Low[0] - 0.3 * gi_444 * Point, "Buy" + DoubleToStr(Time[0], 0), CharToStr(233), 65280); if (TakeProfit == 0) ld_124 = 0; else ld_124 = Ask + TakeProfit * Point; if (StopLoss == 0) ld_116 = 0; else ld_116 = Ask - StopLoss * Point; PlaySound("alert.wav"); l_ticket_132 = OrdSend(Symbol(), 0, gd_436, Ask, gi_308, ld_116, ld_124, "FMR Lightning", MagicNumber, 0, Lime); OrderSelect(l_ticket_132, SELECT_BY_TICKET); OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(ld_116, Digits), NormalizeDouble(ld_124, Digits), 0, Green); Alerts(li_64, li_60, 0, 0, Ask, ld_116, ld_124, l_ticket_132); li_64 = FALSE; return (0); } if (gi_340 == 0) { SetText(Time[0], Low[0] - 0.3 * gi_444 * Point, "Buy" + DoubleToStr(Time[0], 0), CharToStr(233), 65280); if (TakeProfit == 0) ld_124 = 0; else ld_124 = Ask + TakeProfit * Point; if (StopLoss == 0) ld_116 = 0; else ld_116 = Ask - StopLoss * Point; PlaySound("alert.wav"); l_ticket_132 = OrdSend(Symbol(), 0, gd_436, Ask, gi_308, ld_116, ld_124, "FMR Lightning", MagicNumber, 0, Lime); OrderSelect(l_ticket_132, SELECT_BY_TICKET); OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(ld_116, Digits), NormalizeDouble(ld_124, Digits), 0, Green); Alerts(li_64, li_60, 0, 0, Ask, ld_116, ld_124, l_ticket_132); li_64 = FALSE; return (0); } } } for (l_pos_32 = 0; l_pos_32 < OrdersTotal(); l_pos_32++) { if (OrderSelect(l_pos_32, SELECT_BY_POS, MODE_TRADES)) if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber || MagicNumber == 0) TrailingPositions(); } Alerts(0, 0, 0, 0, 0, 0, 0, 0); subPrintDetails(); return (0); } subPrintDetails(); if (gi_172) gi_340 = 1; else gi_340 = 0; g_name_520 = Symbol() + gs_300 + "-" + Month() + "-" + Day() + ".log"; l_pos_32 = 0; ld_36 = 0; ld_44 = 0; ld_36 = 0; ld_44 = 0; if (CntOrd(OP_BUY, MagicNumber) > 0) gi_unused_448 = 1; if (CntOrd(OP_SELL, MagicNumber) > 0) gi_unused_448 = -1; g_iwpr_460 = iWPR(NULL, 0, 26, 0); g_iwpr_468 = iWPR(NULL, 0, 27, 0); g_iwpr_476 = iWPR(NULL, 0, 29, 0); g_iwpr_484 = iWPR(NULL, 0, 30, 0); if (g_iwpr_460 < -99.99 && g_iwpr_468 < -99.99 && g_iwpr_476 < -99.99 && g_iwpr_484 < -99.99) ld_36 = 1; if (g_iwpr_460 > -0.01 && g_iwpr_468 > -0.01 && g_iwpr_476 > -0.01 && g_iwpr_484 > -0.01) ld_44 = 1; l_pos_52 = 0; l_count_56 = 0; li_60 = FALSE; li_64 = FALSE; li_68 = FALSE; li_72 = FALSE; ld_unused_76 = 0; ld_unused_84 = 0; ld_unused_92 = 0; g_time_528 = 0; li_100 = FALSE; li_104 = TRUE; if (li_104 == TRUE) { li_104 = FALSE; g_time_528 = Time[0]; } if (g_time_528 == Time[0] && TimeCurrent() - g_time_528 > gd_344) li_100 = FALSE; else { g_time_528 = Time[0]; li_100 = TRUE; } li_108 = FALSE; li_112 = FALSE; if (TimeCurrent() >= Time[0] + 60 * Period() - gd_324) li_108 = TRUE; else li_108 = FALSE; if (TimeCurrent() >= Time[0] + 60 * Period() - gd_332) li_112 = TRUE; else li_112 = FALSE; if (gd_324 == 0.0) li_108 = TRUE; if (gd_332 == 0.0) li_112 = TRUE; gd_436 = FixedLotSize; l_count_56 = 0; for (l_pos_52 = 0; l_pos_52 < OrdersTotal(); l_pos_52++) { OrderSelect(l_pos_52, SELECT_BY_POS, MODE_TRADES); if (OrderType() == OP_SELL || OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber || MagicNumber == 0) l_count_56++; } if (l_count_56 >= 1) { li_60 = FALSE; li_64 = FALSE; } li_64 = FALSE; li_60 = FALSE; li_72 = FALSE; li_68 = FALSE; if (ld_44 > 0.0) li_72 = TRUE; if (ld_36 > 0.0) li_68 = TRUE; for (l_pos_52 = 0; l_pos_52 < OrdersTotal(); l_pos_52++) { OrderSelect(l_pos_52, SELECT_BY_POS, MODE_TRADES); if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber || MagicNumber == 0) { if (li_72 == TRUE && li_112 == TRUE) { if (li_100 == TRUE && gi_340 > 0) { SetText(Time[0], High[0] + 1 * gi_444 * Point, "CloseBuy" + DoubleToStr(Time[0], 0), CharToStr(251), 16711935); PlaySound("alert.wav"); OrdClose(OrderTicket(), OrderLots(), Bid, gi_308, Red); Alerts(0, 0, li_72, li_68, Bid, 0, 0, OrderTicket()); return (0); } if (gi_340 == 0) { SetText(Time[0], High[0] + 1 * gi_444 * Point, "CloseBuy" + DoubleToStr(Time[0], 0), CharToStr(251), 16711935); PlaySound("alert.wav"); OrdClose(OrderTicket(), OrderLots(), Bid, gi_308, Red); Alerts(0, 0, li_72, li_68, Bid, 0, 0, OrderTicket()); return (0); } } } if (OrderType() == OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber || MagicNumber == 0) { if (li_68 == TRUE && li_112 == TRUE) { if (li_100 == TRUE && gi_340 > 0) { SetText(Time[0], High[0] - 0.3 * gi_444 * Point, "CloseSell" + DoubleToStr(Time[0], 0), CharToStr(251), 16711935); PlaySound("alert.wav"); OrdClose(OrderTicket(), OrderLots(), Ask, gi_308, Red); Alerts(0, 0, li_72, li_68, Ask, 0, 0, OrderTicket()); return (0); } if (gi_340 == 0) { SetText(Time[0], High[0] - 0.3 * gi_444 * Point, "CloseSell" + DoubleToStr(Time[0], 0), CharToStr(251), 16711935); PlaySound("alert.wav"); OrdClose(OrderTicket(), OrderLots(), Ask, gi_308, Red); Alerts(0, 0, li_72, li_68, Ask, 0, 0, OrderTicket()); return (0); } } } } ld_116 = 0; ld_124 = 0; l_ticket_132 = 0; if (l_count_56 <= NumberOfOrders) { if (li_60 == TRUE && li_108 == TRUE) { if (li_100 == TRUE && gi_340 > 0) { SetText(Time[0], High[0] + 1 * gi_444 * Point, "Sell" + DoubleToStr(Time[0], 0), CharToStr(234), 255); if (TakeProfit == 0) ld_124 = 0; else ld_124 = Bid - TakeProfit * Point; if (StopLoss == 0) ld_116 = 0; else ld_116 = Bid + StopLoss * Point; PlaySound("alert.wav"); l_ticket_132 = OrdSend(Symbol(), 1, gd_436, Bid, gi_308, ld_116, ld_124, "FMR Lightning", MagicNumber, 0, Red); OrderSelect(l_ticket_132, SELECT_BY_TICKET); OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(ld_116, Digits), NormalizeDouble(ld_124, Digits), 0, Green); Alerts(li_64, li_60, 0, 0, Bid, ld_116, ld_124, l_ticket_132); li_60 = FALSE; return (0); } if (gi_340 == 0) { SetText(Time[0], High[0] + 1 * gi_444 * Point, "Sell" + DoubleToStr(Time[0], 0), CharToStr(234), 255); if (TakeProfit == 0) ld_124 = 0; else ld_124 = Bid - TakeProfit * Point; if (StopLoss == 0) ld_116 = 0; else ld_116 = Bid + StopLoss * Point; PlaySound("alert.wav"); l_ticket_132 = OrdSend(Symbol(), 1, gd_436, Bid, gi_308, ld_116, ld_124, "FMR Lightning", MagicNumber, 0, Red); OrderSelect(l_ticket_132, SELECT_BY_TICKET); OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(ld_116, Digits), NormalizeDouble(ld_124, Digits), 0, Green); Alerts(li_64, li_60, 0, 0, Bid, ld_116, ld_124, l_ticket_132); li_60 = FALSE; return (0); } } if (li_64 == TRUE && li_108 == TRUE) { if (li_100 == TRUE && gi_340 > 0) { SetText(Time[0], Low[0] - 0.3 * gi_444 * Point, "Buy" + DoubleToStr(Time[0], 0), CharToStr(233), 65280); if (TakeProfit == 0) ld_124 = 0; else ld_124 = Ask + TakeProfit * Point; if (StopLoss == 0) ld_116 = 0; else ld_116 = Ask - StopLoss * Point; PlaySound("alert.wav"); l_ticket_132 = OrdSend(Symbol(), 0, gd_436, Ask, gi_308, ld_116, ld_124, "FMR Lightning", MagicNumber, 0, Lime); OrderSelect(l_ticket_132, SELECT_BY_TICKET); OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(ld_116, Digits), NormalizeDouble(ld_124, Digits), 0, Green); Alerts(li_64, li_60, 0, 0, Ask, ld_116, ld_124, l_ticket_132); li_64 = FALSE; return (0); } if (gi_340 == 0) { SetText(Time[0], Low[0] - 0.3 * gi_444 * Point, "Buy" + DoubleToStr(Time[0], 0), CharToStr(233), 65280); if (TakeProfit == 0) ld_124 = 0; else ld_124 = Ask + TakeProfit * Point; if (StopLoss == 0) ld_116 = 0; else ld_116 = Ask - StopLoss * Point; PlaySound("alert.wav"); l_ticket_132 = OrdSend(Symbol(), 0, gd_436, Ask, gi_308, ld_116, ld_124, "FMR Lightning", MagicNumber, 0, Lime); OrderSelect(l_ticket_132, SELECT_BY_TICKET); OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(ld_116, Digits), NormalizeDouble(ld_124, Digits), 0, Green); Alerts(li_64, li_60, 0, 0, Ask, ld_116, ld_124, l_ticket_132); li_64 = FALSE; return (0); } } } for (l_pos_32 = 0; l_pos_32 < OrdersTotal(); l_pos_32++) { if (OrderSelect(l_pos_32, SELECT_BY_POS, MODE_TRADES)) if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber || MagicNumber == 0) TrailingPositions(); } Alerts(0, 0, 0, 0, 0, 0, 0, 0); return (0); } Comment("Trading Window is Closed or Pause Button has been checked (Open Trades Will Still be Monitored)"); if (gi_172) gi_340 = 1; else gi_340 = 0; g_name_520 = Symbol() + gs_300 + "-" + Month() + "-" + Day() + ".log"; l_pos_32 = 0; ld_36 = 0; ld_44 = 0; ld_36 = 0; ld_44 = 0; if (CntOrd(OP_BUY, MagicNumber) > 0) gi_unused_448 = 1; if (CntOrd(OP_SELL, MagicNumber) > 0) gi_unused_448 = -1; g_iwpr_460 = iWPR(NULL, 0, 26, 0); g_iwpr_468 = iWPR(NULL, 0, 27, 0); g_iwpr_476 = iWPR(NULL, 0, 29, 0); g_iwpr_484 = iWPR(NULL, 0, 30, 0); if (g_iwpr_460 < -99.99 && g_iwpr_468 < -99.99 && g_iwpr_476 < -99.99 && g_iwpr_484 < -99.99) ld_36 = 1; if (g_iwpr_460 > -0.01 && g_iwpr_468 > -0.01 && g_iwpr_476 > -0.01 && g_iwpr_484 > -0.01) ld_44 = 1; l_pos_52 = 0; l_count_56 = 0; li_60 = FALSE; li_64 = FALSE; li_68 = FALSE; li_72 = FALSE; ld_unused_76 = 0; ld_unused_84 = 0; ld_unused_92 = 0; g_time_528 = 0; li_100 = FALSE; li_104 = TRUE; if (li_104 == TRUE) { li_104 = FALSE; g_time_528 = Time[0]; } if (g_time_528 == Time[0] && TimeCurrent() - g_time_528 > gd_344) li_100 = FALSE; else { g_time_528 = Time[0]; li_100 = TRUE; } li_108 = FALSE; li_112 = FALSE; if (TimeCurrent() >= Time[0] + 60 * Period() - gd_324) li_108 = TRUE; else li_108 = FALSE; if (TimeCurrent() >= Time[0] + 60 * Period() - gd_332) li_112 = TRUE; else li_112 = FALSE; if (gd_324 == 0.0) li_108 = TRUE; if (gd_332 == 0.0) li_112 = TRUE; gd_436 = gd_76; gd_436 = FixedLotSize; l_count_56 = 0; for (l_pos_52 = 0; l_pos_52 < OrdersTotal(); l_pos_52++) { OrderSelect(l_pos_52, SELECT_BY_POS, MODE_TRADES); if (OrderType() == OP_SELL || OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber || MagicNumber == 0) l_count_56++; } if (l_count_56 >= 1) { li_60 = FALSE; li_64 = FALSE; } li_64 = FALSE; li_60 = FALSE; li_72 = FALSE; li_68 = FALSE; if (ld_44 > 0.0) li_72 = TRUE; if (ld_36 > 0.0) li_68 = TRUE; for (l_pos_52 = 0; l_pos_52 < OrdersTotal(); l_pos_52++) { OrderSelect(l_pos_52, SELECT_BY_POS, MODE_TRADES); if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber || MagicNumber == 0) { if (li_72 == TRUE && li_112 == TRUE) { if (li_100 == TRUE && gi_340 > 0) { SetText(Time[0], High[0] + 1 * gi_444 * Point, "CloseBuy" + DoubleToStr(Time[0], 0), CharToStr(251), 16711935); PlaySound("alert.wav"); OrdClose(OrderTicket(), OrderLots(), Bid, gi_308, Red); Alerts(0, 0, li_72, li_68, Bid, 0, 0, OrderTicket()); return (0); } if (gi_340 == 0) { SetText(Time[0], High[0] + 1 * gi_444 * Point, "CloseBuy" + DoubleToStr(Time[0], 0), CharToStr(251), 16711935); PlaySound("alert.wav"); OrdClose(OrderTicket(), OrderLots(), Bid, gi_308, Red); Alerts(0, 0, li_72, li_68, Bid, 0, 0, OrderTicket()); return (0); } } } if (OrderType() == OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber || MagicNumber == 0) { if (li_68 == TRUE && li_112 == TRUE) { if (li_100 == TRUE && gi_340 > 0) { SetText(Time[0], High[0] - 0.3 * gi_444 * Point, "CloseSell" + DoubleToStr(Time[0], 0), CharToStr(251), 16711935); PlaySound("alert.wav"); OrdClose(OrderTicket(), OrderLots(), Ask, gi_308, Red); Alerts(0, 0, li_72, li_68, Ask, 0, 0, OrderTicket()); return (0); } if (gi_340 == 0) { SetText(Time[0], High[0] - 0.3 * gi_444 * Point, "CloseSell" + DoubleToStr(Time[0], 0), CharToStr(251), 16711935); PlaySound("alert.wav"); OrdClose(OrderTicket(), OrderLots(), Ask, gi_308, Red); Alerts(0, 0, li_72, li_68, Ask, 0, 0, OrderTicket()); return (0); } } } } ld_116 = 0; ld_124 = 0; l_ticket_132 = 0; if (l_count_56 <= NumberOfOrders) { if (li_60 == TRUE && li_108 == TRUE) { if (li_100 == TRUE && gi_340 > 0) { SetText(Time[0], High[0] + 1 * gi_444 * Point, "Sell" + DoubleToStr(Time[0], 0), CharToStr(234), 255); if (TakeProfit == 0) ld_124 = 0; else ld_124 = Bid - TakeProfit * Point; if (StopLoss == 0) ld_116 = 0; else ld_116 = Bid + StopLoss * Point; PlaySound("alert.wav"); l_ticket_132 = OrdSend(Symbol(), 1, gd_436, Bid, gi_308, ld_116, ld_124, "FMR Lightning", MagicNumber, 0, Red); OrderSelect(l_ticket_132, SELECT_BY_TICKET); OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(ld_116, Digits), NormalizeDouble(ld_124, Digits), 0, Green); Alerts(li_64, li_60, 0, 0, Bid, ld_116, ld_124, l_ticket_132); li_60 = FALSE; return (0); } if (gi_340 == 0) { SetText(Time[0], High[0] + 1 * gi_444 * Point, "Sell" + DoubleToStr(Time[0], 0), CharToStr(234), 255); if (TakeProfit == 0) ld_124 = 0; else ld_124 = Bid - TakeProfit * Point; if (StopLoss == 0) ld_116 = 0; else ld_116 = Bid + StopLoss * Point; PlaySound("alert.wav"); l_ticket_132 = OrdSend(Symbol(), 1, gd_436, Bid, gi_308, ld_116, ld_124, "FMR Lightning", MagicNumber, 0, Red); OrderSelect(l_ticket_132, SELECT_BY_TICKET); OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(ld_116, Digits), NormalizeDouble(ld_124, Digits), 0, Green); Alerts(li_64, li_60, 0, 0, Bid, ld_116, ld_124, l_ticket_132); li_60 = FALSE; return (0); } } if (li_64 == TRUE && li_108 == TRUE) { if (li_100 == TRUE && gi_340 > 0) { SetText(Time[0], Low[0] - 0.3 * gi_444 * Point, "Buy" + DoubleToStr(Time[0], 0), CharToStr(233), 65280); if (TakeProfit == 0) ld_124 = 0; else ld_124 = Ask + TakeProfit * Point; if (StopLoss == 0) ld_116 = 0; else ld_116 = Ask - StopLoss * Point; PlaySound("alert.wav"); l_ticket_132 = OrdSend(Symbol(), 0, gd_436, Ask, gi_308, ld_116, ld_124, "FMR Lightning", MagicNumber, 0, Lime); OrderSelect(l_ticket_132, SELECT_BY_TICKET); OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(ld_116, Digits), NormalizeDouble(ld_124, Digits), 0, Green); Alerts(li_64, li_60, 0, 0, Ask, ld_116, ld_124, l_ticket_132); li_64 = FALSE; return (0); } if (gi_340 == 0) { SetText(Time[0], Low[0] - 0.3 * gi_444 * Point, "Buy" + DoubleToStr(Time[0], 0), CharToStr(233), 65280); if (TakeProfit == 0) ld_124 = 0; else ld_124 = Ask + TakeProfit * Point; if (StopLoss == 0) ld_116 = 0; else ld_116 = Ask - StopLoss * Point; PlaySound("alert.wav"); l_ticket_132 = OrdSend(Symbol(), 0, gd_436, Ask, gi_308, ld_116, ld_124, "FMR Lightning", MagicNumber, 0, Lime); OrderSelect(l_ticket_132, SELECT_BY_TICKET); OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(ld_116, Digits), NormalizeDouble(ld_124, Digits), 0, Green); Alerts(li_64, li_60, 0, 0, Ask, ld_116, ld_124, l_ticket_132); li_64 = FALSE; return (0); } } } for (l_pos_32 = 0; l_pos_32 < OrdersTotal(); l_pos_32++) { if (OrderSelect(l_pos_32, SELECT_BY_POS, MODE_TRADES)) if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber || MagicNumber == 0) TrailingPositions(); } Alerts(0, 0, 0, 0, 0, 0, 0, 0); return (0); } } else Comment("You Have Entered a Demo Serial Number - Please Re-Load the Indicator and use your Live Account Serial Number"); return (0); } void SetText(int ai_unused_0, double ad_unused_4, string as_unused_12, string as_unused_20, int ai_unused_28) { } void Alerts(int ai_0, int ai_4, int ai_8, int ai_12, double ad_16, double ad_24, double ad_32, int ai_40) { string ls_44 = ""; ls_44 = ""; string l_time2str_52 = ""; l_time2str_52 = TimeToStr(TimeCurrent(), TIME_DATE|TIME_MINUTES); if (gi_292) { if (ai_0 == 1) { if (gi_316 == gi_284) g_datetime_320 = 0; if (gi_316 > 0 && TimeCurrent() - g_datetime_320 > gi_288) { if (ai_0 == 1) { ls_44 = ls_44 + "Buy @ " + DoubleToStr(ad_16, Digits) + "; SL: " + DoubleToStr(ad_24, Digits) + "; TP: " + DoubleToStr(ad_32, Digits) + " at " + l_time2str_52 + " Order:" + DoubleToStr(ai_40, 0) + "."; Alert(Symbol(), " ", Period(), ": ", ls_44); if (gi_296) SendMail(Symbol() + " " + Period() + ": ", Symbol() + " " + Period() + ": " + ls_44); gi_316--; g_datetime_320 = TimeCurrent(); } } } if (ai_4 == 1) { if (gi_316 == gi_284) g_datetime_320 = 0; if (gi_316 > 0 && TimeCurrent() - g_datetime_320 > gi_288) { if (ai_4 == 1) { ls_44 = ls_44 + "Sell @ " + DoubleToStr(ad_16, Digits) + "; SL: " + DoubleToStr(ad_24, Digits) + "; TP: " + DoubleToStr(ad_32, Digits) + " at " + l_time2str_52 + " Order:" + DoubleToStr(ai_40, 0) + "."; Alert(Symbol(), " ", Period(), ": ", ls_44); if (gi_296) SendMail(Symbol() + " " + Period() + ": ", Symbol() + " " + Period() + ": " + ls_44); gi_316--; g_datetime_320 = TimeCurrent(); } } } if (ai_12 == 1) { if (gi_316 == gi_284) g_datetime_320 = 0; if (gi_316 > 0 && TimeCurrent() - g_datetime_320 > gi_288) { if (ai_12 == 1) { ls_44 = ls_44 + " Close Sell @ " + DoubleToStr(ad_16, Digits) + " at " + l_time2str_52 + " Order:" + DoubleToStr(ai_40, 0) + "."; Alert(Symbol(), " ", Period(), ": ", ls_44); if (gi_296) SendMail(Symbol() + " " + Period() + ": ", Symbol() + " " + Period() + ": " + ls_44); gi_316--; g_datetime_320 = TimeCurrent(); } } } if (ai_8 == 1) { if (gi_316 == gi_284) g_datetime_320 = 0; if (gi_316 > 0 && TimeCurrent() - g_datetime_320 > gi_288) { if (ai_8 == 1) { ls_44 = ls_44 + " Close Buy @ " + DoubleToStr(ad_16, Digits) + " at " + l_time2str_52 + " Order:" + DoubleToStr(ai_40, 0) + "."; Alert(Symbol(), " ", Period(), ": ", ls_44); if (gi_296) SendMail(Symbol() + " " + Period() + ": ", Symbol() + " " + Period() + ": " + ls_44); gi_316--; g_datetime_320 = TimeCurrent(); } } } if (ai_8 == 0 && ai_12 == 0 && ai_0 == 0 && ai_4 == 0) { gi_316 = gi_284; g_datetime_320 = 0; } } } void subPrintDetails() { string ls_32; string ls_56; string ls_72; string ls_80; string ls_88; string ls_96; string ls_104; string ls_112; string ls_0 = ""; string ls_8 = "----------------------------------------\n"; string ls_16 = "\n"; string ls_unused_24 = ""; double ld_44 = AccountMargin(); int l_leverage_52 = AccountLeverage(); string ls_64 = AccountCompany(); if (gi_424 == TRUE || gi_420 == TRUE) ls_72 = "The EA is Enabled for Trading"; else ls_72 = "The EA Has been Disabled from Trading - Wrong Serial Number"; if (TradeOnFriday? == TRUE) ls_80 = "Yes"; if (TradeOnFriday? == FALSE) ls_80 = "No"; if (TradeAsianMarket == TRUE) ls_88 = "Yes"; if (TradeAsianMarket == FALSE) ls_88 = "No"; if (TradeEuropeanMarket == TRUE) ls_96 = "Yes"; if (TradeEuropeanMarket == FALSE) ls_96 = "No"; if (TradeNewYorkMarket == TRUE) ls_104 = "Yes"; if (TradeNewYorkMarket == FALSE) ls_104 = "No"; if (UseTradingHours == TRUE) ls_112 = "Yes"; if (UseTradingHours == FALSE) ls_112 = "No"; if (gi_280 == 0) ls_32 = "Trading Window is Open"; else ls_32 = "Trading Window is Closed"; if (g_spread_516 < SpreadThreshold) ls_56 = "Spread is OK to Trade"; else ls_56 = "Spread is too wide to trade"; ls_0 = ls_0 + ls_8 + ls_16; ls_0 = ls_0 + "FMR Lightning | Serial Number = " + DoubleToStr(FMRSerialNumber, 0) + ls_16; ls_0 = ls_0 + ls_72 + ls_16; ls_0 = ls_0 + "TakeProfit = " + DoubleToStr(TakeProfit, 0) + " | Stop Loss = " + DoubleToStr(StopLoss, 0) + " | Trailing Stop = " + DoubleToStr(TrailingStop, 0) + ls_16; ls_0 = ls_0 + ls_8 + ls_16; ls_0 = ls_0 + "Broker Name = " + ls_64 + ls_16; ls_0 = ls_0 + "Leverage = " + l_leverage_52 + " to 1 " + ls_16; ls_0 = ls_0 + "Margin Used = $ " + ld_44 + ls_16; ls_0 = ls_0 + "Risk = " + DoubleToStr(Risk, 2) + ls_16; ls_0 = ls_0 + "Lot Size = " + DoubleToStr(gd_436, 2) + "" + ls_16; ls_0 = ls_0 + "Number of Orders = " + DoubleToStr(NumberOfOrders + 1, 0) + "" + ls_16; ls_0 = ls_0 + ls_8 + ls_16; ls_0 = ls_0 + "Spread = " + g_spread_516 + ls_16; ls_0 = ls_0 + "Spread Threshold = " + DoubleToStr(SpreadThreshold, 0) + ls_16; ls_0 = ls_0 + ls_8 + ls_16; ls_0 = ls_0 + "Trade On Fridays = " + ls_80 + ls_16; ls_0 = ls_0 + ls_8 + ls_16; ls_0 = ls_0 + "Use Trading Times? = " + ls_112 + ls_16; ls_0 = ls_0 + "GMT Offset = " + GMT_Offset + ls_16; ls_0 = ls_0 + "Trade the Asian Session = " + ls_88 + ls_16; ls_0 = ls_0 + "On = " + myAsianStart + " Off = " + myAsianStop + ls_16; ls_0 = ls_0 + "Trade the European Session = " + ls_96 + ls_16; ls_0 = ls_0 + "On = " + myEurStart + " Off = " + myEurStop + ls_16; ls_0 = ls_0 + "Trade the New York Session = " + ls_104 + ls_16; ls_0 = ls_0 + "On = " + myNYStart + " Off = " + myNYStop + ls_16; ls_0 = ls_0 + ls_8 + ls_16; ls_0 = ls_0 + "Status" + ls_16; ls_0 = ls_0 + ls_32 + ls_16; ls_0 = ls_0 + ls_56 + ls_16; Comment(ls_0); } int CntOrd(int a_cmd_0, int a_magic_4) { int l_count_8 = 0; for (int l_pos_12 = 0; l_pos_12 < OrdersTotal(); l_pos_12++) { OrderSelect(l_pos_12, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() == Symbol()) if (OrderType() == a_cmd_0 && OrderMagicNumber() == a_magic_4 || a_magic_4 == 0) l_count_8++; } return (l_count_8); } string ErrorDescription(int ai_0) { string ls_ret_4; switch (ai_0) { case 0: case 1: ls_ret_4 = "no error"; break; case 2: ls_ret_4 = "common error"; break; case 3: ls_ret_4 = "invalid trade parameters"; break; case 4: ls_ret_4 = "trade server is busy"; break; case 5: ls_ret_4 = "old version of the client terminal"; break; case 6: ls_ret_4 = "no connection with trade server"; break; case 7: ls_ret_4 = "not enough rights"; break; case 8: ls_ret_4 = "too frequent requests"; break; case 9: ls_ret_4 = "malfunctional trade operation"; break; case 64: ls_ret_4 = "account disabled"; break; case 65: ls_ret_4 = "invalid account"; break; case 128: ls_ret_4 = "trade timeout"; break; case 129: ls_ret_4 = "invalid price"; break; case 130: ls_ret_4 = "invalid stops"; break; case 131: ls_ret_4 = "invalid trade volume"; break; case 132: ls_ret_4 = "market is closed"; break; case 133: ls_ret_4 = "trade is disabled"; break; case 134: ls_ret_4 = "not enough money"; break; case 135: ls_ret_4 = "price changed"; break; case 136: ls_ret_4 = "off quotes"; break; case 137: ls_ret_4 = "broker is busy"; break; case 138: ls_ret_4 = "requote"; break; case 139: ls_ret_4 = "order is locked"; break; case 140: ls_ret_4 = "long positions only allowed"; break; case 141: ls_ret_4 = "too many requests"; break; case 145: ls_ret_4 = "modification denied because order too close to market"; break; case 146: ls_ret_4 = "trade context is busy"; break; case 4000: ls_ret_4 = "no error"; break; case 4001: ls_ret_4 = "wrong function pointer"; break; case 4002: ls_ret_4 = "array index is out of range"; break; case 4003: ls_ret_4 = "no memory for function call stack"; break; case 4004: ls_ret_4 = "recursive stack overflow"; break; case 4005: ls_ret_4 = "not enough stack for parameter"; break; case 4006: ls_ret_4 = "no memory for parameter string"; break; case 4007: ls_ret_4 = "no memory for temp string"; break; case 4008: ls_ret_4 = "not initialized string"; break; case 4009: ls_ret_4 = "not initialized string in array"; break; case 4010: ls_ret_4 = "no memory for array\' string"; break; case 4011: ls_ret_4 = "too long string"; break; case 4012: ls_ret_4 = "remainder from zero divide"; break; case 4013: ls_ret_4 = "zero divide"; break; case 4014: ls_ret_4 = "unknown command"; break; case 4015: ls_ret_4 = "wrong jump (never generated error)"; break; case 4016: ls_ret_4 = "not initialized array"; break; case 4017: ls_ret_4 = "dll calls are not allowed"; break; case 4018: ls_ret_4 = "cannot load library"; break; case 4019: ls_ret_4 = "cannot call function"; break; case 4020: ls_ret_4 = "expert function calls are not allowed"; break; case 4021: ls_ret_4 = "not enough memory for temp string returned from function"; break; case 4022: ls_ret_4 = "system is busy (never generated error)"; break; case 4050: ls_ret_4 = "invalid function parameters count"; break; case 4051: ls_ret_4 = "invalid function parameter value"; break; case 4052: ls_ret_4 = "string function internal error"; break; case 4053: ls_ret_4 = "some array error"; break; case 4054: ls_ret_4 = "incorrect series array using"; break; case 4055: ls_ret_4 = "custom indicator error"; break; case 4056: ls_ret_4 = "arrays are incompatible"; break; case 4057: ls_ret_4 = "global variables processing error"; break; case 4058: ls_ret_4 = "global variable not found"; break; case 4059: ls_ret_4 = "function is not allowed in testing mode"; break; case 4060: ls_ret_4 = "function is not confirmed"; break; case 4061: ls_ret_4 = "send mail error"; break; case 4062: ls_ret_4 = "string parameter expected"; break; case 4063: ls_ret_4 = "integer parameter expected"; break; case 4064: ls_ret_4 = "double parameter expected"; break; case 4065: ls_ret_4 = "array as parameter expected"; break; case 4066: ls_ret_4 = "requested history data in update state"; break; case 4099: ls_ret_4 = "end of file"; break; case 4100: ls_ret_4 = "some file error"; break; case 4101: ls_ret_4 = "wrong file name"; break; case 4102: ls_ret_4 = "too many opened files"; break; case 4103: ls_ret_4 = "cannot open file"; break; case 4104: ls_ret_4 = "incompatible access to a file"; break; case 4105: ls_ret_4 = "no order selected"; break; case 4106: ls_ret_4 = "unknown symbol"; break; case 4107: ls_ret_4 = "invalid price parameter for trade function"; break; case 4108: ls_ret_4 = "invalid ticket"; break; case 4109: ls_ret_4 = "trade is not allowed"; break; case 4110: ls_ret_4 = "longs are not allowed"; break; case 4111: ls_ret_4 = "shorts are not allowed"; break; case 4200: ls_ret_4 = "object is already exist"; break; case 4201: ls_ret_4 = "unknown object property"; break; case 4202: ls_ret_4 = "object is not exist"; break; case 4203: ls_ret_4 = "unknown object type"; break; case 4204: ls_ret_4 = "no object name"; break; case 4205: ls_ret_4 = "object coordinates error"; break; case 4206: ls_ret_4 = "no specified subwindow"; break; default: ls_ret_4 = "unknown error"; } return (ls_ret_4); } int Write(string as_0) { int l_file_8 = FileOpen(g_name_520, FILE_CSV|FILE_WRITE|FILE_READ, "/t"); FileSeek(l_file_8, 0, SEEK_END); FileWrite(l_file_8, " Time " + TimeToStr(TimeCurrent(), TIME_DATE|TIME_SECONDS) + ": " + as_0); FileClose(l_file_8); Print(as_0); return (0); } int OrdSend(string a_symbol_0, int ai_8, double a_lots_12, double ad_20, int a_slippage_28, double ad_32, double ad_40, string a_comment_48 = "", int a_magic_56 = 0, int a_datetime_60 = 0, color a_color_64 = -1) { int l_ticket_80; int l_ticket_84; int l_stoplevel_68 = MarketInfo(a_symbol_0, MODE_STOPLEVEL); double ld_72 = 0; int l_count_88 = 0; switch (ai_8) { case 0: if (!IsTradeContextBusy() && IsTradeAllowed()) { while (l_count_88 < gi_428) { RefreshRates(); l_ticket_80 = OrderSend(a_symbol_0, OP_BUY, a_lots_12, Ask, a_slippage_28, 0, 0, a_comment_48, a_magic_56, a_datetime_60, a_color_64); if (l_ticket_80 <= 0) { Write("Error Occured : " + ErrorDescription(GetLastError())); Write(Symbol() + " Buy @ " + Ask + " SL @ " + ad_32 + " TP @" + ad_40 + " ticket =" + l_ticket_80); l_count_88++; } else { l_count_88 = gi_428; Write("Order opened : " + Symbol() + " Buy @ " + Ask + " SL @ " + ad_32 + " TP @" + ad_40 + " ticket =" + l_ticket_80); } Sleep(1000 * gi_432); } } l_ticket_84 = l_ticket_80; break; case 1: if (!IsTradeContextBusy() && IsTradeAllowed()) { while (l_count_88 < gi_428) { RefreshRates(); l_ticket_80 = OrderSend(a_symbol_0, OP_SELL, a_lots_12, Bid, a_slippage_28, 0, 0, a_comment_48, a_magic_56, a_datetime_60, a_color_64); if (l_ticket_80 <= 0) { Write("Error Occured : " + ErrorDescription(GetLastError())); Write(Symbol() + " Sell @ " + Bid + " SL @ " + ad_32 + " TP @" + ad_40 + " ticket =" + l_ticket_80); l_count_88++; } else { l_count_88 = gi_428; Write("Order opened : " + Symbol() + " Sell @ " + Bid + " SL @ " + ad_32 + " TP @" + ad_40 + " ticket =" + l_ticket_80); } Sleep(1000 * gi_432); } } l_ticket_84 = l_ticket_80; break; case 4: while (l_count_88 < gi_428) { RefreshRates(); if (ad_20 - Ask < l_stoplevel_68 * Point) ld_72 = Ask + l_stoplevel_68 * Point; else ld_72 = ad_20; l_ticket_80 = OrderSend(a_symbol_0, OP_BUYSTOP, a_lots_12, NormalizeDouble(ld_72, Digits), a_slippage_28, 0, 0, a_comment_48, a_magic_56, a_datetime_60, a_color_64); if (l_ticket_80 <= 0) { Write("Error Occured : " + ErrorDescription(GetLastError())); Write(Symbol() + " Buy Stop @ " + ld_72 + " SL @ " + ad_32 + " TP @" + ad_40 + " ticket =" + l_ticket_80); l_count_88++; } else { l_count_88 = gi_428; Write("Order opened : " + Symbol() + " Buy Stop@ " + ld_72 + " SL @ " + ad_32 + " TP @" + ad_40 + " ticket =" + l_ticket_80); } Sleep(1000 * gi_432); } l_ticket_84 = l_ticket_80; break; case 5: if (!IsTradeContextBusy() && IsTradeAllowed()) { while (l_count_88 < gi_428) { RefreshRates(); if (Bid - ad_20 < l_stoplevel_68 * Point) ld_72 = Bid - l_stoplevel_68 * Point; else ld_72 = ad_20; l_ticket_80 = OrderSend(a_symbol_0, OP_SELLSTOP, a_lots_12, NormalizeDouble(ld_72, Digits), a_slippage_28, 0, 0, a_comment_48, a_magic_56, a_datetime_60, a_color_64); if (l_ticket_80 <= 0) { Write("Error Occured : " + ErrorDescription(GetLastError())); Write(Symbol() + " Sell Stop @ " + ld_72 + " SL @ " + ad_32 + " TP @" + ad_40 + " ticket =" + l_ticket_80); l_count_88++; } else { l_count_88 = gi_428; Write("Order opened : " + Symbol() + " Sell Stop @ " + ld_72 + " SL @ " + ad_32 + " TP @" + ad_40 + " ticket =" + l_ticket_80); } Sleep(1000 * gi_432); } } l_ticket_84 = l_ticket_80; break; case 2: if (!IsTradeContextBusy() && IsTradeAllowed()) { while (l_count_88 < gi_428) { RefreshRates(); if (Ask - ad_20 < l_stoplevel_68 * Point) ld_72 = Ask - l_stoplevel_68 * Point; else ld_72 = ad_20; l_ticket_80 = OrderSend(a_symbol_0, OP_BUYLIMIT, a_lots_12, NormalizeDouble(ld_72, Digits), a_slippage_28, 0, 0, a_comment_48, a_magic_56, a_datetime_60, a_color_64); if (l_ticket_80 <= 0) { Write("Error Occured : " + ErrorDescription(GetLastError())); Write(Symbol() + " Buy Limit @ " + ld_72 + " SL @ " + ad_32 + " TP @" + ad_40 + " ticket =" + l_ticket_80); l_count_88++; } else { l_count_88 = gi_428; Write("Order opened : " + Symbol() + " Buy Limit @ " + ld_72 + " SL @ " + ad_32 + " TP @" + ad_40 + " ticket =" + l_ticket_80); } Sleep(1000 * gi_432); } } l_ticket_84 = l_ticket_80; break; case 3: if (!IsTradeContextBusy() && IsTradeAllowed()) { while (l_count_88 < gi_428) { RefreshRates(); if (ad_20 - Bid < l_stoplevel_68 * Point) ld_72 = Bid + l_stoplevel_68 * Point; else ld_72 = ad_20; l_ticket_80 = OrderSend(a_symbol_0, OP_BUYLIMIT, a_lots_12, NormalizeDouble(ld_72, Digits), a_slippage_28, 0, 0, a_comment_48, a_magic_56, a_datetime_60, a_color_64); if (l_ticket_80 <= 0) { Write("Error Occured : " + ErrorDescription(GetLastError())); Write(Symbol() + " Sell Limit @ " + ld_72 + " SL @ " + ad_32 + " TP @" + ad_40 + " ticket =" + l_ticket_80); l_count_88++; } else { l_count_88 = gi_428; Write("Order opened : " + Symbol() + " Sell Limit @ " + ld_72 + " SL @ " + ad_32 + " TP @" + ad_40 + " ticket =" + l_ticket_80); } Sleep(1000 * gi_432); } l_ticket_84 = l_ticket_80; } break; default: Write("No valid type of order found"); l_ticket_84 = -1; } return (l_ticket_84); } int OrdClose(int a_ticket_0, double a_lots_4, double ad_12, int a_slippage_20, color a_color_24 = -1) { int l_ord_close_36; double ld_unused_28 = 0; int l_count_44 = 0; if (!IsTradeContextBusy() && IsTradeAllowed()) { while (l_count_44 < gi_428) { RefreshRates(); l_ord_close_36 = OrderClose(a_ticket_0, a_lots_4, NormalizeDouble(ad_12, Digits), a_slippage_20, a_color_24); if (l_ord_close_36 == 0) { Write("Error Occured : " + ErrorDescription(GetLastError())); Write(Symbol() + " Close @ " + ad_12 + " ticket =" + a_ticket_0); l_count_44++; } else { l_count_44 = gi_428; Write("Order closed : " + Symbol() + " Close @ " + ad_12 + " ticket =" + a_ticket_0); } Sleep(1000 * gi_432); } } int l_ord_close_40 = l_ord_close_36; return (l_ord_close_40); } int OrdModify(int a_ticket_0, double ad_4, double ad_12, double ad_20, int a_datetime_28, color a_color_32 = -1) { bool l_bool_44; double ld_unused_36 = 0; int l_count_52 = 0; if (!IsTradeContextBusy() && IsTradeAllowed()) { while (l_count_52 < gi_428) { RefreshRates(); l_bool_44 = OrderModify(a_ticket_0, NormalizeDouble(ad_4, Digits), NormalizeDouble(ad_12, Digits), NormalizeDouble(ad_20, Digits), a_datetime_28, a_color_32); if (l_bool_44 == FALSE) { Write("Error Occured : " + ErrorDescription(GetLastError())); Write(Symbol() + " Modify @ " + ad_4 + " SL @ " + ad_12 + " TP @" + ad_20 + " ticket =" + a_ticket_0); l_count_52++; } else { l_count_52 = gi_428; Write("Order modified : " + Symbol() + " Modify @ " + ad_4 + " SL @ " + ad_12 + " TP @" + ad_20 + " ticket =" + a_ticket_0); } Sleep(1000 * gi_432); } } int l_bool_48 = l_bool_44; return (l_bool_48); } void TrailingPositions() { double l_bid_0; double l_ask_8; double l_point_16 = MarketInfo(OrderSymbol(), MODE_POINT); if (OrderType() == OP_BUY) { l_bid_0 = MarketInfo(OrderSymbol(), MODE_BID); if (BreakEven > 0) { if (l_bid_0 - OrderOpenPrice() > BreakEven * l_point_16) if (OrderStopLoss() - OrderOpenPrice() < 0.0) ModifyStopLoss(OrderOpenPrice() + 0.0 * l_point_16); } if (TrailingStop > 0) { if (l_bid_0 - OrderOpenPrice() > TrailingStop * l_point_16) { if (OrderStopLoss() < l_bid_0 - (TrailingStop + TrailingStep - 1) * l_point_16) { ModifyStopLoss(l_bid_0 - TrailingStop * l_point_16); return; } } } } if (OrderType() == OP_SELL) { l_ask_8 = MarketInfo(OrderSymbol(), MODE_ASK); if (BreakEven > 0) { if (OrderOpenPrice() - l_ask_8 > BreakEven * l_point_16) if (OrderOpenPrice() - OrderStopLoss() < 0.0) ModifyStopLoss(OrderOpenPrice() - 0.0 * l_point_16); } if (TrailingStop > 0) { if (OrderOpenPrice() - l_ask_8 > TrailingStop * l_point_16) if (OrderStopLoss() > l_ask_8 + (TrailingStop + TrailingStep - 1) * l_point_16 || OrderStopLoss() == 0.0) ModifyStopLoss(l_ask_8 + TrailingStop * l_point_16); } } } void ModifyStopLoss(double ad_0) { PlaySound("alert.wav"); int li_8 = OrdModify(OrderTicket(), OrderOpenPrice(), ad_0, OrderTakeProfit(), 0, CLR_NONE); }