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

Aladdin 5 FX

aladdin5fx.mq4

Похожие материалы по тегам

#1.mtf_collider_h4_close_13_v18bar.mq4MQL4 / MetaTrader 4 · 1 общих теговea robofibo source v.11.2.mq4MQL4 / MetaTrader 4 · 1 общих теговsma crossover scalper ea for mt4.mq4MQL4 / MetaTrader 4 · 1 общих теговr15 pivot points expert advisor by @fundedmillionairess.mq4MQL4 / MetaTrader 4 · 1 общих теговnewstrader.mq5MQL5 / MetaTrader 5 · 1 общих теговmm3.0_flip_codepro_v3.1_with_cooldown@lifeindreamsworld.mq5MQL5 / MetaTrader 5 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

Aladdin 5 FX — торговый советник для MetaTrader 4, разработанный компанией Finans Plus (2011). Советник анализирует ценовые данные с помощью набора технических индикаторов (скользящие средние, CCI, ATR, WPR, стохастик) на таймфрейме M15 и формирует сигналы на открытие и закрытие позиций. Поддерживает автоматическое управление размером лота с функцией восстановления баланса на основе истории сделок.

Основные возможности включают открытие ордеров BUY/SELL с установкой Stop Loss и Take Profit, размещение лимитных и стоп-ордеров, скользящий стоп-лосс (trailing stop), а также мониторинг спреда. Советник предоставляет гибкие фильтры для открытия и закрытия позиций, множественные магические номера и подробное логирование торговых операций.

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

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

НастройкаОписание
EA_Name Имя советника — Строковый параметр с именем торгового советника.
Creator Автор — Строковый параметр с информацией об авторе.
Options1 Настройки торговли — Строковый параметр группы торговых настроек.
CloseOnlyProfit Закрытие только при прибыли — Переключатель: закрывать позиции только при наличии прибыли.
TakeProfit Тейк-профит в пунктах — Расстояние тейк-профита в пунктах от цены открытия.
StopLoss Стоп-лосс в пунктах — Расстояние стоп-лосса в пунктах от цены открытия.
MaxSpread Максимальный спред — Допустимый максимальный спред в пунктах для торговли.
Slippage Проскальгивание — Допустимое проскальгивание в пунктах.
Options2 Настройки управления лотом — Строковый параметр группы настроек управления лотом.
AutoMM Автоматическое управление лотом — Автоматическое управление лотом на основе свободного маржинального обеспечения (в долларах).
AutoMM_Max Максимальный лот при авто-управлении — Максимальный размер лота при автоматическом управлении.
FixedLot Фиксированный лот — Фиксированный размер лота при отключённом автоматическом управлении.
StartLot Начальный лот — Начальный размер лота для расчёта при автоматическом управлении.
MaximalLot Максимальный лот — Максимально допустимый размер лота.
RecoveryMode Режим восстановления баланса — Переключатель: включить режим восстановления баланса с динамическим расчётом лота.
Options3 Настройки восстановления — Строковый параметр группы настроек восстановления.
MaxAnalizCount Максимум сделок для анализа — Максимальное количество исторических сделок для анализа при расчёте лота.
Risk Процент риска — Процент риска для расчёта размера лота в режиме восстановления.
RiskFreeMargin Коэффициент свободной маржи — Коэффициент свободного маржинального обеспечения для расчёта лота.
RiskMargin Коэффициент маржинального ограничения — Коэффициент маржинального обеспечения для ограничения торговли.
MultiLotPercent Множитель лота восстановления — Процентный множитель для расчёта лота в режиме восстановления баланса.
Options4 Параметры ордеров — Строковый параметр группы параметров ордеров.
UseStopLevels Использовать уровни стопа и профита — Переключатель: использовать ли уровни стоп-лосса и тейк-профита при открытии.
StopOrder Расстояние стоп-ордера — Расстояние в пунктах для стоп-ордера открытия позиции.
TimeStopOrder Время жизни стоп-ордера — Время жизни стоп-ордера в минутах.
IFStop Расстояние стоп-ордера — Расстояние в пунктах для стоп-ордера открытия позиции.
KStop Множитель стоп-ордера — Множитель для расчёта размера стоп-ордера.
ModifStop Модификация стоп-ордеров — Переключатель: модифицировать ли стоп-ордера при удалении от цены.
OrderDol Расстояние долларовой модели — Расстояние в пунктах для долларовой модели управления ордерами.
KDol Множитель долларового лота — Множитель для расчёта размера лота при долларовой модели управления.
ModifDol Модификация по долларовой модели — Переключатель: модифицировать ли ордера при смещении цены (долларовая модель).
ModifTake Модификация тейк-профита — Переключатель: модифицировать ли тейк-профит при смещении цены.
LimitOrder Расстояние лимитного ордера — Расстояние в пунктах для размещения лимитного ордера.
TimeL Время жизни лимитного ордера — Время жизни лимитного ордера в минутах.
KLimit Множитель лимитного ордера — Множитель для расчёта размера лимитного ордера.
DeleteLimit Удаление лимитных ордеров — Переключатель: удалять ли лимитные ордера при определённых условиях.
DeleteLimitU Удаление лимитных ордеров по фильтрам — Переключатель: удалять ли лимитные ордера при несработке фильтров.
ReversOrder Расстояние реверсивного ордера — Расстояние в пунктах для реверсивного стоп-ордера.
KRevers Множитель реверсивного ордера — Множитель для расчёта размера реверсивного стоп-ордера.
TimeRewers Время жизни реверсивного ордера — Время жизни реверсивного ордера в минутах.
Options5 Настройки trailing stop — Строковый параметр группы настроек скользящего стопа.
TrailingStop Расстояние скользящего стопа — Расстояние в пунктах для активации скользящего стоп-лосса.
TrailingStep Шаг скользящего стопа — Шаг приращения для скользящего стоп-лосса.
Utral Расстояние активации скользящего стопа — Расстояние в пунктах для активации скользящего стоп-лосса (альтернативный параметр).
Options6 Профессиональные настройки — Строковый параметр группы профессиональных настроек.
Long Разрешить длинные позиции — Переключатель: разрешить открытие длинных позиций (BUY).
Short Разрешить короткие позиции — Переключатель: разрешить открытие коротких позиций (SELL).
NormalizeLot Нормализация лота — Разрядность нормализации размера лота.
WriteLog Торговый журнал — Переключатель: записывать ли торговый журнал.
WriteDebugLog Журнал отладки — Переключатель: записывать ли подробный журнал отладки.
PrintLogOnChart Логи на графике — Переключатель: отображать ли логи на графике.
MagicNumber Магический номер основной — Магический номер для идентификации ордеров основного типа.
MagicNumber1 Магический номер дополнительный 1 — Магический номер для идентификации ордеров дополнительного типа 1.
MagicNumber2 Магический номер дополнительный 2 — Магический номер для идентификации ордеров дополнительного типа 2.
MagicNumber3 Магический номер дополнительный 3 — Магический номер для идентификации ордеров дополнительного типа 3.
MagicNumber4 Магический номер дополнительный 4 — Магический номер для идентификации ордеров дополнительного типа 4.
Options7 Настройки оптимизации — Строковый параметр группы настроек оптимизации.
_NotLoss Настройка отсутствия убытка — Строковый параметр настройки отсутствия убытка.
SecProfit Расстояние корректировки стоп-лосса — Расстояние в пунктах для корректировки стоп-лосса после получения прибыли.
SecProfitTr Расстояние корректировки при большой прибыли — Расстояние в пунктах для корректировки стоп-лосса после значительной прибыли.
MaxLossPoints Максимальный убыток в пунктах — Максимальный убыток в пунктах для фильтра закрытия позиции.
_Indicator_Long Индикатор для длинных позиций — Строковый параметр выбора индикатора для длинных позиций.
iMA_PeriodLONG Период СМА для длинной позиции — Период индикатора скользящей средней для длинной позиции.
iCCI_PeriodLONG Период CCI для длинной позиции — Период индикатора CCI для расчёта сигнала длинной позиции.
iATR_PeriodLONG Период ATR для длинной позиции — Период индикатора ATR для расчёта сигнала длинной позиции.
iWPR_PeriodLONG Период WPR для длинной позиции — Период индикатора WPR для длинной позиции.
iMA_LONG_Open_a Параметр СМА длинной позиции (а) — Параметр скользящей средней для сигнала открытия длинной позиции (значение а).
iMA_LONG_Open_b Параметр СМА длинной позиции (b) — Параметр скользящей средней для сигнала открытия длинной позиции (значение b).
iWPR_LONG_Open_a Параметр WPR длинной позиции (а) — Параметр WPR для сигнала открытия длинной позиции (значение а).
iWPR_LONG_Open_b Параметр WPR длинной позиции (b) — Параметр WPR для сигнала открытия длинной позиции (значение b).
_Indicator_Short Индикатор для коротких позиций — Строковый параметр выбора индикатора для коротких позиций.
iMA_PeriodShort Период СМА для короткой позиции — Период индикатора скользящей средней для короткой позиции.
iCCI_PeriodShort Период CCI для короткой позиции — Период индикатора CCI для расчёта сигнала короткой позиции.
iATR_PeriodShort Период ATR для короткой позиции — Период индикатора ATR для расчёта сигнала короткой позиции.
iWPR_PeriodShort Период WPR для короткой позиции — Период индикатора WPR для короткой позиции.
iMA_Short_Open_a Параметр СМА короткой позиции (а) — Параметр скользящей средней для сигнала открытия короткой позиции (значение а).
iMA_Short_Open_b Параметр СМА короткой позиции (b) — Параметр скользящей средней для сигнала открытия короткой позиции (значение b).
iWPR_Short_Open_a Параметр WPR короткой позиции (а) — Параметр WPR для сигнала открытия короткой позиции (значение а).
iWPR_Short_Open_b Параметр WPR короткой позиции (b) — Параметр WPR для сигнала открытия короткой позиции (значение b).
_AddOpenFilters Дополнительные фильтры открытия — Строковый параметр дополнительных фильтров открытия.
FilterATR Фильтр ATR — Множитель фильтра ATR для определения достаточной волатильности при открытии позиций.
iCCI_OpenFilter Порог CCI для фильтра открытия — Пороговое значение CCI для фильтра открытия позиции.
_CloseOrderFilters Дополнительные фильтры закрытия — Строковый параметр дополнительных фильтров закрытия.
Price_Filter_Close Фильтр закрытия по цене — Расстояние в пунктах для фильтра закрытия позиции по цене.
iWPR_Filter_Close Порог WPR для фильтра закрытия — Пороговое значение WPR для фильтра закрытия позиции.
End Завершение — Строковый параметр-завершение.
Получить полный код

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

extern string EA_Name = "Aladdin 5 FX";
extern string Creator = "Copyright ? 2011, Finans Plus Company";
extern string Options1 = "-------Trading-------";
int gi_104 = 3;
extern bool CloseOnlyProfit = TRUE;
extern int TakeProfit = 34;
extern int StopLoss = 22;
extern double MaxSpread = 2.0;
extern double Slippage = 2.0;
extern string Options2 = "-------MoneyManagement-------";
extern double AutoMM = 10.0;
extern double AutoMM_Max = 20.0;
extern double FixedLot = 0.01;
extern double StartLot = 0.0;
extern double MaximalLot = 1000.0;
extern bool RecoveryMode = TRUE;
extern string Options3 = "---If RecoveryMode = TRUE, setup---";
extern int MaxAnalizCount = 50;
extern double Risk = 25.0;
extern double RiskFreeMargin = 0.5;
extern double RiskMargin = 0.0;
extern double MultiLotPercent = 2.0;
extern string Options4 = "-------Parametres Orders-------";
extern bool UseStopLevels = TRUE;
extern double StopOrder = 0.0;
extern double TimeStopOrder = 20.0;
extern int IFStop = 20;
extern double KStop = 1.0;
extern bool ModifStop = TRUE;
bool gi_276 = TRUE;
extern double OrderDol = 2.0;
extern double KDol = 2.0;
extern bool ModifDol = FALSE;
extern bool ModifTake = FALSE;
extern double LimitOrder = 0.0;
extern double TimeL = 11.0;
extern double KLimit = 1.5;
extern bool DeleteLimit = TRUE;
extern bool DeleteLimitU = TRUE;
extern int ReversOrder = 0;
extern double KRevers = 2.0;
extern double TimeRewers = 11.0;
extern string Options5 = "-------Trailing-------";
extern double TrailingStop = 0.0;
extern double TrailingStep = 0.0;
extern double Utral = 10.0;
extern string Options6 = "-------Professional options-------";
extern bool Long = TRUE;
extern bool Short = TRUE;
extern int NormalizeLot = 2;
int g_timeframe_408 = PERIOD_M5;
double gd_412 = 10.0;
bool gi_420 = FALSE;
extern bool WriteLog = TRUE;
extern bool WriteDebugLog = TRUE;
extern bool PrintLogOnChart = TRUE;
string gs_unused_436 = "????? ???????? ?????";
bool gi_444 = FALSE;
double gd_448 = 14.0;
double gd_456 = 1.0;
double gd_464 = 5.0;
double gd_472 = 1.0;
double gd_480 = 0.0;
double gd_488 = 6.0;
extern int MagicNumber = 567833;
extern int MagicNumber1 = 567834;
extern int MagicNumber2 = 567835;
extern int MagicNumber3 = 567836;
extern int MagicNumber4 = 567837;
int g_color_516 = Gold;
int g_color_520 = Lime;
extern string Options7 = "-------Optimization-------";
extern string _NotLoss = "---";
extern int SecProfit = 2;
extern int SecProfitTr = 8;
extern int MaxLossPoints = -65;
double g_pips_552 = 0.0;
extern string _Indicator_Long = "---";
extern int iMA_PeriodLONG = 55;
extern int iCCI_PeriodLONG = 18;
extern int iATR_PeriodLONG = 14;
extern int iWPR_PeriodLONG = 11;
extern int iMA_LONG_Open_a = 18;
extern int iMA_LONG_Open_b = 39;
extern int iWPR_LONG_Open_a = 1;
extern int iWPR_LONG_Open_b = 5;
extern string _Indicator_Short = "---";
extern int iMA_PeriodShort = 55;
extern int iCCI_PeriodShort = 18;
extern int iATR_PeriodShort = 14;
extern int iWPR_PeriodShort = 11;
extern int iMA_Short_Open_a = 15;
extern int iMA_Short_Open_b = 39;
extern int iWPR_Short_Open_a = 1;
extern int iWPR_Short_Open_b = 5;
extern string _AddOpenFilters = "---";
extern int FilterATR = 6;
extern double iCCI_OpenFilter = 150.0;
extern string _CloseOrderFilters = "---";
extern int Price_Filter_Close = 14;
extern int iWPR_Filter_Close = 90;
extern string End = "*** Good Luck ***";
double gd_684;
int gi_692;
int gi_unused_696 = 0;
int gi_700;
double gd_704;
string gs_712;
double gd_720 = 3.0;
int g_slippage_728;
int g_slippage_732;
int gi_736 = 1;
double gd_740;
bool gi_748;
string g_comment_752 = "Aladdin5FX";
int gi_760 = 0;
double g_minlot_764 = 0.01;
double gd_772 = 0.01;
double g_lotstep_780 = 0.01;
int gi_788 = 100000;
double g_marginrequired_792 = 1000.0;
double gd_800 = 1.0;
double gd_808;
int gi_816;
int gi_820;
int gi_824;
int gi_828;
int gi_832;
int gi_836;
int g_color_840 = Green;
int g_color_844 = Red;
int g_color_848 = DodgerBlue;
int g_color_852 = DeepPink;
bool gi_856 = TRUE;
string gs_860 = "alert.wav";
string gs_unused_868 = "alert.wav";
int gi_876 = 1;
bool gi_880 = FALSE;

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

int deinit() {
   if (ObjectFind("BKGR") >= 0) ObjectDelete("BKGR");
   if (ObjectFind("BKGR2") >= 0) ObjectDelete("BKGR2");
   if (ObjectFind("BKGR3") >= 0) ObjectDelete("BKGR3");
   if (ObjectFind("BKGR4") >= 0) ObjectDelete("BKGR4");
   if (ObjectFind("LV") >= 0) ObjectDelete("LV");
   return (0);
}

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

void f0_0() {
   if (f0_9() == 1) {
      if ((!gi_748) && WriteDebugLog) {
         Print("???????? ?????? ???????? ??-?? ???????? ??????.");
         Print("??????? ????? = ", DoubleToStr((Ask - Bid) / gd_684, 1), ",  MaxSpread = ", DoubleToStr(MaxSpread, 1));
         Print("??????? ????? ????????? ?????, ????? ????? ?????? ??????????.");
      }
      gi_748 = TRUE;
      return;
   }
   gi_748 = FALSE;
   if (f0_4() && f0_11() && Long) f0_1(OP_BUY);
   if (f0_5() && f0_11() && Short) f0_1(OP_SELL);
}

int f0_1(int a_cmd_0) {
   int li_40;
   double order_open_price_44;
   color color_52;
   int ticket_56;
   int error_60;
   string ls_64;
   double order_open_price_72;
   double ld_80;
   double ld_88;
   bool li_4 = FALSE;
   bool li_8 = FALSE;
   bool li_12 = FALSE;
   bool li_16 = FALSE;
   int li_unused_20 = 0;
   int li_unused_24 = 0;
   for (int pos_28 = OrdersTotal() - 1; pos_28 >= 0; pos_28--) {
      if (OrderSelect(pos_28, SELECT_BY_POS, MODE_TRADES) && OrderSymbol() == Symbol()) {
         if (OrderType() == OP_BUYLIMIT && OrderMagicNumber() == MagicNumber) li_4 = TRUE;
         if (OrderType() == OP_SELLLIMIT && OrderMagicNumber() == MagicNumber) li_8 = TRUE;
         if (OrderType() == OP_SELLSTOP && OrderMagicNumber() == MagicNumber) li_16 = TRUE;
         if (OrderType() == OP_BUYSTOP && OrderMagicNumber() == MagicNumber) li_12 = TRUE;
      }
   }
   bool li_32 = FALSE;
   bool li_36 = FALSE;
   double ld_96 = NormalizeDouble(TakeProfit * gd_684, gi_692);
   double ld_104 = NormalizeDouble(StopLoss * gd_684, gi_692);
   if (gi_760 > 0) {
      MathSrand(TimeLocal());
      li_40 = MathRand() % gi_760;
      if (WriteLog) Print("DelayRandomiser: ???????? ", li_40, " ??????.");
      Sleep(1000 * li_40);
   }
   double ld_112 = gd_808;
   if (StartLot > 0.0) ld_112 = StartLot;
   if (AccountFreeMarginCheck(gs_712, a_cmd_0, ld_112) <= 0.0 || GetLastError() == 134/* NOT_ENOUGH_MONEY */) {
      if (!(WriteDebugLog)) return (-1);
      Print("??? ???????? ?????? ???????????? ????????? ?????.");
      Comment("??? ???????? ?????? ???????????? ????????? ?????.");
      return (-1);
   }
   RefreshRates();
   if (a_cmd_0 == OP_BUY) {
      li_32 = TRUE;
      order_open_price_72 = NormalizeDouble(Ask, Digits);
      color_52 = g_color_840;
      if (UseStopLevels) {
         ld_80 = NormalizeDouble(order_open_price_72 + ld_96, Digits);
         ld_88 = NormalizeDouble(order_open_price_72 - ld_104, Digits);
      } else {
         ld_80 = 0;
         ld_88 = 0;
      }
   } else {
      li_36 = TRUE;
      order_open_price_72 = NormalizeDouble(Bid, Digits);
      color_52 = g_color_844;
      if (UseStopLevels) {
         ld_80 = NormalizeDouble(order_open_price_72 - ld_96, Digits);
         ld_88 = NormalizeDouble(order_open_price_72 + ld_104, Digits);
      } else {
         ld_80 = 0;
         ld_88 = 0;
      }
   }
   int li_120 = gi_736;
   while (li_120 > 0 && f0_11()) {
      if (gi_276 == TRUE && li_32 == TRUE) OrderSend(gs_712, OP_BUY, ld_112, NormalizeDouble(Ask, Digits), g_slippage_728, 0, 0, g_comment_752, MagicNumber, 0, color_52);
      if (gi_276 == TRUE && li_36 == TRUE) OrderSend(gs_712, OP_SELL, ld_112, NormalizeDouble(Bid, Digits), g_slippage_728, 0, 0, g_comment_752, MagicNumber, 0, color_52);
      if (LimitOrder > 0.0 && li_32 == TRUE && li_4 == FALSE) OrderSend(gs_712, OP_BUYLIMIT, ld_112, NormalizeDouble(Bid - LimitOrder * Point * gi_700, Digits), g_slippage_728, 0, 0, g_comment_752, MagicNumber, 0, color_52);
      if (LimitOrder > 0.0 && li_36 == TRUE && li_8 == FALSE) OrderSend(gs_712, OP_SELLLIMIT, ld_112, NormalizeDouble(Ask + LimitOrder * Point * gi_700, Digits), g_slippage_728, 0, 0, g_comment_752, MagicNumber, 0, color_52);
      if (ReversOrder > 0 && li_32 == TRUE && li_16 == FALSE) {
         OrderSend(gs_712, OP_SELLSTOP, KRevers * ld_112, NormalizeDouble(Bid - ReversOrder * Point * gi_700, Digits), g_slippage_728, 0, 0, "R", MagicNumber, TimeCurrent() +
            60.0 * TimeRewers, color_52);
      }
      if (ReversOrder > 0 && li_36 == TRUE && li_12 == FALSE) {
         OrderSend(gs_712, OP_BUYSTOP, KRevers * ld_112, NormalizeDouble(Ask + ReversOrder * Point * gi_700, Digits), g_slippage_728, 0, 0, "R", MagicNumber, TimeCurrent() +
            60.0 * TimeRewers, color_52);
      }
      Sleep(MathRand() / 1000);
      if (ticket_56 < 0) {
         error_60 = GetLastError();
         if (WriteDebugLog) {
            if (a_cmd_0 == OP_BUY) ls_64 = "OP_BUY";
            else ls_64 = "OP_SELL";
            Print("????????: OrderSend(", ls_64, ") ?????? = ", f0_16(error_60));
         }
         if (error_60 != 136/* OFF_QUOTES */) break;
         if (!(gi_880)) break;
         Sleep(6000);
         RefreshRates();
         if (a_cmd_0 == OP_BUY) order_open_price_44 = NormalizeDouble(Ask, Digits);
         else order_open_price_44 = NormalizeDouble(Bid, Digits);
         if (NormalizeDouble(MathAbs((order_open_price_44 - order_open_price_72) / gd_684), 0) > gi_876) break;
         order_open_price_72 = order_open_price_44;
         li_120--;
         if (li_120 > 0)
            if (WriteLog) Print("... ???????? ??????? ?????.");
      } else {
         if (OrderSelect(ticket_56, SELECT_BY_TICKET)) order_open_price_72 = OrderOpenPrice();
         if (!(gi_856)) break;
         PlaySound(gs_860);
         break;
      }
   }
   return (ticket_56);
}

void f0_2() {
   bool bool_0;
   int error_8;
   int li_12;
   string ls_16;
   int li_4 = OrdersTotal() - 1;
   for (int pos_24 = li_4; pos_24 >= 0; pos_24--) {
      if (OrderSelect(pos_24, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderType() == OP_BUY) {
            if (OrderMagicNumber() == MagicNumber || OrderMagicNumber() == MagicNumber1 && OrderSymbol() == gs_712 && OrderStopLoss() == 0.0 && OrderTakeProfit() == 0.0) {
               bool_0 = OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(OrderOpenPrice() - StopLoss * Point * gi_700, Digits), NormalizeDouble(OrderOpenPrice() + TakeProfit * Point * gi_700,
                  Digits), 0, Blue);
            }
         }
         if (OrderType() == OP_SELL) {
            if (OrderMagicNumber() == MagicNumber || OrderMagicNumber() == MagicNumber1 && OrderSymbol() == gs_712 && OrderStopLoss() == 0.0 && OrderTakeProfit() == 0.0) {
               bool_0 = OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(OrderOpenPrice() + StopLoss * Point * gi_700, Digits), NormalizeDouble(OrderOpenPrice() - TakeProfit * Point * gi_700,
                  Digits), 0, Blue);
            }
         }
         if (OrderType() == OP_BUY)
            if (OrderMagicNumber() == MagicNumber || OrderMagicNumber() == MagicNumber1 && OrderSymbol() == gs_712 && OrderStopLoss() == 0.0 && OrderTakeProfit() != 0.0) bool_0 = OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(OrderOpenPrice() - StopLoss * Point * gi_700, Digits), OrderTakeProfit(), 0, Blue);
         if (OrderType() == OP_SELL)
            if (OrderMagicNumber() == MagicNumber || OrderMagicNumber() == MagicNumber1 && OrderSymbol() == gs_712 && OrderStopLoss() == 0.0 && OrderTakeProfit() != 0.0) bool_0 = OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(OrderOpenPrice() + StopLoss * Point * gi_700, Digits), OrderTakeProfit(), 0, Blue);
         if (OrderType() == OP_BUY)
            if (OrderMagicNumber() == MagicNumber || OrderMagicNumber() == MagicNumber1 && OrderSymbol() == gs_712 && OrderStopLoss() != 0.0 && OrderTakeProfit() == 0.0) bool_0 = OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), NormalizeDouble(OrderOpenPrice() + TakeProfit * Point * gi_700, Digits), 0, Blue);
         if (OrderType() == OP_SELL)
            if (OrderMagicNumber() == MagicNumber || OrderMagicNumber() == MagicNumber1 && OrderSymbol() == gs_712 && OrderStopLoss() != 0.0 && OrderTakeProfit() == 0.0) bool_0 = OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), NormalizeDouble(OrderOpenPrice() - TakeProfit * Point * gi_700, Digits), 0, Blue);
         if (OrderType() == OP_BUY) {
            if (OrderMagicNumber() == MagicNumber || OrderMagicNumber() == MagicNumber1 && OrderSymbol() == gs_712) {
               if (Bid - OrderOpenPrice() > SecProfitTr * gd_684 && MathAbs(OrderOpenPrice() + SecProfit * gd_684 - OrderStopLoss()) >= Point && NormalizeDouble(OrderOpenPrice() +
                  SecProfit * gd_684, Digits) - Point >= OrderStopLoss()) {
                  bool_0 = OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(OrderOpenPrice() + SecProfit * gd_684, Digits), OrderTakeProfit(), 0, Blue);
                  if (!bool_0) {
                     error_8 = GetLastError();
                     if (WriteDebugLog) Print("????????? ?????? ?? ????? ??????????? ?????? (", ls_16, ",", li_12, "). ???????: ", f0_16(error_8));
                  }
               }
            }
         }
         if (OrderType() == OP_SELL) {
            if (OrderMagicNumber() == MagicNumber || OrderMagicNumber() == MagicNumber1 && OrderSymbol() == gs_712) {
               if (OrderOpenPrice() - Ask > SecProfitTr * gd_684 && MathAbs(OrderOpenPrice() - SecProfit * gd_684 - OrderStopLoss()) >= Point && NormalizeDouble(OrderOpenPrice() - SecProfit * gd_684,
                  Digits) + Point <= OrderStopLoss()) {
                  bool_0 = OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(OrderOpenPrice() - SecProfit * gd_684, Digits), OrderTakeProfit(), 0, Red);
                  if (!bool_0) {
                     error_8 = GetLastError();
                     if (WriteDebugLog) Print("????????? ?????? ?? ????? ??????????? ?????? (", ls_16, ",", li_12, "). ???????: ", f0_16(error_8));
                  }
               }
            }
         }
         if (TrailingStop > 1.0 && OrderMagicNumber() == MagicNumber || OrderMagicNumber() == MagicNumber1) {
            if (OrderType() == OP_SELL && OrderOpenPrice() - Ask > Utral * Point * gi_700) {
               if (TrailingStop > 0.0 && TrailingStop > 1.0) {
                  if (OrderOpenPrice() - Ask > TrailingStop * Point * gi_700)
                     if (OrderStopLoss() - Point * TrailingStep * gi_700 > Ask + Point * TrailingStop * gi_700 && Ask + Point * TrailingStop * gi_700 <= OrderStopLoss() - Point) OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop * gi_700, OrderTakeProfit(), 0, CLR_NONE);
               }
            } else {
               if (OrderType() == OP_BUY && Bid - OrderOpenPrice() > Utral * Point * gi_700) {
                  if (TrailingStop > 0.0 && TrailingStop > 1.0) {
                     if (Bid - OrderOpenPrice() > TrailingStop * Point * gi_700)
                        if (OrderStopLoss() + Point * TrailingStep * gi_700 < Bid - Point * TrailingStop * gi_700 && Bid - Point * TrailingStop * gi_700 >= OrderStopLoss() + Point) OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop * gi_700, OrderTakeProfit(), 0, CLR_NONE);
                  }
               }
            }
         }
         if (TrailingStop < 1.0 && OrderMagicNumber() == MagicNumber || OrderMagicNumber() == MagicNumber1) {
            if (OrderType() == OP_SELL && TrailingStop < 1.0) {
               if (TrailingStop <= 0.0) continue;
               if (OrderOpenPrice() - Ask <= Utral * Point * gi_700) continue;
               if (!(OrderStopLoss() - Point * TrailingStep * gi_700 > Ask + (OrderOpenPrice() - Ask) * TrailingStop && Ask + (OrderOpenPrice() - Ask) * TrailingStop <= OrderStopLoss() - Point)) continue;
               OrderModify(OrderTicket(), OrderOpenPrice(), Ask + (OrderOpenPrice() - Ask) * TrailingStop, OrderTakeProfit(), 0, CLR_NONE);
               continue;
            }
            if (OrderType() == OP_BUY) {
               if (TrailingStop > 0.0 && TrailingStop < 1.0) {
                  if (Bid - OrderOpenPrice() > Utral * Point * gi_700) {
                     if (OrderStopLoss() + Point * TrailingStep * gi_700 < Bid - (Bid - OrderOpenPrice()) * TrailingStop && Bid - (Bid - OrderOpenPrice()) * TrailingStop >= OrderStopLoss() +
                        Point) OrderModify(OrderTicket(), OrderOpenPrice(), Bid - (Bid - OrderOpenPrice()) * TrailingStop, OrderTakeProfit(), 0, CLR_NONE);
                  }
               }
            }
         }
      }
   }
}

void f0_3() {
   int error_28;
   int ticket_32;
   string cmd_36;
   int li_unused_0 = 0;
   int li_unused_4 = 0;
   int li_12 = OrdersTotal() - 1;
   int count_16 = 0;
   int count_20 = 0;
   int li_24 = 3;
   for (int pos_48 = li_12; pos_48 >= 0; pos_48--) {
      if (OrderSelect(pos_48, SELECT_BY_POS, MODE_TRADES)) {
         ticket_32 = OrderTicket();
         cmd_36 = OrderType();
         if (OrderMagicNumber() == MagicNumber || OrderMagicNumber() == MagicNumber1) {
            if (OrderType() == OP_BUY && OrderSymbol() == gs_712) {
               count_16++;
               if (CloseOnlyProfit == FALSE) {
                  if (Bid >= OrderOpenPrice() + TakeProfit * gd_684 || Bid <= OrderOpenPrice() - StopLoss * gd_684 || f0_6(OrderOpenPrice(), f0_10())) {
                     for (int li_44 = 1; li_44 <= MathMax(1, li_24); li_44++) {
                        RefreshRates();
                        if (OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid, Digits), g_slippage_732, g_color_848)) {
                           count_16--;
                           break;
                        }
                        error_28 = GetLastError();
                        if (WriteDebugLog) Print("????????? ?????? ?? ????? ???????? ?????? (", cmd_36, ",", ticket_32, "). ???????: ", f0_16(error_28));
                     }
                  }
               }
               if (CloseOnlyProfit == TRUE) {
                  if (Bid >= OrderOpenPrice() + gi_700 * Point && Bid >= OrderOpenPrice() + TakeProfit * gd_684 || Bid <= OrderOpenPrice() - StopLoss * gd_684 || f0_6(OrderOpenPrice(),
                     f0_10())) {
                     for (li_44 = 1; li_44 <= MathMax(1, li_24); li_44++) {
                        RefreshRates();
                        if (OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid, Digits), g_slippage_732, g_color_848)) {
                           count_16--;
                           break;
                        }
                        error_28 = GetLastError();
                        if (WriteDebugLog) Print("????????? ?????? ?? ????? ???????? ?????? (", cmd_36, ",", ticket_32, "). ???????: ", f0_16(error_28));
                     }
                  }
               }
            }
            if (OrderType() == OP_SELL && OrderSymbol() == gs_712) {
               count_20++;
               if (CloseOnlyProfit == FALSE) {
                  if (Ask <= OrderOpenPrice() - TakeProfit * gd_684 || Ask >= OrderOpenPrice() + StopLoss * gd_684 || f0_7(OrderOpenPrice(), f0_10())) {
                     for (li_44 = 1; li_44 <= MathMax(1, li_24); li_44++) {
                        RefreshRates();
                        if (OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask, Digits), g_slippage_732, g_color_852)) {
                           count_20--;
                           break;
                        }
                        error_28 = GetLastError();
                        if (WriteDebugLog) Print("????????? ?????? ?? ????? ???????? ?????? (", cmd_36, ",", ticket_32, "). ???????: ", f0_16(error_28));
                     }
                  }
               }
               if (CloseOnlyProfit == TRUE) {
                  if (Ask <= OrderOpenPrice() - gi_700 * Point && Ask <= OrderOpenPrice() - TakeProfit * gd_684 || Ask >= OrderOpenPrice() + StopLoss * gd_684 || f0_7(OrderOpenPrice(),
                     f0_10())) {
                     for (li_44 = 1; li_44 <= MathMax(1, li_24); li_44++) {
                        RefreshRates();
                        if (OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask, Digits), g_slippage_732, g_color_852)) {
                           count_20--;
                           break;
                        }
                        error_28 = GetLastError();
                        if (WriteDebugLog) Print("????????? ?????? ?? ????? ???????? ?????? (", cmd_36, ",", ticket_32, "). ???????: ", f0_16(error_28));
                     }
                  }
               }
            }
         }
      }
   }
}

int f0_4() {
   int li_unused_0 = 0;
   bool li_ret_4 = FALSE;
   bool li_8 = FALSE;
   bool li_12 = FALSE;
   bool li_16 = FALSE;
   double iclose_20 = iClose(NULL, PERIOD_M15, 1);
   double ima_28 = iMA(NULL, PERIOD_M15, iMA_PeriodLONG, 0, MODE_SMMA, PRICE_HIGH, 1);
   double istochastic_36 = iStochastic(NULL, PERIOD_M15, iWPR_PeriodLONG, 1, 1, MODE_SMA, 0, MODE_MAIN, 1);
   double iatr_44 = iATR(NULL, PERIOD_M15, iATR_PeriodLONG, 1);
   double icci_52 = iCCI(NULL, PERIOD_M15, iCCI_PeriodLONG, PRICE_TYPICAL, 1);
   double ld_60 = NormalizeDouble(iMA_LONG_Open_a * gd_684, gi_692);
   double ld_68 = NormalizeDouble(iMA_LONG_Open_b * gd_684, gi_692);
   double bid_76 = Bid;
   if (iatr_44 <= FilterATR * gd_684) return (0);
   if (iclose_20 - ima_28 > ld_60 && iclose_20 - bid_76 >= (-gd_704) && gi_816 > istochastic_36) li_8 = TRUE;
   else li_8 = FALSE;
   if (iclose_20 - ima_28 > ld_68 && iclose_20 - bid_76 >= (-gd_704) && (-iCCI_OpenFilter) > icci_52) li_12 = TRUE;
   else li_12 = FALSE;
   if (iclose_20 - ima_28 > ld_68 && iclose_20 - bid_76 >= (-gd_704) && gi_820 > istochastic_36) li_16 = TRUE;
   else li_16 = FALSE;
   if (li_8 == TRUE || li_12 == TRUE || li_16 == TRUE) li_ret_4 = TRUE;
   else li_ret_4 = FALSE;
   return (li_ret_4);
}

int f0_5() {
   int li_unused_0 = 0;
   bool li_ret_4 = FALSE;
   bool li_8 = FALSE;
   bool li_12 = FALSE;
   bool li_16 = FALSE;
   double iclose_20 = iClose(NULL, PERIOD_M15, 1);
   double ima_28 = iMA(NULL, PERIOD_M15, iMA_PeriodShort, 0, MODE_SMMA, PRICE_LOW, 1);
   double istochastic_36 = iStochastic(NULL, PERIOD_M15, iWPR_PeriodShort, 1, 1, MODE_SMA, 0, MODE_MAIN, 1);
   double iatr_44 = iATR(NULL, PERIOD_M15, iATR_PeriodShort, 1);
   double icci_52 = iCCI(NULL, PERIOD_M15, iCCI_PeriodShort, PRICE_TYPICAL, 1);
   double ld_60 = NormalizeDouble(iMA_Short_Open_a * gd_684, gi_692);
   double ld_68 = NormalizeDouble(iMA_Short_Open_b * gd_684, gi_692);
   double bid_76 = Bid;
   if (iatr_44 <= FilterATR * gd_684) return (0);
   if (ima_28 - iclose_20 > ld_60 && iclose_20 - bid_76 <= gd_704 && istochastic_36 > gi_824) li_8 = TRUE;
   else li_8 = FALSE;
   if (ima_28 - iclose_20 > ld_68 && iclose_20 - bid_76 <= gd_704 && icci_52 > iCCI_OpenFilter) li_12 = TRUE;
   else li_12 = FALSE;
   if (ima_28 - iclose_20 > ld_68 && iclose_20 - bid_76 <= gd_704 && istochastic_36 > gi_828) li_16 = TRUE;
   else li_16 = FALSE;
   if (li_8 == TRUE || li_12 == TRUE || li_16 == TRUE) li_ret_4 = TRUE;
   else li_ret_4 = FALSE;
   return (li_ret_4);
}

int f0_6(double ad_0, int ai_8) {
   bool li_ret_12 = FALSE;
   bool li_16 = FALSE;
   bool li_20 = FALSE;
   double istochastic_24 = iStochastic(NULL, PERIOD_M15, iWPR_PeriodLONG, 1, 1, MODE_SMA, 0, MODE_SIGNAL, 1);
   double iclose_32 = iClose(NULL, PERIOD_M15, 1);
   double iopen_40 = iOpen(NULL, PERIOD_M1, 1);
   double iclose_48 = iClose(NULL, PERIOD_M1, 1);
   double ld_56 = NormalizeDouble((-MaxLossPoints) * gd_684, gi_692);
   double ld_64 = NormalizeDouble(Price_Filter_Close * gd_684, gi_692);
   double bid_72 = Bid;
   if (ad_0 - bid_72 <= ld_56 && iclose_32 - bid_72 <= gd_704 && istochastic_24 > gi_832 && ai_8 == 1) li_16 = TRUE;
   else li_16 = FALSE;
   if (iopen_40 > iclose_48 && bid_72 - ad_0 >= ld_64 && ai_8 == 1) li_20 = TRUE;
   else li_20 = FALSE;
   if (li_16 == TRUE || li_20 == TRUE) li_ret_12 = TRUE;
   else li_ret_12 = FALSE;
   return (li_ret_12);
}

int f0_7(double ad_0, int ai_8) {
   bool li_ret_12 = FALSE;
   bool li_16 = FALSE;
   bool li_20 = FALSE;
   double istochastic_24 = iStochastic(NULL, PERIOD_M15, iWPR_PeriodShort, 1, 1, MODE_SMA, 0, MODE_SIGNAL, 1);
   double iclose_32 = iClose(NULL, PERIOD_M15, 1);
   double iopen_40 = iOpen(NULL, PERIOD_M1, 1);
   double iclose_48 = iClose(NULL, PERIOD_M1, 1);
   double ld_56 = NormalizeDouble((-MaxLossPoints) * gd_684, gi_692);
   double ld_64 = NormalizeDouble(Price_Filter_Close * gd_684, gi_692);
   double bid_72 = Bid;
   double ask_80 = Ask;
   if (ask_80 - ad_0 <= ld_56 && iclose_32 - bid_72 >= (-gd_704) && istochastic_24 < gi_836 && ai_8 == 1) li_16 = TRUE;
   else li_

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

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

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

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

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

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

Стоимость полного кода
4 332,40₽ ≈ $52.95