extern int Magic = 20090720; extern int GMT = 0; extern bool UseAlert = TRUE; extern bool UseMail = FALSE; extern int Slippage = 3; extern int OrderRetry = 5; extern bool CountDownOrder = FALSE; extern string note0 = "---------Money Management"; extern int MM = 0; extern double MaxLots = 20.0; extern string note1 = "----Manual Settings"; extern bool UsePos1 = TRUE; extern bool UsePos2 = TRUE; extern bool UsePos3 = TRUE; extern double FixedLotPos0 = 0.1; extern double FixedLotPos1 = 0.2; extern double FixedLotPos2 = 0.3; extern double FixedLotPos3 = 0.4; extern string note2 = "---------Trade Session"; extern bool AsDoTrade = TRUE; extern bool EuDoTrade = TRUE; extern bool NyDoTrade = TRUE; extern string Asnote1 = "---------As Settings"; extern int AsStopLoss = 275; extern int AsTakeProfit = 204; extern int AsPos1Pips = 50; extern int AsPos2Pips = 65; extern int AsPos3Pips = 96; int gi_224 = 15; int gi_228 = 50; int gi_232 = 2; int gi_236 = 41; int gi_240 = 3; int gi_244 = 0; int gi_248 = 17; int gi_252 = 3; int gi_256 = 0; int gi_260 = 4; extern string Eunote1 = "---------Eu Settings"; extern int EuStopLoss = 242; extern int EuTakeProfit = 232; extern int EuPos1Pips = 52; extern int EuPos2Pips = 66; extern int EuPos3Pips = 93; int gi_292 = 30; int gi_296 = 10; int gi_300 = 5; int gi_304 = 26; int gi_308 = 3; int gi_312 = 0; int gi_316 = 31; int gi_320 = 3; int gi_324 = 0; int gi_328 = 3; extern string Nynote1 = "---------Ny Settings"; extern int NyStopLoss = 340; extern int NyTakeProfit = 348; extern int NyPos1Pips = 22; extern int NyPos2Pips = 64; extern int NyPos3Pips = 90; int gi_360 = 30; int gi_364 = 42; int gi_368 = 0; int gi_372 = 16; int gi_376 = 2; int gi_380 = 0; int gi_384 = 59; int gi_388 = 2; int gi_392 = 0; int gi_396 = 4; extern string note80 = "---------Trading Hour Control"; extern int AsStart = 23; extern int AsEnd = 7; extern int EuStart = 8; extern int EuEnd = 14; extern int NyStart = 15; extern int NyEnd = 20; extern string note81 = "---------Trading Month Controle"; extern int StartMonth = 1; extern int StartDay = 6; extern int EndMonth = 12; extern int EndDay = 15; extern string note90 = "---------Weekend Controle"; extern bool WeekendStop = FALSE; extern bool WeekendClose = FALSE; extern int Weekend = 5; extern int StopHours = 15; extern int CloseHours = 21; extern string note91 = "---------Week Start Controle"; extern bool WeekStart = FALSE; extern int WeekStartDay = 1; extern int StartHours = 3; double gda_504[400]; double g_ibands_on_arr_508; double g_ibands_on_arr_516; double g_ibands_on_arr_524; double g_ibands_532; double g_ibands_540; int g_y_548 = 0; int gi_unused_552 = 0; string gs_556 = "EA Fusion GBPJPY"; string gs_564 = "EAFUSIONEGBPJPY"; double gd_572 = 0.0; double gd_580 = 0.0; double gd_588 = 0.0; double gd_596 = 0.0; int gi_604 = 0; int gi_608 = 0; int gi_612 = 0; int gi_616 = 0; int gi_620 = 0; int g_timeframe_624 = 0; int g_period_628 = 0; int g_applied_price_632 = PRICE_CLOSE; int g_period_636 = 0; int gi_640 = 0; int gi_644 = 0; int g_period_648 = 0; int gi_652 = 0; int gi_656 = 0; int g_applied_price_660 = PRICE_CLOSE; int gi_unused_664; double gd_668; double gd_676; int gi_684; int g_datetime_688 = 0; double gd_692 = 0.0; double gd_700 = 0.0; int gia_708[10]; int g_index_712 = 0; int gi_716 = 0; int gi_unused_720 = 0; int init() { tInit(); tReTrace(); gi_unused_664 = Digits; if (Digits == 3 || Digits == 5) gd_668 = 10.0 * Point; else gd_668 = Point; gi_684 = MarketInfo(Symbol(), MODE_STOPLEVEL); if (Digits == 3 || Digits == 5) gi_684 /= 10; return (0); } int deinit() { SemaphoreDeinit(gs_564); return (0); } int start() { int li_28; if (AccountNumber() != 35740) { Alert("Account number is not registered."); return (-1); } if (Period() != PERIOD_M5) { Alert("Use M5 Timeframe."); return (-1); } int li_0 = set_mng(); switch (li_0) { case 102: Alert("Not enough money!!!"); return (0); case 109: Alert("Invalid MM setting!!!"); return (0); } if (!IsTesting()) { show_info(); if (!IsTradeAllowed()) return (-1); if (!IsConnected()) return (-1); } int li_8 = 0; int li_12 = 0; int li_16 = ResionDecide(TimeCurrent()); ResionSet(li_16); tReTrace(); if (isTradeTime()) CheckSusp(); if (CloseTime()) ExecuteClose(); int l_datetime_20 = iTime(NULL, PERIOD_M1, 0); if (g_datetime_688 < l_datetime_20) { RefreshRates(); g_datetime_688 = l_datetime_20; li_12 = CheckForActive(); if (li_12 == 0) ExecuteClose(); li_8 = tGetT(); if (li_8 == 0 && isTradeTime() && EntryDate()) { RsiBand(); RsiBand(); switch (EntrySignal()) { case 0: BuyOrder(); break; case 1: SellOrder(); } } else { if (OrderSelect(tGetTicket(0), SELECT_BY_TICKET)) { ResionSet(ResionDecide(OrderOpenTime())); RsiBand(); RsiBand(); li_28 = RsiBandSignayClose(); switch (OrderType()) { case OP_BUY: if (li_28 == -10) ExecuteClose(); break; case OP_SELL: if (li_28 == -20) ExecuteClose(); } } } } return (0); } bool isTradeTime() { bool li_ret_0 = FALSE; int li_4 = ResionDecide(TimeCurrent()); int l_hour_8 = TimeHour(TimeCurrent()); if (!checkWeekendStop()) return (FALSE); if (!checkWeekStop()) return (FALSE); if (li_4 == 1 && AsDoTrade == TRUE) li_ret_0 = TRUE; if (li_4 == 2 && EuDoTrade == TRUE) li_ret_0 = TRUE; if (li_4 == 3 && NyDoTrade == TRUE) li_ret_0 = TRUE; return (li_ret_0); } int ResionDecide(int ai_0) { int li_4 = TimeHour(ai_0) - GMT; if (li_4 < 0) li_4 += 24; int li_ret_8 = 0; if (EuStart <= EuEnd) { if (li_4 >= EuStart && li_4 <= EuEnd) li_ret_8 = 2; } else if (li_4 >= EuStart || li_4 <= EuEnd) li_ret_8 = 2; if (NyStart <= NyEnd) { if (li_4 >= NyStart && li_4 <= NyEnd) li_ret_8 = 3; } else if (li_4 >= NyStart || li_4 <= NyEnd) li_ret_8 = 3; if (AsStart <= AsEnd) { if (li_4 >= AsStart && li_4 <= AsEnd) li_ret_8 = 1; } else if (li_4 >= AsStart || li_4 <= AsEnd) li_ret_8 = 1; return (li_ret_8); } void ResionSet(int ai_0) { switch (ai_0) { case 1: gi_604 = AsStopLoss; gi_608 = AsTakeProfit; gi_612 = AsPos1Pips; gi_616 = AsPos2Pips; gi_620 = AsPos3Pips; g_timeframe_624 = gi_224; g_period_628 = gi_228; g_applied_price_632 = gi_232; g_period_636 = gi_236; gi_640 = gi_240; gi_644 = gi_244; g_period_648 = gi_248; gi_652 = gi_252; gi_656 = gi_256; g_applied_price_660 = gi_260; return; case 2: gi_604 = EuStopLoss; gi_608 = EuTakeProfit; gi_612 = EuPos1Pips; gi_616 = EuPos2Pips; gi_620 = EuPos3Pips; g_timeframe_624 = gi_292; g_period_628 = gi_296; g_applied_price_632 = gi_300; g_period_636 = gi_304; gi_640 = gi_308; gi_644 = gi_312; g_period_648 = gi_316; gi_652 = gi_320; gi_656 = gi_324; g_applied_price_660 = gi_328; return; case 3: gi_604 = NyStopLoss; gi_608 = NyTakeProfit; gi_612 = NyPos1Pips; gi_616 = NyPos2Pips; gi_620 = NyPos3Pips; g_timeframe_624 = gi_360; g_period_628 = gi_364; g_applied_price_632 = gi_368; g_period_636 = gi_372; gi_640 = gi_376; gi_644 = gi_380; g_period_648 = gi_384; gi_652 = gi_388; gi_656 = gi_392; g_applied_price_660 = gi_396; return; case 0: gi_604 = FALSE; gi_608 = FALSE; gi_612 = 0; gi_616 = 0; gi_620 = 0; g_timeframe_624 = 0; g_period_628 = 0; g_applied_price_632 = 0; g_period_636 = 0; gi_640 = 0; gi_644 = 0; g_period_648 = 0; gi_652 = 0; gi_656 = 0; g_applied_price_660 = 0; return; return; } } bool checkWeekendStop() { bool li_ret_0 = TRUE; if (WeekendStop) if ((DayOfWeek() == Weekend && Hour() >= StopHours) || DayOfWeek() > Weekend) li_ret_0 = FALSE; return (li_ret_0); } bool checkWeekStop() { bool li_ret_0 = TRUE; if (WeekStart) { if (WeekStartDay > DayOfWeek()) li_ret_0 = FALSE; if (DayOfWeek() == WeekStartDay && Hour() < StartHours) li_ret_0 = FALSE; } return (li_ret_0); } int EntryDate() { if ((Month() > StartMonth && Month() < EndMonth) || (Month() == StartMonth && Day() >= StartDay) || (Month() == EndMonth && Day() <= EndDay)) return (1); return (0); } bool CloseTime() { if (WeekendClose == TRUE) if (DayOfWeek() == Weekend && Hour() >= CloseHours) return (TRUE); return (FALSE); } int EntrySignal() { g_ibands_532 = iBands(NULL, g_timeframe_624, g_period_648, gi_652, gi_656, g_applied_price_660, MODE_UPPER, 1); g_ibands_540 = iBands(NULL, g_timeframe_624, g_period_648, gi_652, gi_656, g_applied_price_660, MODE_LOWER, 1); if (iHigh(NULL, g_timeframe_624, 1) < g_ibands_532 && iLow(NULL, g_timeframe_624, 1) > g_ibands_540) { RsiBand(); return (RsiBandSignalEntry()); } return (-1); } void RsiBand() { for (int li_0 = 0; li_0 < g_period_636 + 10; li_0++) gda_504[li_0] = iRSI(NULL, g_timeframe_624, g_period_628, g_applied_price_632, li_0); ArraySetAsSeries(gda_504, TRUE); g_ibands_on_arr_508 = iBandsOnArray(gda_504, 0, g_period_636, gi_640, gi_644, 0, 1); g_ibands_on_arr_516 = iBandsOnArray(gda_504, 0, g_period_636, gi_640, gi_644, 1, 1); g_ibands_on_arr_524 = iBandsOnArray(gda_504, 0, g_period_636, gi_640, gi_644, 2, 1); } int RsiBandSignalEntry() { if (gda_504[1] > g_ibands_on_arr_516) return (1); if (gda_504[1] < g_ibands_on_arr_524) return (0); return (-1); } int RsiBandSignayClose() { if (gda_504[1] > g_ibands_on_arr_508) return (-10); if (gda_504[1] < g_ibands_on_arr_508) return (-20); return (-1); } int CheckForActive() { int l_cmd_0; int li_8 = tGetT(); if (li_8 == 0) return (-1); for (int l_count_4 = 0; l_count_4 < li_8; l_count_4++) { OrderSelect(tGetTicket(l_count_4), SELECT_BY_TICKET); l_cmd_0 = OrderType(); if (l_cmd_0 == OP_BUY || l_cmd_0 == OP_SELL) return (1); } return (0); } void Mail_Alert(string as_0, string as_8) { if (UseMail) SendMail(as_0, as_8); if (UseAlert) Alert(as_0, as_8); } void BuyOrder() { int l_ticket_0; double l_bid_12; string ls_24; string ls_32; RefreshRates(); int li_4 = Slippage; bool li_8 = FALSE; for (int l_count_20 = 0; l_count_20 < OrderRetry; l_count_20++) { l_ticket_0 = 1; SemaphoreTake(gs_564); if (CountDownOrder == FALSE) l_ticket_0 = tOrderSend(Symbol(), OP_BUY, gd_572, Ask, li_4, Bid - gi_604 * gd_668, Bid + gi_608 * gd_668, 0, Magic, 0, Blue); else l_ticket_0 = tOrderSend(Symbol(), OP_BUY, gd_572, Ask, li_4, 0, 0, 0, Magic, 0, Blue); SemaphoreReturn(gs_564); if (l_ticket_0 <= 0) { Alert("EA Fusion Error.", "OrderSend Error. No: ", GetLastError()); Sleep(5000); } else { if (CountDownOrder == TRUE) { l_bid_12 = Bid; OrderSelect(l_ticket_0, SELECT_BY_TICKET); while (!OrderModify(l_ticket_0, 0, l_bid_12 - gi_604 * gd_668, l_bid_12 + gi_608 * gd_668, 0)) { } } li_8 = TRUE; break; } } if (li_8) { ls_24 = "EA Fusion Long Signal"; ls_32 = "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + "Open Buy"; Mail_Alert(ls_24, ls_32); OrderSelect(l_ticket_0, SELECT_BY_TICKET); if ((MM != 0 && gi_612 > 0) || (MM == 0 && UsePos1 && gi_612 > 0)) { if (gi_612 > gi_684) { SemaphoreTake(gs_564); l_ticket_0 = tOrderSend(Symbol(), OP_BUYLIMIT, gd_580, Ask - gi_612 * gd_668, li_4, OrderStopLoss(), OrderTakeProfit(), 0, Magic, 0, RoyalBlue); SemaphoreReturn(gs_564); if (l_ticket_0 <= 0) { } } else SuspendBuy(Ask - gi_612 * gd_668); } if ((MM != 0 && gi_616 > 0) || (MM == 0 && UsePos2 && gi_616 > 0)) { if (gi_616 > gi_684) { SemaphoreTake(gs_564); l_ticket_0 = tOrderSend(Symbol(), OP_BUYLIMIT, gd_588, Ask - gi_616 * gd_668, li_4, OrderStopLoss(), OrderTakeProfit(), 0, Magic, 0, DodgerBlue); SemaphoreReturn(gs_564); if (l_ticket_0 <= 0) { } } } if ((MM != 0 && gi_620 > 0) || (MM == 0 && UsePos3 && gi_620 > 0)) { if (gi_620 > gi_684) { SemaphoreTake(gs_564); l_ticket_0 = tOrderSend(Symbol(), OP_BUYLIMIT, gd_596, Ask - gi_620 * gd_668, li_4, OrderStopLoss(), OrderTakeProfit(), 0, Magic, 0, MediumSlateBlue); SemaphoreReturn(gs_564); if (l_ticket_0 <= 0) { } } } } } void SellOrder() { int l_ticket_0; double l_ask_12; string ls_24; string ls_32; RefreshRates(); int li_4 = Slippage; bool li_8 = FALSE; for (int l_count_20 = 0; l_count_20 < OrderRetry; l_count_20++) { l_ticket_0 = 1; SemaphoreTake(gs_564); if (CountDownOrder == FALSE) l_ticket_0 = tOrderSend(Symbol(), OP_SELL, gd_572, Bid, li_4, Ask + gi_604 * gd_668, Ask - gi_608 * gd_668, 0, Magic, 0, Red); else l_ticket_0 = tOrderSend(Symbol(), OP_SELL, gd_572, Bid, li_4, 0, 0, 0, Magic, 0, Blue); SemaphoreReturn(gs_564); if (l_ticket_0 <= 0) { Alert("EA Fusion Error.", "OrderSend Error. No: ", GetLastError()); Sleep(5000); } else { if (CountDownOrder == TRUE) { l_ask_12 = Ask; OrderSelect(l_ticket_0, SELECT_BY_TICKET); while (!OrderModify(l_ticket_0, 0, l_ask_12 + gi_604 * gd_668, l_ask_12 - gi_608 * gd_668, 0)) { } } li_8 = TRUE; break; } } if (li_8) { ls_24 = "EA Fusion Short Signal"; ls_32 = "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell"; Mail_Alert(ls_24, ls_32); OrderSelect(l_ticket_0, SELECT_BY_TICKET); if ((MM != 0 && gi_612 > 0) || (MM == 0 && UsePos1 && gi_612 > 0)) { if (gi_612 > gi_684) { SemaphoreTake(gs_564); l_ticket_0 = tOrderSend(Symbol(), OP_SELLLIMIT, gd_580, Bid + gi_612 * gd_668, li_4, OrderStopLoss(), OrderTakeProfit(), 0, Magic, 0, Tomato); SemaphoreReturn(gs_564); if (l_ticket_0 <= 0) { } } else SuspendSell(Bid + gi_612 * gd_668); } if ((MM != 0 && gi_616 > 0) || (MM == 0 && UsePos2 && gi_616 > 0)) { if (gi_616 > gi_684) { SemaphoreTake(gs_564); l_ticket_0 = tOrderSend(Symbol(), OP_SELLLIMIT, gd_588, Bid + gi_616 * gd_668, li_4, OrderStopLoss(), OrderTakeProfit(), 0, Magic, 0, Pink); SemaphoreReturn(gs_564); if (l_ticket_0 <= 0) { } } } if ((MM != 0 && gi_620 > 0) || (MM == 0 && UsePos3 && gi_620 > 0)) { if (gi_620 > gi_684) { SemaphoreTake(gs_564); l_ticket_0 = tOrderSend(Symbol(), OP_SELLLIMIT, gd_596, Bid + gi_620 * gd_668, li_4, OrderStopLoss(), OrderTakeProfit(), 0, Magic, 0, HotPink); SemaphoreReturn(gs_564); if (l_ticket_0 <= 0) { } } } } } void ExecuteClose() { int li_0; int l_cmd_4; bool li_16; string ls_28; string ls_36; int li_8 = tGetT(); int l_slippage_12 = Slippage; bool li_20 = FALSE; while (true) { li_16 = TRUE; RefreshRates(); for (int l_pos_24 = OrdersTotal() - 1; l_pos_24 >= 0; l_pos_24--) { if (OrderSelect(l_pos_24, SELECT_BY_POS, MODE_TRADES) == FALSE) break; if (OrderMagicNumber() == Magic && OrderSymbol() == Symbol()) { l_cmd_4 = OrderType(); if (l_cmd_4 == OP_BUY) { SemaphoreTake(gs_564); li_0 = OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid, Digits), l_slippage_12, White); SemaphoreReturn(gs_564); if (li_0 == 0) { Alert("Failed to close buy position!"); li_16 = FALSE; } } else { if (l_cmd_4 == OP_SELL) { SemaphoreTake(gs_564); li_0 = OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask, Digits), l_slippage_12, White); SemaphoreReturn(gs_564); if (li_0 == 0) { Alert("Failed to close sell position!"); li_16 = FALSE; } } else { SemaphoreTake(gs_564); li_0 = OrderDelete(OrderTicket()); SemaphoreReturn(gs_564); if (li_0 == 0) { Alert("Failed to delete position!"); li_16 = FALSE; } } } } DeleteSusp(); } Sleep(2000); tReTrace(); if (tGetT() == 0) { li_20 = TRUE; break; } if (li_16) { li_20 = TRUE; break; } Sleep(5000); } if (li_20) { ls_28 = "EA Fusion Close Signal"; switch (l_cmd_4) { case OP_BUY: ls_36 = "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close."; break; case OP_SELL: ls_36 = "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close."; } Mail_Alert(ls_28, ls_36); } } void SuspendBuy(double ad_0) { gd_692 = ad_0; } void SuspendSell(double ad_0) { gd_700 = ad_0; } void DeleteSusp() { gd_692 = 0.0; gd_700 = 0.0; } void CheckSusp() { int li_0; int li_4 = Slippage; if (gd_692 > 0.0 && Ask < gd_692) { OrderSelect(tGetTicket(0), SELECT_BY_TICKET); SemaphoreTake(gs_564); li_0 = tOrderSend(Symbol(), OP_BUY, gd_676, Ask, li_4, OrderStopLoss(), OrderTakeProfit(), 0, Magic); SemaphoreReturn(gs_564); if (li_0 > 0) gd_692 = 0.0; } if (gd_700 > 0.0 && Bid > gd_700) { OrderSelect(tGetTicket(0), SELECT_BY_TICKET); SemaphoreTake(gs_564); li_0 = tOrderSend(Symbol(), OP_SELL, gd_676, Bid, li_4, OrderStopLoss(), OrderTakeProfit(), 0, Magic); SemaphoreReturn(gs_564); if (li_0 > 0) gd_700 = 0.0; } } void tInit() { for (int l_index_0 = 0; l_index_0 < 10; l_index_0++) gia_708[l_index_0] = 0; g_index_712 = 0; } void tReTrace() { tInit(); for (int l_pos_0 = 0; l_pos_0 < OrdersTotal(); l_pos_0++) { OrderSelect(l_pos_0, SELECT_BY_POS, MODE_TRADES); if (OrderMagicNumber() == Magic && OrderSymbol() == Symbol() && OrderCloseTime() == 0) { gia_708[g_index_712] = OrderTicket(); g_index_712++; } } } void tAdd(int ai_0) { gia_708[g_index_712] = ai_0; g_index_712++; } int tGetT() { return (g_index_712); } int tGetTicket(int ai_0) { return (gia_708[ai_0]); } int tOrderSend(string a_symbol_0, int a_cmd_8, double a_lots_12, double a_price_20, int a_slippage_28, double a_price_32, double a_price_40, string a_comment_48, int a_magic_56 = 0, int a_datetime_60 = 0, color a_color_64 = -1) { a_price_20 = NormalizeDouble(a_price_20, Digits); int l_ticket_68 = OrderSend(a_symbol_0, a_cmd_8, a_lots_12, a_price_20, a_slippage_28, a_price_32, a_price_40, a_comment_48, a_magic_56, a_datetime_60, a_color_64); if (l_ticket_68 > 0) tAdd(l_ticket_68); return (l_ticket_68); } void SemaphoreTake(string a_var_name_0) { if (GlobalVariableCheck(a_var_name_0) == FALSE) GlobalVariableSet(a_var_name_0, 0); while (true) { if (GlobalVariableSetOnCondition(a_var_name_0, 1.0, 0.0)) { gi_716 = TRUE; return; } Sleep(100); } } void SemaphoreReturn(string a_var_name_0) { GlobalVariableSet(a_var_name_0, 0.0); gi_716 = FALSE; } void SemaphoreDeinit(string a_var_name_0) { if (gi_716 == TRUE) GlobalVariableSet(a_var_name_0, 0.0); } int set_mng() { double ld_32; double ld_48; if (MM == 0) { gd_572 = FixedLotPos0; gd_580 = FixedLotPos1; gd_588 = FixedLotPos2; gd_596 = FixedLotPos3; return (100); } double ld_unused_0 = 0; double l_minlot_8 = MarketInfo(Symbol(), MODE_MINLOT); double l_free_magrin_16 = AccountFreeMargin(); string ls_24 = AccountCurrency(); if (ls_24 == "JPY") ld_32 = 1000000.0; else ld_32 = 10000.0; double ld_40 = 0; if (l_minlot_8 >= 1.0) ld_40 = 1.0; else { if (l_minlot_8 >= 0.1) ld_40 = 10.0; else if (l_minlot_8 >= 0.01) ld_40 = 100.0; } switch (MM) { case 1: ld_48 = l_free_magrin_16 / ld_32 / 10.0 / 2.0; break; case 2: ld_48 = l_free_magrin_16 / ld_32 / 10.0; break; case 3: ld_48 = l_free_magrin_16 / ld_32 / 6.0; break; case 4: ld_48 = l_free_magrin_16 / ld_32 / 3.0; break; default: ld_48 = 0.0; return (109); } ld_48 = MathTrunk(ld_48, ld_40); if (l_minlot_8 > ld_48) { gd_572 = checkMaxlot(l_minlot_8); gd_580 = checkMaxlot(2.0 * gd_572); gd_588 = checkMaxlot(3.0 * gd_572); gd_596 = checkMaxlot(4.0 * gd_572); return (101); } gd_572 = checkMaxlot(ld_48); gd_580 = checkMaxlot(2.0 * gd_572); gd_588 = checkMaxlot(3.0 * gd_572); gd_596 = checkMaxlot(4.0 * gd_572); return (101); } double checkMaxlot(double ad_0) { double l_maxlot_8 = MarketInfo(Symbol(), MODE_MAXLOT); if (ad_0 > l_maxlot_8) ad_0 = l_maxlot_8; if (ad_0 > MaxLots) ad_0 = MaxLots; return (ad_0); } double MathTrunk(double ad_0, double ad_8) { int li_16 = ad_0 * ad_8; return (li_16 / ad_8); } void show_info() { string ls_0; string l_dbl2str_8; string l_dbl2str_16; g_y_548 += 30; ObjectMakeLabel("ea_name", 2, 12, gs_556); switch (ResionDecide(TimeCurrent())) { case 1: ls_0 = "AS"; l_dbl2str_8 = DoubleToStr(AsTakeProfit, 0); l_dbl2str_16 = DoubleToStr(AsStopLoss, 0); break; case 2: ls_0 = "EU"; l_dbl2str_8 = DoubleToStr(EuTakeProfit, 0); l_dbl2str_16 = DoubleToStr(EuStopLoss, 0); break; case 3: ls_0 = "NY"; l_dbl2str_8 = DoubleToStr(NyTakeProfit, 0); l_dbl2str_16 = DoubleToStr(NyStopLoss, 0); break; case 0: ls_0 = "NONE"; l_dbl2str_8 = DoubleToStr(0.0, 0); l_dbl2str_16 = DoubleToStr(0.0, 0); } ObjectMakeLabel("resion", 2, 12, "CurrentMarket: " + ls_0); ObjectMakeLabel("---start1", 2, 12, "---- SETTINGS ------------------------------------------"); ObjectMakeLabel("MM", 2, 12, "MM: " + MM); if (MM == 0) { ObjectMakeLabel("LotPos0", 2, 12, "LotPos0: " + DoubleToStr(gd_572, 2)); if (UsePos1) ObjectMakeLabel("LotPos1", 2, 12, "LotPos1: " + DoubleToStr(gd_580, 2)); else ObjectMakeLabel("LotPos1", 2, 12, "LotPos1: false"); if (UsePos2) ObjectMakeLabel("LotPos2", 2, 12, "LotPos2: " + DoubleToStr(gd_588, 2)); else ObjectMakeLabel("LotPos2", 2, 12, "LotPos2: false"); if (UsePos3) ObjectMakeLabel("LotPos3", 2, 12, "LotPos3: " + DoubleToStr(gd_596, 2)); else ObjectMakeLabel("LotPos3", 2, 12, "LotPos3: false"); } else { ObjectMakeLabel("LotPos0", 2, 12, "LotPos0: " + DoubleToStr(gd_572, 2)); ObjectMakeLabel("LotPos1", 2, 12, "LotPos1: " + DoubleToStr(gd_580, 2)); ObjectMakeLabel("LotPos2", 2, 12, "LotPos2: " + DoubleToStr(gd_588, 2)); ObjectMakeLabel("LotPos3", 2, 12, "LotPos3: " + DoubleToStr(gd_596, 2)); } ObjectMakeLabel("TakeProfit", 2, 12, "TakeProfit: " + l_dbl2str_8); ObjectMakeLabel("StopLoss", 2, 12, "StopLoss: " + l_dbl2str_16); ObjectMakeLabel("---start2", 2, 12, "---- ACCOUNT INFOMATION --------------"); ObjectMakeLabel("AccountMinimumLot", 2, 12, "MinimumLot: " + DoubleToStr(MarketInfo(Symbol(), MODE_MINLOT), 2)); ObjectMakeLabel("AccountMaximumLot", 2, 12, "MaximumLot: " + DoubleToStr(MarketInfo(Symbol(), MODE_MAXLOT), 2)); ObjectMakeLabel("AccountLeverage", 2, 12, "AccountLeverage: " + AccountLeverage()); ObjectMakeLabel("---end", 2, 12, "------------------------------------------------------------"); g_y_548 = 0; } int ObjectMakeLabel(string a_name_0, int a_x_8, int ai_12, string a_text_16) { g_y_548 += ai_12; ObjectCreate(a_name_0, OBJ_LABEL, 0, 0, 0); ObjectSet(a_name_0, OBJPROP_CORNER, 0); ObjectSet(a_name_0, OBJPROP_XDISTANCE, a_x_8); ObjectSet(a_name_0, OBJPROP_YDISTANCE, g_y_548); ObjectSet(a_name_0, OBJPROP_BACK, TRUE); ObjectSetText(a_name_0, a_text_16, 8, "Arial", White); return (0); }