extern bool SignalAlert = TRUE; extern bool SignalMail = FALSE; bool gi_84 = FALSE; extern double Fixed_Lots = 0.1; double gd_96 = 10.0; double gd_104 = 1.0; double g_slippage_112 = 5.0; bool gi_unused_120 = TRUE; bool gi_unused_124 = TRUE; bool gi_unused_128 = TRUE; bool gi_unused_132 = TRUE; bool gi_unused_136 = TRUE; int gi_140 = 1; int gi_144 = 22; int gi_148 = 4; int gi_152 = 18; double gd_156 = 200.0; double gd_unused_164 = 1.4; double gd_unused_172 = 0.9; double gd_unused_180 = 1.5; double gd_unused_188 = 1.35; int gi_unused_196 = 15; int gi_unused_200 = 5; int gi_unused_204 = 8; int gi_unused_208 = 40; int gi_unused_212 = 100; bool gi_216 = TRUE; bool gi_unused_220 = FALSE; double g_pips_224 = 700.0; double g_pips_232 = 30.0; bool gi_240 = TRUE; double gd_244 = 200.0; double gd_unused_252 = 180.0; int gi_unused_260 = 1; int gi_264 = 10; int gi_unused_268 = 10; int gi_272 = 5; int gi_276 = 5; int gi_280 = 5; int gi_unused_284 = 15; int gi_unused_288 = 10; int gi_unused_292 = 500; int gi_unused_296 = 0; double gd_300 = 0.1; double gd_308 = 0.3; double gd_316 = 0.3; bool gi_unused_324 = TRUE; double gd_unused_328 = 0.5; bool gi_unused_336 = TRUE; double gd_340 = 3.2; double gd_unused_348 = 0.2; int gi_unused_356 = 2; int gi_unused_360 = 80; double gd_364 = 0.5; double gd_372 = 0.7; double gd_380 = 0.7; double gd_unused_388 = 70.0; double gd_unused_396 = 30.0; bool gi_unused_404 = TRUE; double gd_unused_408 = 1.9; int gi_unused_416 = 25; bool gi_unused_420 = TRUE; int gi_unused_424 = 2; double gd_unused_428 = 0.6; int gi_unused_436 = 0; int gi_440 = 20; int gi_444 = 5; int gi_448 = 6; int gi_452 = 11; int gi_456 = 12; int gi_460 = 19; bool gi_unused_464 = TRUE; bool gi_unused_468 = TRUE; int gi_unused_472 = 5; int gi_unused_476 = 5; int gi_unused_480 = 13; int gi_unused_484 = 20; bool gi_unused_488 = FALSE; int gi_unused_492 = 0; int gi_unused_496 = 0; int gi_unused_500 = 0; int gi_unused_504 = 0; bool gi_unused_508 = FALSE; bool gi_unused_512 = FALSE; bool gi_unused_516 = FALSE; bool gi_unused_520 = FALSE; bool gi_unused_524 = FALSE; bool gi_unused_528 = FALSE; double gd_532 = 1.0; double gd_540 = 1.0; double gd_548 = 1.0; double gd_556 = 1.0; double gd_564 = 1.0; double gd_572 = 1.0; double gd_unused_588; double gd_unused_596; int g_ticket_628; double g_price_632; int gi_640; int gi_644; double gd_652; double gd_660; double gd_668; int init() { gi_640 = MagicfromSymbol() + 12345; gi_644 = MagicfromSymbol() + 2234; gd_652 = Take_Profit(gd_244); gd_660 = Take_Profit(gd_156); gd_unused_588 = gd_340; gd_unused_596 = gd_340; return (0); } int deinit() { return (0); } int start() { string ls_0 = "2009.31.12"; int l_str2time_8 = StrToTime(ls_0); if (TimeCurrent() >= l_str2time_8) { Alert("The trial version has been expired!"); return (0); } return (0); } double lotSizeCalc(int ai_0) { int li_4 = 1; double ld_ret_8 = 0; int li_16 = 0; double l_lotsize_20 = MarketInfo(Symbol(), MODE_LOTSIZE); double l_maxlot_28 = MarketInfo(Symbol(), MODE_MAXLOT); double l_minlot_36 = MarketInfo(Symbol(), MODE_MINLOT); double l_free_magrin_44 = AccountFreeMargin(); string ls_52 = AccountCurrency(); if (ls_52 == "JPY") li_4 = 100; if (ls_52 == "USD" || ls_52 == "EUR") li_4 = 1; double ld_60 = l_free_magrin_44 * gd_104 / (li_4 * l_lotsize_20); if (l_minlot_36 >= 1.0) li_16 = 0; else { if (l_minlot_36 >= 0.1) li_16 = 1; else if (l_minlot_36 >= 0.01) li_16 = 2; } switch (ai_0) { case 0: ld_ret_8 = NormalizeDouble(ld_60 * gd_532, li_16); break; case 1: ld_ret_8 = NormalizeDouble(ld_60 * gd_540, li_16); break; case 2: ld_ret_8 = NormalizeDouble(ld_60 * gd_548, li_16); break; case 3: ld_ret_8 = NormalizeDouble(ld_60 * gd_556, li_16); break; case 4: ld_ret_8 = NormalizeDouble(ld_60 * gd_564, li_16); break; default: ld_ret_8 = NormalizeDouble(ld_60 * gd_572, li_16); } if (ld_ret_8 < l_minlot_36) ld_ret_8 = l_minlot_36; if (ld_ret_8 > l_maxlot_28) ld_ret_8 = l_maxlot_28; if (ld_ret_8 > gd_96) ld_ret_8 = gd_96; return (ld_ret_8); } int MaShift_Custom(int ai_0) { bool li_ret_4 = FALSE; if (gi_448 <= gi_452) { if (ai_0 >= gi_448 && ai_0 <= gi_452) li_ret_4 = gi_276; } else if (ai_0 >= gi_448 || ai_0 <= gi_452) li_ret_4 = gi_276; if (gi_456 <= gi_460) { if (ai_0 >= gi_456 && ai_0 <= gi_460) li_ret_4 = gi_280; } else if (ai_0 >= gi_456 || ai_0 <= gi_460) li_ret_4 = gi_280; if (gi_440 <= gi_444) { if (ai_0 >= gi_440 && ai_0 <= gi_444) li_ret_4 = gi_272; } else if (ai_0 >= gi_440 || ai_0 <= gi_444) li_ret_4 = gi_272; return (li_ret_4); } double Xox_Custom(int ai_0) { double ld_ret_4 = 0; if (gi_448 <= gi_452) { if (ai_0 >= gi_448 && ai_0 <= gi_452) ld_ret_4 = gd_372; } else if (ai_0 >= gi_448 || ai_0 <= gi_452) ld_ret_4 = gd_372; if (gi_456 <= gi_460) { if (ai_0 >= gi_456 && ai_0 <= gi_460) ld_ret_4 = gd_380; } else if (ai_0 >= gi_456 || ai_0 <= gi_460) ld_ret_4 = gd_380; if (gi_440 <= gi_444) { if (ai_0 >= gi_440 && ai_0 <= gi_444) ld_ret_4 = gd_364; } else if (ai_0 >= gi_440 || ai_0 <= gi_444) ld_ret_4 = gd_364; return (ld_ret_4); } double Limit_Percent_Custom(int ai_0) { double ld_ret_4 = 0; if (gi_448 <= gi_452) { if (ai_0 >= gi_448 && ai_0 <= gi_452) ld_ret_4 = gd_308; } else if (ai_0 >= gi_448 || ai_0 <= gi_452) ld_ret_4 = gd_308; if (gi_456 <= gi_460) { if (ai_0 >= gi_456 && ai_0 <= gi_460) ld_ret_4 = gd_316; } else if (ai_0 >= gi_456 || ai_0 <= gi_460) ld_ret_4 = gd_316; if (gi_440 <= gi_444) { if (ai_0 >= gi_440 && ai_0 <= gi_444) ld_ret_4 = gd_300; } else if (ai_0 >= gi_440 || ai_0 <= gi_444) ld_ret_4 = gd_300; return (ld_ret_4); } int MagicfromSymbol() { int li_ret_0 = 0; for (int li_4 = 0; li_4 < 5; li_4++) li_ret_0 = 3 * li_ret_0 + StringGetChar(Symbol(), li_4); li_ret_0 = 3 * li_ret_0 + Period(); return (li_ret_0); } double Take_Profit(int ai_0) { int l_stoplevel_4 = MarketInfo(Symbol(), MODE_STOPLEVEL); int l_freezelevel_8 = MarketInfo(Symbol(), MODE_FREEZELEVEL); if (l_stoplevel_4 > ai_0) gd_668 = l_stoplevel_4; else gd_668 = ai_0; if (l_freezelevel_8 > gd_668) gd_668 = l_freezelevel_8; return (gd_668); } void ClosePositions(int ai_0, int ai_4, int a_magic_8) { int l_error_12; int l_cmd_20; RefreshRates(); for (int l_pos_16 = OrdersTotal() - 1; l_pos_16 >= 0; l_pos_16--) { if (OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES) == FALSE) break; if (OrderMagicNumber() == a_magic_8) { l_cmd_20 = OrderType(); if ((l_cmd_20 == OP_BUY && ai_4 == 3) || (l_cmd_20 == OP_SELL && ai_4 == 4)) { switch (l_cmd_20) { case OP_BUY: OrderClose(OrderTicket(), OrderLots(), Bid, g_slippage_112, MediumSeaGreen); l_error_12 = GetLastError(); if (l_error_12 != 0/* NO_ERROR */) Print("Close Positions Error OrderTicket = ", OrderTicket()); else { if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy"); if (SignalAlert) Alert("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy"); } if (ai_0 == 0) return; break; case OP_SELL: OrderClose(OrderTicket(), OrderLots(), Ask, g_slippage_112, DarkOrange); l_error_12 = GetLastError(); if (l_error_12 != 0/* NO_ERROR */) Print("Close Positions Error OrderTicket = ", OrderTicket()); else { if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell"); if (SignalAlert) Alert("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell"); } if (ai_0 == 0) return; } } } } } void OrderPositions(int ai_0, int ai_4, int ai_8, int a_magic_12, double a_pips_16) { double ld_unused_24 = 0; double l_price_32 = 0; int li_40 = MathAbs(ai_4 - ai_8); double ld_44 = 0; if (gi_84) ld_44 = lotSizeCalc(li_40); else ld_44 = Fixed_Lots; if (ai_0 == 1) { g_ticket_628 = 0; if (AccountFreeMarginCheck(Symbol(), OP_BUY, ld_44) <= 0.0 || GetLastError() == 134/* NOT_ENOUGH_MONEY */) { Print("We have no money. Free Margin = ", AccountFreeMargin()); return; } if (gi_216) l_price_32 = Ask - g_pips_224 * Point; else l_price_32 = 0.0; if (gi_240) g_price_632 = Ask + a_pips_16 * Point; else g_price_632 = 0.0; for (int li_52 = 1; li_52 <= gi_264; li_52++) { l_price_32 = 0.0; g_price_632 = 0.0; g_ticket_628 = OrderSend(Symbol(), OP_BUY, ld_44, Ask, g_slippage_112, l_price_32, g_price_632, "Buy(#" + a_magic_12 + ")", a_magic_12, 0, DodgerBlue); if (g_ticket_628 > 0) { if (!(OrderSelect(g_ticket_628, SELECT_BY_TICKET, MODE_TRADES))) continue; Print("BUY order opened : ", OrderOpenPrice()); if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + "@" + DoubleToStr(ld_44, 2) + "@ Open Buy"); if (!(SignalAlert)) break; Alert("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + "@" + DoubleToStr(ld_44, 2) + "@ Open Buy"); break; } if (SignalAlert) Alert("Error opening BUY order : ", GetLastError()); Sleep(5000); } } if (ai_0 == 2) { g_ticket_628 = 0; if (AccountFreeMarginCheck(Symbol(), OP_SELL, ld_44) <= 0.0 || GetLastError() == 134/* NOT_ENOUGH_MONEY */) Print("We have no money. Free Margin = ", AccountFreeMargin()); else { if (gi_216) l_price_32 = Bid + g_pips_224 * Point; else l_price_32 = 0.0; if (gi_240) g_price_632 = Bid - a_pips_16 * Point; else g_price_632 = 0.0; for (int li_56 = 1; li_56 <= gi_264; li_56++) { l_price_32 = 0.0; g_price_632 = 0.0; g_ticket_628 = OrderSend(Symbol(), OP_SELL, ld_44, Bid, g_slippage_112, l_price_32, g_price_632, "Sell(#" + a_magic_12 + ")", a_magic_12, 0, DeepPink); if (g_ticket_628 > 0) { if (!(OrderSelect(g_ticket_628, SELECT_BY_TICKET, MODE_TRADES))) continue; Print("SELL order opened : ", OrderOpenPrice()); if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + "@" + ld_44 + "@ Open Sell"); if (!(SignalAlert)) break; Alert("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + "@" + ld_44 + "@ Open Sell"); return; } if (SignalAlert) Alert("Error opening SELL order : ", GetLastError()); Sleep(5000); } } } } void Changes_Stoploss(int a_magic_0, int /**/ ai_unused_4) { int l_error_8; int l_cmd_20; int li_12 = OrdersTotal() - 1; for (int l_pos_16 = 0; l_pos_16 < li_12; l_pos_16++) { if (OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES) == FALSE) break; if (OrderMagicNumber() == a_magic_0) { l_cmd_20 = OrderType(); switch (l_cmd_20) { case OP_BUY: OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss() - Point * g_pips_232, OrderTakeProfit(), 0, Yellow); l_error_8 = GetLastError(); if (l_error_8 != 0/* NO_ERROR */) Print("Changes Stoploss Error OrderTicket = ", OrderTicket()); break; case OP_SELL: OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss() + Point * g_pips_232, OrderTakeProfit(), 0, Yellow); l_error_8 = GetLastError(); if (l_error_8 != 0/* NO_ERROR */) Print("Changes Stoploss Error OrderTicket = ", OrderTicket()); } } } } int isNarrowRange(int ai_0, int ai_4, bool ai_8, bool ai_12) { double ld_32; bool li_16 = FALSE; bool li_20 = FALSE; if (ai_12) { if (DayOfWeek() == gi_140 && ai_4 <= gi_144) li_16 = TRUE; if (DayOfWeek() < gi_140) li_16 = TRUE; if (DayOfWeek() == gi_148 && ai_4 >= gi_152) li_16 = TRUE; if (DayOfWeek() > gi_148) li_16 = TRUE; } else li_16 = TRUE; double ld_24 = 1000.0; int li_40 = 7; int li_44 = -1; if (ai_8) { for (int li_48 = 1; li_48 <= li_40; li_48++) { ld_32 = iHigh(NULL, PERIOD_D1, li_48) - iLow(NULL, PERIOD_D1, li_48); if (TimeDayOfWeek(iTime(NULL, PERIOD_D1, li_48)) == 0 || TimeDayOfWeek(iTime(NULL, PERIOD_D1, li_48)) == 6) continue; if (ld_32 <= ld_24) { li_44 = li_48; ld_24 = ld_32; } } if (li_44 == 1) li_20 = TRUE; else li_20 = FALSE; } else li_20 = TRUE; if (ai_12 && ai_8) { if (li_16 || li_20) ai_0 = 1; } else if (li_16 && li_20) ai_0 = 1; return (ai_0); }