bool gi_76 = TRUE; int gi_80 = 120; int gi_84 = 65; int gi_88 = 3; double gd_92 = 0.6; int g_datetime_100; extern bool SignalAlert = TRUE; bool gi_108 = FALSE; bool gi_112 = FALSE; extern double Fixed_Lots = 0.1; double gd_124 = 10.0; double gd_132 = 1.0; double g_slippage_140 = 5.0; bool gi_148 = TRUE; bool gi_unused_152 = FALSE; double g_pips_156 = 100.0; double g_pips_164 = 30.0; bool gi_172 = FALSE; double g_pips_176 = 14.0; double g_pips_184 = 30.0; int gi_192 = 1; int gi_196 = 5; int g_period_200 = 10; int gi_204 = 5; int gi_208 = 5; int gi_212 = 5; int gi_216 = 15; int gi_220 = 10; int g_period_224 = 500; int gi_228 = 0; double gd_232 = 0.1; double gd_240 = 0.3; double gd_248 = 0.3; bool gi_256 = TRUE; double gd_260 = 0.5; bool gi_268 = TRUE; double gd_272 = 3.2; double gd_280 = 0.2; int gi_288 = 2; int gi_292 = 80; double gd_296 = 0.5; double gd_304 = 0.7; double gd_312 = 0.7; double gd_320 = 70.0; double gd_328 = 30.0; bool gi_336 = FALSE; double gd_340 = 1.9; int g_period_348 = 25; bool gi_352 = TRUE; int g_period_356 = 2; double gd_360 = 0.6; int gi_368 = 0; int gi_372 = 20; int gi_376 = 5; int gi_380 = 6; int gi_384 = 11; int gi_388 = 12; int gi_392 = 19; extern bool Weekend_Stop = TRUE; extern bool Weekend_Close = FALSE; int gi_404 = 5; int gi_408 = 5; int gi_412 = 13; int gi_416 = 20; bool gi_420 = FALSE; int gi_424 = 0; int gi_428 = 0; int gi_432 = 0; int gi_436 = 0; double gd_440 = 1.0; double gd_448 = 1.0; double gd_456 = 1.0; double gd_464 = 1.0; double gd_472 = 1.0; double gd_480 = 1.0; double gd_488; double gd_496; double gd_504; double gd_512; int gi_520; int g_ticket_536; double g_price_540; int gi_548; int gi_552; double gd_556; double g_ima_564; double g_ima_572; double g_ima_580; double g_ima_588; double g_ima_596; double g_ima_604; double g_ima_612; double gd_636; double gd_644; double g_high_652; double g_low_660; double g_irsi_668; double g_ima_676; double gd_684; double g_istddev_692; double gd_700; double gd_708; int init() { gi_548 = MagicfromSymbol() + 12345; gd_556 = Take_Profit(); gd_496 = gd_272; gd_504 = gd_272; return (0); } int deinit() { return (0); } int start() { int li_40; int li_44; int li_48; int l_datetime_64; double l_ord_open_price_68; double l_high_108; double l_low_116; if (AccountName() != "Shinya Hatta") return (0); int li_unused_0 = 0; int l_count_4 = 0; int l_count_8 = 0; bool li_12 = FALSE; bool li_16 = FALSE; bool li_20 = FALSE; bool li_24 = FALSE; int l_datetime_28 = TimeCurrent(); int l_hour_32 = TimeHour(l_datetime_28); int l_minute_36 = TimeMinute(l_datetime_28); if (!IsTradeAllowed()) return (0); if (gi_420) { li_40 = 60 * l_hour_32 + l_minute_36; li_44 = 60 * gi_424 + gi_428; li_48 = 60 * gi_432 + gi_436; if (li_44 < li_48 && li_44 < li_40 && li_40 < li_48) li_12 = TRUE; if (li_44 > li_48 && li_44 < li_40 || li_40 < li_48) li_12 = TRUE; } if (Weekend_Stop == TRUE && DayOfWeek() == gi_404 && l_hour_32 >= gi_412) li_12 = TRUE; if (Weekend_Stop == TRUE && DayOfWeek() > gi_404) li_12 = TRUE; if (Weekend_Close == TRUE && DayOfWeek() == gi_408 && l_hour_32 >= gi_416) li_16 = TRUE; if (Weekend_Close == TRUE && DayOfWeek() > gi_408) li_16 = TRUE; int li_52 = OrdersHistoryTotal() - 1; int l_count_56 = 0; for (int l_pos_60 = li_52; l_pos_60 >= 0; l_pos_60--) { if (OrderSelect(l_pos_60, SELECT_BY_POS, MODE_HISTORY) == TRUE) { if (OrderMagicNumber() != gi_548) continue; l_datetime_64 = OrderCloseTime(); l_ord_open_price_68 = OrderOpenPrice(); l_count_56++; } if (l_ord_open_price_68 > 0.0) break; } int l_hour_76 = TimeHour(l_datetime_28 - l_datetime_64); if (l_hour_76 >= 1 || l_count_56 == 0 || Ask <= l_ord_open_price_68 - g_pips_184 * Point) li_20 = TRUE; if (l_hour_76 >= 1 || l_count_56 == 0 || Bid >= l_ord_open_price_68 + g_pips_184 * Point) li_24 = TRUE; if (!gi_352) { li_20 = TRUE; li_24 = TRUE; } double l_ord_open_price_80 = 0; for (int l_pos_88 = 0; l_pos_88 < OrdersTotal(); l_pos_88++) { if (OrderSelect(l_pos_88, SELECT_BY_POS, MODE_TRADES) == TRUE) { if (OrderMagicNumber() == gi_548) { if (OrderType() == OP_BUY) l_count_4++; if (OrderType() == OP_SELL) l_count_8++; l_ord_open_price_80 = OrderOpenPrice(); } } } int li_92 = l_count_4 + l_count_8; if (li_92 == 0 || li_92 > gi_552) { gi_552 = li_92; if (gi_552 > 1 && gi_148 && gi_148) Changes_Stoploss(gi_548, gi_552); } int li_96 = l_hour_32 + gi_368; gi_520 = MaShift_Custom(li_96); gd_512 = Xox_Custom(li_96); gd_488 = Limit_Percent_Custom(li_96); RefreshRates(); g_ima_564 = iMA(NULL, 0, g_period_200, gi_520, MODE_SMA, PRICE_OPEN, 0); g_ima_572 = iMA(NULL, 0, 25, 0, MODE_EMA, PRICE_OPEN, 0); g_ima_580 = iMA(NULL, 0, 50, 0, MODE_EMA, PRICE_OPEN, 0); g_ima_588 = iMA(NULL, 0, 100, 0, MODE_EMA, PRICE_OPEN, 0); g_ima_596 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_OPEN, 0); g_ima_604 = iMA(NULL, 0, 300, 0, MODE_EMA, PRICE_OPEN, 0); g_ima_612 = iMA(NULL, 0, 400, 0, MODE_EMA, PRICE_OPEN, 0); double ld_100 = 0; for (l_pos_88 = 0; l_pos_88 < gi_216; l_pos_88++) { l_high_108 = High[iHighest(NULL, 0, MODE_OPEN, gi_220, l_pos_88)]; l_low_116 = Low[iLowest(NULL, 0, MODE_OPEN, gi_220, l_pos_88)]; ld_100 += MathLog(l_high_108 / l_low_116); } double ld_124 = ld_100 / gi_216; if (ld_124 < gd_488 / 100.0) ld_124 = gd_488 / 100.0; gd_636 = g_ima_564 * (ld_124 + 1.0); gd_644 = g_ima_564 * (1 - ld_124); gd_700 = g_ima_564 * (gd_260 / 100.0 + 1.0); gd_708 = g_ima_564 * (1 - gd_260 / 100.0); g_ima_676 = iMA(NULL, 0, g_period_224, gi_228, MODE_SMMA, PRICE_OPEN, 0); g_istddev_692 = iStdDev(NULL, PERIOD_H4, g_period_348, 0, MODE_EMA, PRICE_CLOSE, 0); g_high_652 = High[iHighest(NULL, 0, MODE_CLOSE, gi_292, 0)]; g_low_660 = Low[iLowest(NULL, 0, MODE_CLOSE, gi_292, 0)]; gd_684 = (g_high_652 - g_low_660) / (g_ima_676 / 100.0); g_irsi_668 = iRSI(NULL, 0, 14, PRICE_CLOSE, 0); double l_iatr_132 = iATR(NULL, 0, g_period_356, 0); bool li_140 = FALSE; bool li_144 = FALSE; if (!li_12 && l_count_4 < gi_192 && gd_684 >= gd_512 && g_irsi_668 <= gd_328 && gd_644 >= Ask && l_iatr_132 <= gd_360 && Ask <= l_ord_open_price_80 - g_pips_184 * Point || l_count_4 == 0) li_140 = TRUE; if (!li_20 || (!gi_336 && g_istddev_692 >= gd_340)) li_140 = FALSE; if (g_ima_612 > g_ima_604 && g_ima_604 > g_ima_596 && g_ima_596 > g_ima_588 && g_ima_588 > g_ima_580 && g_ima_580 > g_ima_572) li_140 = FALSE; if (gi_256 && !li_12 && li_20 && l_count_4 < gi_192 && g_ima_612 < g_ima_604 && g_ima_604 < g_ima_596 && g_ima_596 < g_ima_588 && g_ima_588 < g_ima_572 && gd_708 >= Ask && Ask <= l_ord_open_price_80 - g_pips_184 * Point || l_count_4 == 0) li_140 = TRUE; if (gi_268 && !li_12 && g_ima_612 > g_ima_604 && g_ima_604 > g_ima_596 && g_ima_596 > g_ima_588 && g_ima_588 > g_ima_580 && g_ima_580 > g_ima_572) { if (l_count_4 < gi_192 && gd_684 >= gd_496 && g_irsi_668 <= gd_328) { li_140 = TRUE; gd_496 += gd_280; } } else gd_496 = gd_272; if (li_140 == TRUE) { ClosePositions(1, 4, gi_548); OrderPositions(1, l_count_4, l_count_8, gi_548); li_140 = FALSE; li_20 = FALSE; return (0); } if (!li_12 && l_count_8 < gi_192 && gd_684 >= gd_512 && g_irsi_668 >= gd_320 && l_iatr_132 <= gd_360 && gd_636 <= Bid && Bid >= l_ord_open_price_80 + g_pips_184 * Point || l_count_8 == 0) li_144 = TRUE; if (!li_24 || (!gi_336 && g_istddev_692 > gd_340)) li_144 = FALSE; if (g_ima_612 < g_ima_604 && g_ima_604 < g_ima_596 && g_ima_596 < g_ima_588 && g_ima_588 < g_ima_580 && g_ima_580 < g_ima_572) li_144 = FALSE; if (gi_256 && !li_12 && li_24 && l_count_8 < gi_192 && g_ima_612 > g_ima_604 && g_ima_604 > g_ima_596 && g_ima_596 > g_ima_588 && g_ima_588 > g_ima_572 && gd_700 <= Bid && Bid >= l_ord_open_price_80 + g_pips_184 * Point || l_count_8 == 0) li_144 = TRUE; if (gi_268 && !li_12 && g_ima_612 < g_ima_604 && g_ima_604 < g_ima_596 && g_ima_596 < g_ima_588 && g_ima_588 < g_ima_580 && g_ima_580 < g_ima_572) { if (l_count_8 < gi_192 && gd_684 >= gd_504 && g_irsi_668 >= gd_320) { li_144 = TRUE; gd_504 += gd_280; } } else gd_504 = gd_272; if (li_144 == TRUE) { ClosePositions(1, 3, gi_548); OrderPositions(2, l_count_4, l_count_8, gi_548); li_144 = FALSE; li_24 = FALSE; return (0); } double ld_148 = Bid - l_ord_open_price_80; if (gi_172 && l_count_4 > 0 && gd_556 > g_pips_176 * Point && ld_148 > g_pips_176 * Point) ClosePositions(0, 3, gi_548); double ld_156 = l_ord_open_price_80 - Ask; if (gi_172 && l_count_8 > 0 && gd_556 > g_pips_176 * Point && ld_156 > g_pips_176 * Point) ClosePositions(0, 4, gi_548); switch (gi_552) { case 4: if (l_count_4 == 1) ClosePositions(1, 3, gi_548); if (l_count_8 == 1) ClosePositions(1, 4, gi_548); case 0: case 1: case 2: case 3: break; } if (l_count_4 > 0 && g_high_652 - Bid <= gi_288 * Point || gd_636 < Bid || li_16) { ClosePositions(1, 3, gi_548); return (0); } if (l_count_8 > 0 && Ask - g_low_660 <= gi_288 * Point || gd_644 > Ask || li_16) { ClosePositions(1, 4, gi_548); 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") li_4 = 1; double ld_60 = l_free_magrin_44 * gd_132 / (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_440, li_16); break; case 1: ld_ret_8 = NormalizeDouble(ld_60 * gd_448, li_16); break; case 2: ld_ret_8 = NormalizeDouble(ld_60 * gd_456, li_16); break; case 3: ld_ret_8 = NormalizeDouble(ld_60 * gd_464, li_16); break; case 4: ld_ret_8 = NormalizeDouble(ld_60 * gd_472, li_16); break; default: ld_ret_8 = NormalizeDouble(ld_60 * gd_480, 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_124) ld_ret_8 = gd_124; return (ld_ret_8); } int MaShift_Custom(int ai_0) { bool li_ret_4 = FALSE; if (gi_380 <= gi_384) { if (ai_0 >= gi_380 && ai_0 <= gi_384) li_ret_4 = gi_208; } else if (ai_0 >= gi_380 || ai_0 <= gi_384) li_ret_4 = gi_208; if (gi_388 <= gi_392) { if (ai_0 >= gi_388 && ai_0 <= gi_392) li_ret_4 = gi_212; } else if (ai_0 >= gi_388 || ai_0 <= gi_392) li_ret_4 = gi_212; if (gi_372 <= gi_376) { if (ai_0 >= gi_372 && ai_0 <= gi_376) li_ret_4 = gi_204; } else if (ai_0 >= gi_372 || ai_0 <= gi_376) li_ret_4 = gi_204; return (li_ret_4); } double Xox_Custom(int ai_0) { double ld_ret_4 = 0; if (gi_380 <= gi_384) { if (ai_0 >= gi_380 && ai_0 <= gi_384) ld_ret_4 = gd_304; } else if (ai_0 >= gi_380 || ai_0 <= gi_384) ld_ret_4 = gd_304; if (gi_388 <= gi_392) { if (ai_0 >= gi_388 && ai_0 <= gi_392) ld_ret_4 = gd_312; } else if (ai_0 >= gi_388 || ai_0 <= gi_392) ld_ret_4 = gd_312; if (gi_372 <= gi_376) { if (ai_0 >= gi_372 && ai_0 <= gi_376) ld_ret_4 = gd_296; } else if (ai_0 >= gi_372 || ai_0 <= gi_376) ld_ret_4 = gd_296; return (ld_ret_4); } double Limit_Percent_Custom(int ai_0) { double l_high_12; double l_low_20; double ld_ret_4 = 0; if (gi_380 <= gi_384) { if (ai_0 >= gi_380 && ai_0 <= gi_384) ld_ret_4 = gd_240; } else if (ai_0 >= gi_380 || ai_0 <= gi_384) ld_ret_4 = gd_240; if (gi_388 <= gi_392) { if (ai_0 >= gi_388 && ai_0 <= gi_392) ld_ret_4 = gd_248; } else if (ai_0 >= gi_388 || ai_0 <= gi_392) ld_ret_4 = gd_248; if (gi_372 <= gi_376) { if (ai_0 >= gi_372 && ai_0 <= gi_376) ld_ret_4 = gd_232; } else if (ai_0 >= gi_372 || ai_0 <= gi_376) ld_ret_4 = gd_232; if (gi_76) { l_high_12 = High[iHighest(NULL, 0, MODE_OPEN, gi_80, 0)]; l_low_20 = Low[iLowest(NULL, 0, MODE_OPEN, gi_80, 0)]; if (l_high_12 - l_low_20 < gi_84 * Point) g_datetime_100 = TimeCurrent(); if (g_datetime_100 != 0) { if (TimeCurrent() - g_datetime_100 < 60 * gi_88) ld_ret_4 = gd_92; else g_datetime_100 = 0; } } 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 l_stoplevel_0 = MarketInfo(Symbol(), MODE_STOPLEVEL); int l_freezelevel_4 = MarketInfo(Symbol(), MODE_FREEZELEVEL); if (l_stoplevel_0 > g_pips_176) gd_556 = l_stoplevel_0; else gd_556 = g_pips_176; if (l_freezelevel_4 > gd_556) gd_556 = l_freezelevel_4; return (gd_556); } 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_140, MediumSeaGreen); l_error_12 = GetLastError(); if (l_error_12 != 0/* NO_ERROR */) Print("Close Positions Error OrderTicket = ", OrderTicket()); else { if (gi_108) 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_140, DarkOrange); l_error_12 = GetLastError(); if (l_error_12 != 0/* NO_ERROR */) Print("Close Positions Error OrderTicket = ", OrderTicket()); else { if (gi_108) 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 ld_unused_16 = 0; double l_price_24 = 0; int li_32 = MathAbs(ai_4 - ai_8); double ld_36 = 0; if (gi_112) ld_36 = lotSizeCalc(li_32); else ld_36 = Fixed_Lots; if (ai_0 == 1) { g_ticket_536 = 0; if (AccountFreeMarginCheck(Symbol(), OP_BUY, ld_36) <= 0.0 || GetLastError() == 134/* NOT_ENOUGH_MONEY */) { Print("We have no money. Free Margin = ", AccountFreeMargin()); return; } if (gi_148) l_price_24 = Ask - g_pips_156 * Point; else l_price_24 = 0.0; if (gi_172) g_price_540 = Ask + gd_556 * Point; else g_price_540 = 0.0; for (int li_44 = 1; li_44 <= gi_196; li_44++) { g_ticket_536 = OrderSend(Symbol(), OP_BUY, ld_36, Ask, g_slippage_140 * Point, l_price_24, g_price_540, "Buy(#" + a_magic_12 + ")", a_magic_12, 0, DodgerBlue); if (g_ticket_536 > 0) { if (OrderSelect(g_ticket_536, SELECT_BY_TICKET, MODE_TRADES)) { Print("BUY order opened : ", OrderOpenPrice()); if (gi_108) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + "@" + DoubleToStr(ld_36, 2) + "@ Open Buy"); if (!(SignalAlert)) break; Alert("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + "@" + DoubleToStr(ld_36, 2) + "@ Open Buy"); break; } if (SignalAlert) Alert("Error opening BUY order : ", GetLastError()); Sleep(5000); } } } if (ai_0 == 2) { g_ticket_536 = 0; if (AccountFreeMarginCheck(Symbol(), OP_SELL, ld_36) <= 0.0 || GetLastError() == 134/* NOT_ENOUGH_MONEY */) Print("We have no money. Free Margin = ", AccountFreeMargin()); else { if (gi_148) l_price_24 = Bid + g_pips_156 * Point; else l_price_24 = 0.0; if (gi_172) g_price_540 = Bid - gd_556 * Point; else g_price_540 = 0.0; for (int li_48 = 1; li_48 <= gi_196; li_48++) { g_ticket_536 = OrderSend(Symbol(), OP_SELL, ld_36, Bid, g_slippage_140 * Point, l_price_24, g_price_540, "Sell(#" + a_magic_12 + ")", a_magic_12, 0, DeepPink); if (g_ticket_536 > 0) { if (OrderSelect(g_ticket_536, SELECT_BY_TICKET, MODE_TRADES)) { Print("SELL order opened : ", OrderOpenPrice()); if (gi_108) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + "@" + ld_36 + "@ Open Sell"); if (!(SignalAlert)) break; Alert("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + "@" + ld_36 + "@ 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_164, 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_164, OrderTakeProfit(), 0, Yellow); l_error_8 = GetLastError(); if (l_error_8 != 0/* NO_ERROR */) Print("Changes Stoploss Error OrderTicket = ", OrderTicket()); } } } }