← К каталогу
Исходный код · ID 477

pipstriderv134_edu_nodll.mq4

Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

pipstriderv134_edu_nodll.mq4 — торговый советник для платформы MetaTrader 4, написанный на языке MQL4. Советник автоматизирует торговлю на финансовых рынках, используя сеточную стратегию с элементами мартингейла. Он рассчитывает торговый диапазон на основе среднегодового диапазона (ATR), открывает и закрывает позиции по заданным правилам, отслеживает текущую просадку и при необходимости закрывает все сделки.

Советник поддерживает режим скрытности (Stealth Mode), который можно включать вручную или настроить на автоматическое срабатывание в определённые дни недели. Также реализована функция Martingale Disrupter, позволяющая принудительно закрывать сделки при достижении заданного уровня прибыли. Доступны настройки максимальных уровней мартингейла для покупок и продаж, автоматическое закрытие позиций при их превышении.

Встроенная система уведомлений позволяет отправлять отчёты по электронной почте. Советник отображает текущую информацию о торговых уровнях, прибыли и просадке прямо на графике через функцию Comment. Все торговые операции выполняются через стандартный API MetaTrader 4 с контролем допустимого размера лота и проверки разрешения на торговлю.

Настройки программы

НастройкаОписание
version2 Версия — Строка, содержащая строку версии советника
OWN Авторские права — Строка с информацией об авторских правах
_Comment Комментарий ордера — Строка, добавляемая в комментарий к открываемым ордерам
DoTrades Торговля включена — Включает или отключает торговлю советником
MonitorAndClose Мониторинг и закрытие — Включает режим мониторинга и принудительного закрытия позиций
StealthMode Режим скрытности — Включает ручной режим скрытности, при котором советник не открывает новые сделки
AutoStealthMode Автоскрытность — Автоматически включает режим скрытности в определённое время недели
AllowLotsBeyondMaxSize Разрешить лоты сверх максимума — Разрешает превышение максимального размера лота при расчёте объёма
ModifyMartingale Модификация мартингейла — Включает корректировку размера лота при мартингейле
TradeDirection Направление торговли — Задаёт направление торговли: покупка, продажа, чередование или определение по расчёту
TradeRange Диапазон торговли — Задаёт фиксированный диапазон торговли в пунктах
WaitPips Ожидание в пипсах — Задаёт задержку в пипсах перед открытием следующей сделки
StopLoss Стоп-лосс — Задаёт стоп-лосс в пунктах от цены открытия
a1 Параметр a1 — Текстовый параметр, используемый для идентификации и отображения в интерфейсе
a2 Параметр a2 — Текстовый параметр, используемый для отображения в интерфейсе
UseMartingaleDisrupter Дисруптор мартингейла — Включает функцию принудительного закрытия сделок при достижении определённого уровня прибыли
AdjustTakeProfit Корректировка тейк-профита — Включает автоматическую корректировку уровня тейк-профита
DisrupterClose Порог дисруптора 1 — Задаёт порог прибыли для закрытия сделок дисруптором на первом уровне
DisrupterClose2 Порог дисруптора 2 — Задаёт порог прибыли для закрытия сделок дисруптором на втором уровне
OnlyAfterLevel Минимальный уровень 1 — Задаёт минимальный уровень мартингейла, начиная с которого активируются дополнительные функции
OnlyAfterLevel2 Минимальный уровень 2 — Задаёт второй минимальный уровень мартингейла для активации расширенных функций
MaxBuyMartingaleLevel Макс. уровень покупок — Задаёт максимальный допустимый уровень мартингейла для покупок
MaxSellMartingaleLevel Макс. уровень продаж — Задаёт максимальный допустимый уровень мартингейла для продаж
CloseBuyBeyondMax Закрывать покупки при максимуме — Включает автоматическое закрытие всех покупочных сделок при превышении максимального уровня мартингейла
CloseSellBeyondMax Закрывать продажи при максимуме — Включает автоматическое закрытие всех продажных сделок при превышении максимального уровня мартингейла
MaxDrawDownPct Макс. просадка % — Задаёт максимальный процент просадки, при превышении которого советник закрывает все сделки
LimitToThisPair Только текущая пара — Ограничивает расчёт просадки только текущим торговым инструментом
UseGridExpander Расширитель сетки — Включает автоматическое расширение диапазона торговли при увеличении уровня мартингейла
ExpandPips Расширение в пипсах — Задаёт дополнительное расширение диапазона в пипсах при достижении определённого уровня
ExpandPips2 Второе расширение в пипсах — Задаёт второе дополнительное расширение диапазона в пипсах при достижении более высокого уровня
Получить полный код

Поиск по коду файла

/*
   Generated by EX4-TO-MQ4 decompiler V4.0.438.1 [-]
   Website: 
   E-mail : p******m*@gmail.com
*/

/*
#import "PipStrider.dll"
   int get_req(int a0, int a1);
#import
*/
bool gi_76 = TRUE;

string gs_84 = "PipStrider v_1.34 ";
extern string version2 = "PipStrider v_1.34 ";
extern string OWN = "Copyright ? 2010-2011, Forex-Goldmine, Inc.";
bool gi_unused_108 = TRUE;
extern string _Comment = "PipStrider ";
extern bool DoTrades = TRUE;
extern bool MonitorAndClose = FALSE;
extern bool StealthMode = FALSE;
extern bool AutoStealthMode = TRUE;
extern bool AllowLotsBeyondMaxSize = FALSE;
extern bool ModifyMartingale = TRUE;
bool gi_144 = TRUE;
int gi_148 = 2;
extern int TradeDirection = 3;
extern int TradeRange = 40;
bool gi_160 = TRUE;
bool gi_164 = FALSE;
double gd_168 = 5.0;
extern int WaitPips = 0;
bool gi_180 = TRUE;
extern int StopLoss = 0;
extern string a1 = "----------------------------------------------";
extern string a2 = " Martingale Disrupter (tm) Technology";
extern bool UseMartingaleDisrupter = TRUE;
extern bool AdjustTakeProfit = FALSE;
extern double DisrupterClose = 0.75;
extern double DisrupterClose2 = 0.75;
double gd_228 = -10.0;
bool gi_236 = TRUE;
bool gi_240 = TRUE;
bool gi_244 = FALSE;
extern int OnlyAfterLevel = 5;
extern int OnlyAfterLevel2 = 6;
int gi_256 = 0;
extern int MaxBuyMartingaleLevel = 6;
extern int MaxSellMartingaleLevel = 6;
extern bool CloseBuyBeyondMax = FALSE;
extern bool CloseSellBeyondMax = FALSE;
extern double MaxDrawDownPct = 100.0;
extern bool LimitToThisPair = FALSE;
extern bool UseGridExpander = TRUE;
extern int ExpandPips = 0;
extern int ExpandPips2 = 0;
int gi_300 = 100;
int gi_unused_304 = 0;
int gi_unused_308 = 0;
extern string a3 = "----------------------------------------------";
extern double TradeLots = 0.0;
extern double BalanceFactor = 3000.0;
extern double ControlBalance = 0.0;
extern double LockInProfits = 0.0;
extern bool StopWhenProfitReached = FALSE;
extern string a4 = "Set to -1 to set 0 or a positive number to set actual value";
extern double ResetFundsWithdrawn = 0.0;
extern double MaxLots = 1000.0;
extern int MagicNumber = 734775;
extern bool Send_Email = FALSE;
extern int Send_Frequency = 0;
extern int Send_Minute = 0;
extern bool SUNDAY = TRUE;
extern bool MONDAY = TRUE;
extern bool TUESDAY = TRUE;
extern bool WEDNESDAY = TRUE;
extern bool THURSDAY = TRUE;
extern bool FRIDAY = TRUE;
extern bool ResetMaximums = FALSE;
extern int LookBackDays = 5;
extern double CenterPrice = 0.0;
extern int LookBackMinimumPips = 125;
double gd_440 = 2.0;
bool gi_448 = TRUE;
int g_period_452 = 7;
extern string note1 = "---- Caution! For Emergency Closing of Trades ---";
extern bool CloseAllBuyTrades = FALSE;
extern bool CloseAllSellTrades = FALSE;
int gi_unused_472 = 40;
int gi_476 = 40;
int gi_480 = 40;
int gi_484 = 30;
int gi_488 = 0;
double gd_unused_492 = 20.0;
double gd_500 = 0.01;
bool gi_508 = FALSE;
bool gi_512 = FALSE;
string gs_unused_516 = " ";
double gd_524 = 0.0;
double gd_532 = 0.0;
double g_order_open_price_540 = 0.0;
double g_order_open_price_548 = 0.0;
double gd_556 = 0.0;
double gd_564 = 0.0;
double gd_unused_572 = 0.0;
int gi_580 = 0;
int g_error_584 = 0/* NO_ERROR */;
double g_order_open_price_588 = 0.0;
double gd_unused_596 = 0.0;
int gi_604 = 0;
int gi_608 = 0;
string g_comment_612 = " ";
int gi_620 = 3;
int g_color_624 = CLR_NONE;
int g_color_628 = CLR_NONE;
bool gi_632 = FALSE;
double gd_unused_636 = 0.0;
double gd_unused_644 = 0.0;
string gs_unused_652 = " ";
int gi_unused_660 = 0;
int gi_unused_664 = 0;
int gi_unused_668 = 0;
double gd_unused_672 = 0.0;
int gi_unused_680 = 0;
int gi_unused_684 = 0;
int gi_unused_688 = 0;
double gd_unused_692 = 0.0;
int gi_700 = 0;
int gi_704 = 0;
int gi_708 = 0;
int gi_unused_712 = 0;
int gi_unused_716 = 0;
int gi_unused_720 = 0;
int gi_unused_724 = 0;
int gi_unused_728 = 0;
double gd_unused_732 = 98765.43;
double gd_unused_740 = 98765.43;
int gi_748 = 2;
int g_slippage_752 = 10;
double gd_756 = 0.0;
double gd_764 = 0.0;
bool g_bool_772 = TRUE;
double gd_776 = 0.0;
double gd_784 = 0.0;
int g_count_792 = 0;
int g_count_796 = 0;
int g_count_800 = 0;
int gi_804 = 0;
int g_global_var_808 = 0;
int g_global_var_812 = 0;
int gi_816 = 0;
int g_day_820 = 0;
string g_dbl2str_824 = "";
double gd_832 = 0.0;
double gd_840 = 0.0;
double g_order_lots_848 = 0.0;
double g_order_lots_856 = 0.0;
double gd_864 = 0.0;
double gd_872 = 0.0;
bool gi_880 = FALSE;
double gd_884 = 0.0;
double gd_892 = 0.0;
double gd_900 = 0.0;
double gda_908[3];
double gda_912[3];
double gda_916[3];
double gda_920[3];
double gd_924 = 0.0;
double gd_unused_932 = 0.0;
double gd_940 = 0.0;
double gd_948 = 0.0;
double gd_unused_956 = 0.0;
double gd_964 = 0.0;
int gi_972 = 0;
double gd_976 = 0.0;
double gd_984 = 0.0;
bool gi_992 = FALSE;
int gi_996 = 0;
int gi_1000 = 30;
int gi_1004 = 0;
int gi_1008 = 0;
int gi_unused_1012 = 0;
int gi_1016 = 0;
double gd_1020 = 0.0;
int gi_1028 = 0;
double gd_1032 = 0.0;
double gd_1040 = 0.0;
int gi_1048 = 0;
int gi_1052 = 0;
double gd_unused_1056 = 0.0;
double gd_unused_1064 = 0.0;
double gd_1072 = 0.0;
string gs_1080 = " ";
int g_count_1088 = 0;
int g_count_1092 = 0;
int g_count_1096 = 0;
int g_count_1100 = 0;
int g_count_1104 = 0;
int g_count_1108 = 0;
int gi_unused_1112 = 0;
int gi_1116 = 0;
double gd_1120 = 0.0;
double gd_1128 = 0.0;
int gi_1136 = 0;
double gd_1140 = 0.0;
double gd_1148 = 0.0;
bool gi_unused_1156 = FALSE;
int gi_unused_1160 = 0;
int gi_1164 = 0;
int g_acc_number_1168 = 0;
int gi_1172 = 7;
int gi_unused_1176 = 0;
int gi_unused_1180 = 0;

int init() {
      // код доступен только после оплаты
   }

int deinit() {
   gd_864 = AccountBalance() - gd_872;
   if (gd_864 < ControlBalance / 10.0 || gd_864 < 0.0) gd_864 = AccountBalance();
   Print("Min TradeRange Was " + gi_1052);
   Print("Max TradeRange Was " + gi_1048);
   Print("Max DrawDown Percent For Past Day = " + DoubleToStr(100.0 * gd_1140, 2));
   Print("Max Margin Utilization Percentage vs. Equity For Latest Trade Sequence = " + DoubleToStr(100.0 * gd_1148, 2));
   Print("Max DrawDown Percent Ever Reached Was " + DoubleToStr(100.0 * gd_1040, 2));
   Print("Max Buy Martingale Level Reached Was " + g_global_var_808);
   Print("Max Sell Martingale Level Reached Was " + g_global_var_812);
   if (g_count_1088 > 0) Print("Level 4 Counter = " + g_count_1088);
   if (g_count_1092 > 0) Print("Level 5 Counter = " + g_count_1092);
   if (g_count_1096 > 0) Print("Level 6 Counter = " + g_count_1096);
   if (g_count_1100 > 0) Print("Level 7 Counter = " + g_count_1100);
   if (g_count_1104 > 0) Print("Level 8 Counter = " + g_count_1104);
   if (g_count_1108 > 0) Print("Level 9 Counter = " + g_count_1108);
   Print("Working Balance Was " + DoubleToStr(gd_864, 2));
   Print("Funds Withdrawn Was " + DoubleToStr(gd_872, 2));
   f0_17();
   return (0);
}

int start() {
      // код доступен только после оплаты
   }

double f0_11(string a_symbol_0, int ai_8) {
   double ld_ret_12 = 0.0;
   gi_580 = OrdersTotal();
   for (int pos_20 = gi_580 - 1; pos_20 >= 0; pos_20--) {
      if (!OrderSelect(pos_20, SELECT_BY_POS, MODE_TRADES)) {
         g_error_584 = GetLastError();
         Print("OrderSelect( ", pos_20, ", SELECT_BY_POS ) - Error #", g_error_584);
      } else {
         if (OrderSymbol() == a_symbol_0) {
            if (OrderMagicNumber() == MagicNumber) {
               if (ai_8 == 1 && OrderType() == OP_BUY) continue;
               if (ai_8 == 2 && OrderType() == OP_SELL) continue;
               if (OrderCloseTime() == 0) ld_ret_12 += OrderLots();
            }
         }
      }
   }
   return (ld_ret_12);
}

double f0_31(int ai_0) {
   double ld_ret_4 = 0.0;
   bool li_12 = FALSE;
   gi_580 = OrdersTotal();
   for (int pos_16 = 0; pos_16 <= gi_580 - 1; pos_16++) {
      if (!OrderSelect(pos_16, SELECT_BY_POS, MODE_TRADES)) {
         g_error_584 = GetLastError();
         Print("OrderSelect( ", pos_16, ", SELECT_BY_POS ) - Error #", g_error_584);
      } else {
         if (OrderSymbol() == Symbol()) {
            if (OrderMagicNumber() == MagicNumber) {
               if (ai_0 == 1 && OrderType() == OP_BUY) continue;
               if (ai_0 == 2 && OrderType() == OP_SELL) continue;
               if (OrderCloseTime() == 0) {
                  li_12 = FALSE;
                  if (gi_236 && ai_0 == 2) li_12 = TRUE;
                  if (gi_240 && ai_0 == 1) li_12 = TRUE;
                  if (gi_244 && ai_0 == 2 && g_count_796 >= OnlyAfterLevel2 && OrderSwap() < 0.0) li_12 = FALSE;
                  if (gi_244 && ai_0 == 1 && g_count_800 >= OnlyAfterLevel2 && OrderSwap() < 0.0) li_12 = FALSE;
                  ld_ret_4 += OrderProfit();
                  if (li_12) ld_ret_4 += OrderSwap();
               }
            }
         }
      }
   }
   return (ld_ret_4);
}

void f0_24() {
   int li_0 = LookBackDays;
   double ihigh_4 = iHigh(Symbol(), PERIOD_D1, iHighest(Symbol(), PERIOD_D1, MODE_HIGH, li_0, 0));
   double ilow_12 = iLow(Symbol(), PERIOD_D1, iLowest(Symbol(), PERIOD_D1, MODE_LOW, li_0, 0));
   gd_556 = (ihigh_4 + ilow_12) / 2.0;
   for (gd_556 = NormalizeDouble(gd_556, Digits); (ihigh_4 - ilow_12) / Point < LookBackMinimumPips && li_0 < 365; gd_556 = NormalizeDouble(gd_556, Digits)) {
      li_0++;
      ihigh_4 = iHigh(Symbol(), PERIOD_D1, iHighest(Symbol(), PERIOD_D1, MODE_HIGH, li_0, 0));
      ilow_12 = iLow(Symbol(), PERIOD_D1, iLowest(Symbol(), PERIOD_D1, MODE_LOW, li_0, 0));
      gd_556 = (ihigh_4 + ilow_12) / 2.0;
   }
   if (CenterPrice != 0.0) {
      gd_556 = CenterPrice;
      gd_556 = NormalizeDouble(gd_556, Digits);
   }
}

void f0_17() {
   string name_4;
   int objs_total_0 = ObjectsTotal();
   for (int li_12 = 0; li_12 < objs_total_0; li_12++) {
      name_4 = ObjectName(li_12);
      if (name_4 != "") ObjectDelete(name_4);
   }
   ObjectDelete("FLP_txt");
   ObjectDelete("P_txt");
}

void f0_25(int a_cmd_0) {
   int cmd_16;
   int ticket_20;
   double order_lots_24;
   string symbol_32;
   int order_total_4 = OrdersTotal();
   for (int count_8 = 0; count_8 < 5; count_8++) {
      for (int pos_12 = 0; pos_12 < order_total_4; pos_12++) {
         while (!IsTradeAllowed()) {
         }
         OrderSelect(pos_12, SELECT_BY_POS, MODE_TRADES);
         cmd_16 = OrderType();
         ticket_20 = OrderTicket();
         order_lots_24 = OrderLots();
         symbol_32 = OrderSymbol();
         if (symbol_32 == Symbol() && cmd_16 == OP_BUY && cmd_16 == a_cmd_0 && OrderMagicNumber() == MagicNumber) OrderClose(ticket_20, order_lots_24, MarketInfo(symbol_32, MODE_BID), 3, CLR_NONE);
         if (symbol_32 == Symbol() && cmd_16 == OP_SELL && cmd_16 == a_cmd_0 && OrderMagicNumber() == MagicNumber) OrderClose(ticket_20, order_lots_24, MarketInfo(symbol_32, MODE_ASK), 3, CLR_NONE);
      }
   }
}

double f0_8(int ai_0) {
   double ld_ret_4 = 0.0;
   double order_open_price_12 = 0.0;
   gi_580 = OrdersTotal();
   double ld_unused_20 = 0.0;
   double ld_unused_28 = 0.0;
   double ld_36 = MathFloor(gi_704 / 2) * Point;
   if (ai_0 == 1) ld_36 = MathFloor(gi_708 / 2) * Point;
   bool li_44 = FALSE;
   bool li_48 = FALSE;
   if (ai_0 == 1) gd_840 = 0.0;
   if (ai_0 == 2) gd_832 = 0.0;
   if (ai_0 == 1) g_order_lots_856 = 0.0;
   if (ai_0 == 2) g_order_lots_848 = 0.0;
   int li_unused_52 = 0;
   for (int pos_56 = gi_580 - 1; pos_56 >= 0; pos_56--) {
      if (!OrderSelect(pos_56, SELECT_BY_POS, MODE_TRADES)) {
         g_error_584 = GetLastError();
         Print("OrderSelect( ", pos_56, ", SELECT_BY_POS ) - Error #", g_error_584);
      } else {
         if (OrderSymbol() == Symbol()) {
            if (OrderMagicNumber() == MagicNumber) {
               if (OrderCloseTime() == 0) {
                  if (ai_0 == 1 && OrderType() == OP_BUY) continue;
                  if (ai_0 == 2 && OrderType() == OP_SELL) continue;
                  if (ai_0 == 2 && order_open_price_12 != 0.0 && (OrderOpenPrice() > order_open_price_12 + ld_36 || (!AllowLotsBeyondMaxSize))) {
                     if (li_48 == FALSE) gd_832 = OrderOpenPrice();
                     gd_832 = NormalizeDouble(gd_832, Digits);
                     g_order_lots_848 = OrderLots();
                     li_48 = TRUE;
                     continue;
                  }
                  if (ai_0 == 1 && order_open_price_12 != 0.0 && (OrderOpenPrice() < order_open_price_12 - ld_36 || (!AllowLotsBeyondMaxSize))) {
                     if (li_44 == FALSE) gd_840 = OrderOpenPrice();
                     gd_840 = NormalizeDouble(gd_840, Digits);
                     g_order_lots_856 = OrderLots();
                     li_44 = TRUE;
                     continue;
                  }
                  if (MathAbs(order_open_price_12 - OrderOpenPrice()) > ld_36 || (!AllowLotsBeyondMaxSize)) ld_ret_4 = OrderLots();
                  if (MathAbs(order_open_price_12 - OrderOpenPrice()) < ld_36 && AllowLotsBeyondMaxSize) ld_ret_4 += OrderLots();
                  g_order_open_price_588 = OrderOpenPrice();
                  order_open_price_12 = OrderOpenPrice();
               }
            }
         }
      }
   }
   return (ld_ret_4);
}

void f0_16(int ai_0, double ad_4) {
   double ld_unused_12 = 0.0;
   gi_580 = OrdersTotal();
   double ld_20 = 0.0;
   double ld_unused_28 = 0.0;
   for (int pos_36 = gi_580 - 1; pos_36 >= 0; pos_36--) {
      if (!OrderSelect(pos_36, SELECT_BY_POS, MODE_TRADES)) {
         g_error_584 = GetLastError();
         Print("OrderSelect( ", pos_36, ", SELECT_BY_POS ) - Error #", g_error_584);
      } else {
         if (OrderSymbol() == Symbol()) {
            if (OrderMagicNumber() == MagicNumber) {
               if (OrderCloseTime() == 0) {
                  if (ai_0 == 1 && OrderType() == OP_BUY) continue;
                  if (ai_0 == 2 && OrderType() == OP_SELL) continue;
                  if (ai_0 == 2 && ad_4 != 0.0) ld_20 = NormalizeDouble(ad_4, Digits);
                  if (ai_0 == 1 && ad_4 != 0.0) ld_20 = NormalizeDouble(ad_4, Digits);
                  if (gi_992 == FALSE)
                     if (NormalizeDouble(OrderTakeProfit(), Digits) != ld_20 && ld_20 != 0.0) OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), NormalizeDouble(ld_20, Digits), 0, CLR_NONE);
                  if (gi_992 == TRUE)
                     if (OrderTakeProfit() != 0.0) OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), 0.0, 0, CLR_NONE);
               }
            }
         }
      }
   }
}

void f0_27(int ai_0) {
   double ld_unused_4 = 0.0;
   gi_580 = OrdersTotal();
   double ld_unused_12 = 0.0;
   double ld_20 = 0.0;
   for (int pos_28 = gi_580 - 1; pos_28 >= 0; pos_28--) {
      if (!OrderSelect(pos_28, SELECT_BY_POS, MODE_TRADES)) {
         g_error_584 = GetLastError();
         Print("OrderSelect( ", pos_28, ", SELECT_BY_POS ) - Error #", g_error_584);
      } else {
         if (OrderSymbol() == Symbol()) {
            if (OrderMagicNumber() == MagicNumber) {
               if (OrderCloseTime() == 0) {
                  if (ai_0 == 1 && OrderType() == OP_BUY) continue;
                  if (ai_0 == 2 && OrderType() == OP_SELL) continue;
                  if (ai_0 == 2 && StopLoss != 0) ld_20 = NormalizeDouble(OrderOpenPrice() - StopLoss * Point, Digits);
                  if (ai_0 == 1 && StopLoss != 0) ld_20 = NormalizeDouble(OrderOpenPrice() + StopLoss * Point, Digits);
                  if (gi_992 == FALSE)
                     if (StopLoss != 0 && NormalizeDouble(OrderStopLoss(), Digits) != ld_20 && ld_20 != 0.0) OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(ld_20, Digits), OrderTakeProfit(), 0, CLR_NONE);
                  if (gi_992 == TRUE) {
                     if (OrderStopLoss() != 0.0) OrderModify(OrderTicket(), OrderOpenPrice(), 0.0, OrderTakeProfit(), 0, CLR_NONE);
                     if (ld_20 != 0.0 && StopLoss != 0 && ai_0 == 2 && Bid <= ld_20) OrderClose(OrderTicket(), OrderLots(), MarketInfo(Symbol(), MODE_BID), 3, CLR_NONE);
                     if (ld_20 != 0.0 && StopLoss != 0 && ai_0 == 1 && Ask >= ld_20) OrderClose(OrderTicket(), OrderLots(), MarketInfo(Symbol(), MODE_ASK), 3, CLR_NONE);
                  }
               }
            }
         }
      }
   }
}

int f0_10() {
   int li_4;
   int li_0 = 30;
   if (!IsTradeAllowed()) {
      li_4 = GetTickCount();
      Print("Trade context is busy! Wait until it is free...");
      while (true) {
         if (IsStopped()) {
            Print("The expert was terminated by the user!");
            return (-1);
         }int e = GetTickCount() - li_4;
         if ( e > 1000 * li_0) {
            Print("The waiting limit exceeded (" + li_0 + " ???.)!");
            return (-2);
         }
         if (IsTradeAllowed()) {
            Print("Trade context has become free!");
            RefreshRates();
            return (1);
         }
         Sleep(100);
      }
   }
   return (1);
}

int f0_7(double a_lots_0, int a_magic_8) {
   int slippage_44;
   int count_48;
   int ticket_52;
   double price_56;
   double ld_12 = Marke

Показано первые 50% кода (символов: 47378)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
4 737,80₽ ≈ $57.91