#property copyright "Copyright © www.EA-BOSS.com" #property link "ea-boss-team@mail.ru" #import "Boss-Demo.DLL" bool fun2(double a0, int a1, double a2, double a3, int a4, int a5, double a6); bool fun3(double a0, int a1, double a2, double a3, int a4, int a5, double a6); bool fun4(double a0, int a1, int a2); #import extern string Use_EA_BOSS_only_on = "EURGPB,EURCHF,GBPCHF,USDCAD"; bool gi_84 = TRUE; double gd_unused_88 = 0.1; bool gi_unused_96 = FALSE; double gd_unused_100 = 1.5; double gd_unused_108 = 10.0; double gd_116 = 0.1; int gi_124 = 1; extern int MM_percent_0_100 = 5; extern int GMT_hours_plus = 2; double gd_136 = 100.0; bool gi_144 = TRUE; bool gi_148 = TRUE; int gi_152 = 0; bool gi_156 = TRUE; bool gi_160 = TRUE; bool gi_164 = FALSE; int gi_168 = 0; bool gi_172 = FALSE; int g_period_176 = 100; int g_applied_price_180 = PRICE_CLOSE; int g_ma_method_184 = MODE_SMA; int g_magic_188 = 543210; int g_color_192 = Blue; int g_color_196 = Red; bool gi_200 = TRUE; bool gi_204 = FALSE; bool gi_208 = TRUE; string gs_unused_212 = "012345"; int gi_220 = 6; int gi_224 = 112; int gi_228 = 25; int gi_232 = 60; int gi_236 = 3; int gi_240 = 140; int gi_244 = 2; int gi_248 = 170; int gi_252 = 0; int gi_256 = 200; int gi_260 = -1; int gi_264 = 240; int gi_268 = 0; double gd_272 = 0.3; int gi_280 = 5; int gi_284 = 53; int gi_288 = 25; int gi_292 = 75; int gi_296 = 3; int gi_300 = 100; int gi_304 = 2; int gi_308 = 135; int gi_312 = 0; int gi_316 = 210; int gi_320 = -1; int gi_324 = 245; int gi_328 = 0; double gd_332 = 0.2; int gi_340 = 10; int gi_344 = 75; int gi_348 = 75; int gi_352 = 80; int gi_356 = 3; int gi_360 = 145; int gi_364 = 2; int gi_368 = 180; int gi_372 = 0; int gi_376 = 205; int gi_380 = -1; int gi_384 = 250; int gi_388 = 0; double gd_392 = 0.15; int gi_400 = 10; int gi_404 = 58; int gi_408 = 23; int gi_412 = 80; int gi_416 = 3; int gi_420 = 145; int gi_424 = 2; int gi_428 = 180; int gi_432 = 0; int gi_436 = 205; int gi_440 = -1; int gi_444 = 250; int gi_448 = 0; double gd_452 = 0.35; int gi_460 = 20; int gi_464 = 1; int gi_468 = 50; int g_period_472 = 8; int g_period_476 = 6; int gi_480 = 30; int g_period_484 = 20; int gi_488 = 36; int gi_492 = 20; int g_period_496 = 5; int g_applied_price_500 = PRICE_CLOSE; int g_ma_method_504 = MODE_SMA; int gi_508 = 4; int gi_512 = 3; int gi_516 = 150; int gi_520 = 21; int gi_524 = 40; int gi_528 = 21; bool gi_536 = TRUE; int gi_540; double gd_544; double g_maxlot_552; double g_minlot_560; double g_lotstep_568; double gd_576; string g_symbol_584; bool gi_592 = TRUE; bool gi_596 = TRUE; int g_datetime_600; int g_datetime_604; int g_datetime_608; int gi_612; int gi_616; int gi_620; int gi_624; int gi_628; int gi_632; int gi_636; int gi_640; int gi_644; int gi_648; int gi_652; int gi_656; int gi_660; int gi_664; int gi_668; int gi_672; int gi_676; int gi_680; int gi_684; int gi_688; int gi_692; int gi_696; int gi_700; int gi_704; double gd_708; double gd_716; double gd_724; double gd_732; double gd_740; double gd_748; double gd_756; double gd_764; double gd_772; double gd_780; double gd_788; double gda_unused_944[]; double gda_unused_948[]; string gs_dummy_952; string gs_dummy_960; string gs_dummy_968; bool gi_unused_976 = TRUE; int init() { string ls_0; gi_536 = TRUE; Comment("Waiting for quotes..."); if (!IsDllsAllowed()) { Alert("Set \"AllowDLL Imports\" ON in menu Tools->Options->ExpertAdvisors!"); Print("Set \"AllowDLL Imports\" ON in menu Tools->Options->ExpertAdvisors!"); Comment("Warning: Set Parameter \"AllowDLL Imports\" ON in menu Tools -> Options -> ExpertAdvisors!"); gi_536 = FALSE; return (0); } if (gi_124 < 0) gi_124 = 0; g_symbol_584 = Symbol(); if (Digits < 4) { gd_544 = 0.01; gi_540 = 2; } else { gd_544 = 0.0001; gi_540 = 4; } if (Digits == 5) { gd_544 = 0.0001; gi_540 = 5; } g_maxlot_552 = MarketInfo(g_symbol_584, MODE_MAXLOT); g_minlot_560 = MarketInfo(g_symbol_584, MODE_MINLOT); g_lotstep_568 = MarketInfo(g_symbol_584, MODE_LOTSTEP); gd_576 = MarketInfo(g_symbol_584, MODE_MARGINREQUIRED) * g_lotstep_568; if (gi_84) { ls_0 = StringSubstr(g_symbol_584, 0, 6); if (ls_0 != "EURGBP" && ls_0 != "EURCHF" && ls_0 != "GBPCHF" && ls_0 != "USDCAD") { Alert("Use EA BOSS on EURCHF,EURGPB,GBPCHF or USDCAD only!"); Print("Use EA BOSS on EURCHF,EURGPB,GBPCHF or USDCAD only!"); Comment("Error: Wrong Currency Pair! Use EA BOSS on EURCHF,EURGPB,GBPCHF or USDCAD only!"); gi_536 = FALSE; return (0); } if (ls_0 == "EURGBP") { gi_628 = gi_220; gi_632 = gi_224; gi_636 = gi_228; gd_708 = gd_272; gi_640 = gi_232; gi_648 = gi_240; gi_656 = gi_248; gi_664 = gi_256; gi_672 = gi_264; gi_644 = gi_236; gi_652 = gi_244; gi_660 = gi_252; gi_668 = gi_260; gi_676 = gi_268; } else { if (ls_0 == "EURCHF") { gi_628 = gi_280; gi_632 = gi_284; gi_636 = gi_288; gd_708 = gd_332; gi_640 = gi_292; gi_648 = gi_300; gi_656 = gi_308; gi_664 = gi_316; gi_672 = gi_324; gi_644 = gi_296; gi_652 = gi_304; gi_660 = gi_312; gi_668 = gi_320; gi_676 = gi_328; } else { if (ls_0 == "GBPCHF") { gi_628 = gi_340; gi_632 = gi_344; gi_636 = gi_348; gd_708 = gd_392; gi_640 = gi_352; gi_648 = gi_360; gi_656 = gi_368; gi_664 = gi_376; gi_672 = gi_384; gi_644 = gi_356; gi_652 = gi_364; gi_660 = gi_372; gi_668 = gi_380; gi_676 = gi_388; } else { gi_628 = gi_400; gi_632 = gi_404; gi_636 = gi_408; gd_708 = gd_452; gi_640 = gi_412; gi_648 = gi_420; gi_656 = gi_428; gi_664 = gi_436; gi_672 = gi_444; gi_644 = gi_416; gi_652 = gi_424; gi_660 = gi_432; gi_668 = gi_440; gi_676 = gi_448; } } } gd_724 = (-1 * gi_632) * gd_544; gd_716 = (gi_628 - gi_124) * gd_544; gi_680 = 60 * gi_640; gi_684 = 60 * gi_648; gi_688 = 60 * gi_656; gi_692 = 60 * gi_664; gi_696 = 60 * gi_672; gd_732 = (gi_644 - gi_124) * gd_544; gd_740 = (gi_652 - gi_124) * gd_544; gd_748 = (gi_660 - gi_124) * gd_544; gd_756 = (gi_668 - gi_124) * gd_544; gd_764 = (gi_676 - gi_124) * gd_544; gd_788 = NormalizeDouble(gi_636 * gd_544, gi_540); gd_772 = (MarketInfo(g_symbol_584, MODE_SPREAD) + 0.1) * Point; gd_780 = NormalizeDouble(gi_632 * gd_544, gi_540); gi_612 = 100 - gi_480; gi_616 = 100 - gi_488; gi_620 = gi_492 / 2 + 50; gi_624 = 50 - gi_492 / 2; gi_700 = gi_460 + GMT_hours_plus; gi_704 = gi_464 + GMT_hours_plus; while (true) { if (gi_700 >= 24) { gi_700 -= 24; continue; } if (gi_700 >= 0) break; gi_700 += 24; } while (true) { if (gi_704 >= 24) { gi_704 -= 24; continue; } if (gi_704 >= 0) break; gi_704 += 24; } if (g_period_176 <= 0) gi_172 = FALSE; if (g_applied_price_180 < PRICE_CLOSE || g_applied_price_180 > PRICE_WEIGHTED) gi_172 = FALSE; if (g_ma_method_184 < MODE_SMA || g_ma_method_184 > MODE_LWMA) gi_172 = FALSE; } return (0); } int deinit() { return (0); } int start() { if (!IsDemo() && !IsTesting()) { Comment("" + "\n" + "Wanna use EA BOSS at real account?" + "\n" + "BUY IT NOW at www.EA-BOSS.com and enjoy!"); return (0); } if (!gi_536) return (0); Scalper(); return (0); } void Scalper() { double l_irsi_0; double l_irsi_8; double l_ima_16; int l_count_24; double l_ima_28; g_datetime_600 = TimeCurrent(); if (gi_208) { Comment("" + "\n" + "The EA BOSS for testing and demo accounts only." + "\n" + "For information visit our site www.EA-BOSS.com" + "\n" + "_________________________________________" + "\n" + "\n" + "Account Name: " + AccountName() + "\n" + "Broker Company: " + AccountCompany() + "\n" + "Account Number: " + AccountNumber() + "\n" + "_________________________________" + "\n" + "\n" + "Leverage: 1:" + DoubleToStr(AccountLeverage(), 0) + "\n" + "Balance: " + DoubleToStr(AccountBalance(), 2), " ", AccountCurrency() + "\n" + "Equity: " + DoubleToStr(AccountEquity(), 2), " ", AccountCurrency() + "\n" + "_________________________________" + "\n" + "\n" + "Free Margin: " + DoubleToStr(AccountFreeMargin(), 2), " ", AccountCurrency() + "\n" + "Used Margin: " + DoubleToStr(AccountMargin(), 2), " ", AccountCurrency() + "\n" + "Server Time " + TimeToStr(TimeCurrent(), TIME_SECONDS)); } if (gi_144) WatchLevels(); if (gi_148) NoiseFilter(); SetOrderLevels(); if (Ask - Bid <= gd_772) { if (DayOfWeek() != 0) { if (!gi_164) if (DayOfWeek() == 5) return; if (DayOfWeek() == 1 && Hour() < gi_700) return; if (Scalper_IsTradeTime()) { if (gi_152 > 0) if (Scalper_IsRelaxHours()) return; if (gi_156) if (Scalper_CheckSimpleHeightFilter()) return; if (gi_160) if (Scalper_CheckTrendFilter()) return; if (gi_168 != 0) { if (Scalper_HaveTrade()) { if (!(gi_204)) return; Print("Already have one trade inside this interval of time."); return; } } HideTestIndicators(TRUE); l_irsi_0 = iRSI(NULL, PERIOD_M15, g_period_476, PRICE_CLOSE, 0); l_irsi_8 = iRSI(NULL, PERIOD_M1, g_period_484, PRICE_CLOSE, 0); l_ima_16 = iMA(NULL, PERIOD_M15, g_period_472, 0, MODE_SMA, PRICE_MEDIAN, 1); if (fun2(Ask + 0.0002, ExistPosition(), l_irsi_0, l_irsi_8, gi_488, gi_480, l_ima_16)) { if (gi_592) { if (!gi_172) l_count_24 = 0; else { l_ima_28 = iMA(NULL, PERIOD_M15, g_period_176, 0, g_ma_method_184, g_applied_price_180, 0); if (Close[0] <= l_ima_28) l_count_24++; } if (l_count_24 == 0) { OpenPosition(OP_BUY, gi_628, gi_632); gi_592 = FALSE; gi_596 = TRUE; } } } if (fun3(Bid - 0.0002, ExistPosition(), l_irsi_0, l_irsi_8, gi_616, gi_612, l_ima_16)) { if (gi_596) { if (!gi_172) l_count_24 = 0; else { l_ima_28 = iMA(NULL, PERIOD_M15, g_period_176, 0, g_ma_method_184, g_applied_price_180, 0); if (Close[0] >= l_ima_28) l_count_24++; } if (l_count_24 == 0) { OpenPosition(OP_SELL, gi_628, gi_632); gi_596 = FALSE; gi_592 = TRUE; } } } if (fun4(l_irsi_0, gi_620, gi_624)) { gi_596 = TRUE; gi_592 = TRUE; } } } } } bool Scalper_IsRelaxHours() { int l_datetime_16; bool li_20; double ld_24; double ld_32; double ld_40; int l_datetime_52; int l_ticket_0 = -1; int li_4 = OrdersHistoryTotal() - 1; int l_datetime_8 = -2147483648; for (int l_pos_12 = li_4; l_pos_12 >= 0; l_pos_12--) { if (OrderSelect(l_pos_12, SELECT_BY_POS, MODE_HISTORY)) { if (OrderMagicNumber() == g_magic_188) { if (OrderSymbol() == g_symbol_584) { l_datetime_16 = OrderCloseTime(); if (l_datetime_8 < l_datetime_16) { l_datetime_8 = l_datetime_16; l_ticket_0 = OrderTicket(); } } } } } if (l_ticket_0 < 0) return (FALSE); if (OrderSelect(l_ticket_0, SELECT_BY_TICKET)) { li_20 = FALSE; ld_24 = NormalizeDouble(OrderOpenPrice(), gi_540); ld_32 = NormalizeDouble(OrderClosePrice(), gi_540); ld_40 = NormalizeDouble(OrderStopLoss(), gi_540); if (OrderType() == OP_BUY) { if (ld_32 <= ld_40 && ld_40 != 0.0) li_20 = TRUE; else if (ld_24 - ld_32 >= gd_780) li_20 = TRUE; } else { if (ld_32 >= ld_40 && ld_40 != 0.0) li_20 = TRUE; else if (ld_32 - ld_24 >= gd_780) li_20 = TRUE; } } else return (FALSE); if (!li_20) return (FALSE); int l_shift_48 = iBarShift(NULL, PERIOD_H1, l_datetime_8, FALSE); if (l_shift_48 < gi_152) { l_datetime_52 = iTime(NULL, PERIOD_H1, 0); if (g_datetime_608 != l_datetime_52) { if (gi_200) Print("Relax Hours Left = " + DoubleToStr(l_shift_48 - gi_152, 0) + " (after StopLoss)."); g_datetime_608 = l_datetime_52; } return (TRUE); } return (FALSE); } bool Scalper_CheckTrendFilter() { double ld_4; double ld_12; double ld_20; if (gi_508 <= 0) return (FALSE); for (int li_0 = 0; li_0 <= gi_512; li_0++) { ld_4 = NormalizeDouble(iMA(NULL, PERIOD_M15, g_period_496, 0, g_ma_method_504, g_applied_price_500, li_0), gi_540); ld_12 = NormalizeDouble(iMA(NULL, PERIOD_M15, g_period_496, 0, g_ma_method_504, g_applied_price_500, li_0 + gi_508), gi_540); ld_20 = 100.0 * MathAbs(ld_4 - ld_12) / ld_12; if (ld_20 > gd_708) break; } if (li_0 > gi_512) return (FALSE); if (gi_204) { Print("Trade is forbidden by the filter TrendFilter."); if (li_0 != 0) Print("Relax Bars Left = " + DoubleToStr(gi_512 - li_0, 0) + " (after MaxPercentMove)."); } return (TRUE); } bool Scalper_CheckSimpleHeightFilter() { int l_datetime_4; bool li_0 = FALSE; if (NormalizeDouble(iHigh(NULL, PERIOD_M15, 1) - iLow(NULL, PERIOD_M15, 1), gi_540) > gd_788) li_0 = TRUE; if (NormalizeDouble(iHigh(NULL, PERIOD_M15, 2) - iLow(NULL, PERIOD_M15, 2), gi_540) > gd_788) li_0 = TRUE; if (li_0) { l_datetime_4 = iTime(NULL, PERIOD_M15, 0); if (g_datetime_604 != l_datetime_4) { if (gi_200) Print("Trade is forbidden by the VolatilityFilter."); g_datetime_604 = l_datetime_4; } return (TRUE); } return (FALSE); } int Scalper_IsTradeTime() { int l_hour_0 = TimeHour(g_datetime_600); if (gi_700 < gi_704 && l_hour_0 < gi_700 || l_hour_0 >= gi_704) return (0); if (gi_700 > gi_704 && (l_hour_0 < gi_700 && l_hour_0 >= gi_704)) return (0); if (gi_704 == 0) gi_704 = 24; if (Hour() == gi_704 - 1 && Minute() >= gi_468) return (0); return (1); } int ExistPosition() { int l_ord_total_0 = OrdersTotal(); for (int l_pos_4 = 0; l_pos_4 < l_ord_total_0; l_pos_4++) { if (OrderSelect(l_pos_4, SELECT_BY_POS, MODE_TRADES)) { if (OrderMagicNumber() == g_magic_188) { if (OrderSymbol() == g_symbol_584) if (OrderType() <= OP_SELL) return (1); } } } return (0); } int OpenPosition(int a_cmd_0, int ai_unused_4, int ai_unused_8) { double l_price_20; color l_color_28; string ls_36; double ld_12 = LotsOptimized(); if (AccountFreeMarginCheck(g_symbol_584, a_cmd_0, ld_12) <= 0.0 || GetLastError() == 134/* NOT_ENOUGH_MONEY */) { Print("You don\'t have free margin."); Comment("You don\'t have free margin."); return (-1); } if (Ask - Bid > gd_136 / 10000.0) return (0); RefreshRates(); if (a_cmd_0 == OP_BUY) { l_price_20 = Ask; l_color_28 = g_color_192; } else { l_price_20 = Bid; l_color_28 = g_color_196; } int l_ticket_32 = OrderSend(g_symbol_584, a_cmd_0, ld_12, l_price_20, MarketInfo(g_symbol_584, MODE_SPREAD), 0, 0, 0, g_magic_188, 0, l_color_28); if (l_ticket_32 < 0) { if (gi_204) { if (a_cmd_0 == OP_BUY) ls_36 = "OP_BUY"; else ls_36 = "OP_SELL"; Print("Open: OrderSend(", ls_36, ") error = ", GetLastError()); } } return (l_ticket_32); } void NoiseFilter() { int li_12; double l_price_16; double ld_24; int li_32; double ld_36; bool l_ord_close_44; string ls_48; int l_spread_0 = MarketInfo(g_symbol_584, MODE_SPREAD); int li_4 = OrdersTotal() - 1; for (int l_pos_8 = li_4; l_pos_8 >= 0; l_pos_8--) { if (!OrderSelect(l_pos_8, SELECT_BY_POS, MODE_TRADES)) { if (gi_204) Print("NoiseFilter: OrderSelect() error = ", GetLastError()); } else { if (OrderMagicNumber() == g_magic_188) { if (OrderType() <= OP_SELL) { if (OrderSymbol() == g_symbol_584) { li_12 = g_datetime_600 - OrderOpenTime(); if (li_12 > gi_680) { l_price_16 = NormalizeDouble(OrderClosePrice(), gi_540); ld_24 = NormalizeDouble(OrderOpenPrice(), gi_540); li_32 = 0; if (OrderType() == OP_BUY) ld_36 = l_price_16 - ld_24; else ld_36 = ld_24 - l_price_16; if (li_12 < gi_684 && ld_36 >= gd_732) li_32 = 1; else { if (li_12 > gi_684 && li_12 < gi_688 && ld_36 >= gd_740) li_32 = 2; else { if (li_12 > gi_688 && li_12 < gi_692 && ld_36 >= gd_748) li_32 = 3; else { if (li_12 > gi_692 && li_12 < gi_696 && ld_36 >= gd_756) li_32 = 4; else if (li_12 > gi_696 && ld_36 >= gd_764) li_32 = 5; } } } if (li_32 != 0) { RefreshRates(); l_ord_close_44 = OrderClose(OrderTicket(), OrderLots(), l_price_16, l_spread_0, g_color_192); if (!l_ord_close_44) { if (gi_204) { if (OrderType() == OP_BUY) ls_48 = "OP_BUY"; else ls_48 = "OP_SELL"; Print("NoiseFilter: OrderClose(", ls_48, ") error = ", GetLastError()); } } } } } } } } } } void WatchLevels() { double l_price_12; double ld_20; double ld_28; bool l_ord_close_36; if (gi_628 <= 0 && gi_632 <= 0) return; int l_spread_0 = MarketInfo(g_symbol_584, MODE_SPREAD); int li_4 = OrdersTotal() - 1; for (int l_pos_8 = li_4; l_pos_8 >= 0; l_pos_8--) { if (!OrderSelect(l_pos_8, SELECT_BY_POS, MODE_TRADES)) { if (gi_204) Print("WatchLevels: OrderSelect() error = ", GetLastError()); } else { if (OrderMagicNumber() == g_magic_188) { if (OrderType() <= OP_SELL) { if (OrderSymbol() == g_symbol_584) { l_price_12 = NormalizeDouble(OrderClosePrice(), gi_540); ld_20 = NormalizeDouble(OrderOpenPrice(), gi_540); if (OrderType() == OP_BUY) { ld_28 = l_price_12 - ld_20; if ((gd_716 > 0.0 && ld_28 >= gd_716) || (gd_724 < 0.0 && ld_28 <= gd_724)) { if (gi_204) Print("WatchLevels: level for close BUY"); l_ord_close_36 = OrderClose(OrderTicket(), OrderLots(), l_price_12, l_spread_0, g_color_192); if (!l_ord_close_36) if (gi_204) Print("WatchLevels: OrderClose(OP_BUY) error = ", GetLastError()); } } else { ld_28 = ld_20 - l_price_12; if ((gd_716 > 0.0 && ld_28 >= gd_716) || (gd_724 < 0.0 && ld_28 <= gd_724)) { if (gi_204) Print("WatchLevels: level for close SELL"); l_ord_close_36 = OrderClose(OrderTicket(), OrderLots(), l_price_12, l_spread_0, g_color_196); if (!l_ord_close_36) if (gi_204) Print("WatchLevels: OrderClose(OP_SELL) error = ", GetLastError()); } } } } } } } } double LotsOptimized() { double ld_ret_0 = MathFloor(MM_percent_0_100 * AccountEquity() / 100.0 / gd_116 / MarketInfo(Symbol(), MODE_MARGINREQUIRED)) * gd_116; if (ld_ret_0 >= MarketInfo(Symbol(), MODE_MAXLOT)) ld_ret_0 = MarketInfo(Symbol(), MODE_MAXLOT); if (ld_ret_0 < gd_116) ld_ret_0 = gd_116; return (ld_ret_0); } void SetOrderLevels() { double ld_16; double l_price_24; double ld_32; double ld_40; bool li_48; int li_52; int li_56; double l_price_60; double l_price_68; bool l_bool_76; double ld_0 = NormalizeDouble(MarketInfo(g_symbol_584, MODE_STOPLEVEL) * Point, Digits); int li_8 = OrdersTotal() - 1; for (int l_pos_12 = li_8; l_pos_12 >= 0; l_pos_12--) { if (!OrderSelect(l_pos_12, SELECT_BY_POS, MODE_TRADES)) { if (gi_204) Print("SetOrderLevels: OrderSelect() error = ", GetLastError()); } else { if (OrderMagicNumber() == g_magic_188) { if (OrderType() <= OP_SELL) { if (OrderSymbol() == g_symbol_584) { ld_16 = NormalizeDouble(OrderClosePrice(), gi_540); l_price_24 = NormalizeDouble(OrderOpenPrice(), gi_540); ld_32 = NormalizeDouble(OrderStopLoss(), gi_540); ld_40 = NormalizeDouble(OrderTakeProfit(), gi_540); li_48 = TRUE; li_52 = 0; li_56 = 0; if (ld_32 == 0.0) { if (gi_144) li_52 = gi_516 + MathRand() % gi_520; else li_52 = gi_632; if (li_52 != 0) { if (OrderType() == OP_BUY) { l_price_60 = NormalizeDouble(l_price_24 - li_52 * gd_544, gi_540); if (ld_16 - l_price_60 <= ld_0) li_48 = FALSE; } else { l_price_60 = NormalizeDouble(l_price_24 + li_52 * gd_544, gi_540); if (l_price_60 - ld_16 <= ld_0) li_48 = FALSE; } } } else l_price_60 = ld_32; if (ld_40 == 0.0) { if (gi_144) li_56 = gi_524 + MathRand() % gi_528; else li_56 = gi_628; if (li_56 != 0) { if (OrderType() == OP_BUY) { l_price_68 = NormalizeDouble(l_price_24 + li_56 * gd_544, gi_540); if (l_price_68 - ld_16 <= ld_0) li_48 = FALSE; } else { l_price_68 = NormalizeDouble(l_price_24 - li_56 * gd_544, gi_540); if (ld_16 - l_price_68 <= ld_0) li_48 = FALSE; } } } else l_price_68 = ld_40; if (li_52 != 0 && li_56 != 0 && li_48) { l_bool_76 = OrderModify(OrderTicket(), l_price_24, l_price_60, l_price_68, 0, CLR_NONE); if (!l_bool_76) if (gi_204) Print("SetOrderLevels: OrderClose(OP_SELL) error = ", GetLastError()); } } } } } } } bool Scalper_HaveTrade() { int l_datetime_28; if (gi_460 == gi_464) return (FALSE); int l_datetime_0 = TimeCurrent(); int li_4 = iTime(NULL, PERIOD_D1, 0); int l_hour_8 = TimeHour(l_datetime_0); int li_unused_12 = 0; if (gi_460 > gi_464) if (l_hour_8 < gi_460) li_4 -= 86400; li_4 += 3600 * gi_460; int li_16 = OrdersTotal() - 1; int l_datetime_20 = -2147483648; for (int l_pos_24 = li_16; l_pos_24 >= 0; l_pos_24--) { if (OrderSelect(l_pos_24, SELECT_BY_POS, MODE_TRADES)) { if (OrderMagicNumber() == g_magic_188) { if (OrderSymbol() == g_symbol_584) { l_datetime_28 = OrderOpenTime(); if (l_datetime_20 < l_datetime_28) l_datetime_20 = l_datetime_28; } } } } if (l_datetime_20 >= li_4) return (TRUE); li_16 = OrdersHistoryTotal() - 1; l_datetime_20 = -2147483648; for (l_pos_24 = li_16; l_pos_24 >= 0; l_pos_24--) { if (OrderSelect(l_pos_24, SELECT_BY_POS, MODE_HISTORY)) { if (OrderMagicNumber() == g_magic_188) { if (OrderSymbol() == g_symbol_584) { l_datetime_28 = OrderOpenTime(); if (l_datetime_20 < l_datetime_28) l_datetime_20 = l_datetime_28; } } } } if (l_datetime_20 >= li_4) return (TRUE); return (FALSE); }