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

ichi_scalper_allpairs_v52.mq4

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

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

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

О программе

Данный продукт представляет собой торговый советник для платформы MetaTrader 4, написанный на языке MQL4. Советник предназначен для работы на таймфрейме M5 и ориентирован на торговлю в боковом рынке. В коде используются индикаторы Ichimoku для определения направления и ATR для расчёта волатильности.

Советник автоматически рассчитывает размер лота на основе баланса счёта и выбранного уровня риска. Поддерживаются пять уровней риска — от консервативного до экстремального. Также реализована функция автоматического увеличения лота при росте баланса.

Встроены средства управления рисками: защита капитала с ограничением процента риска, таймаут для автоматического закрытия сделок по истечении заданного времени, а также возможность закрытия всех открытых позиций. Реализована функция трейлинг-стоп на основе индикатора iSAR.

Советник работает с торговыми операциями через стандартные API MetaTrader 4 (OrderSend, OrderClose, OrderModify) и поддерживает различные типы ордеров. При сильном тренде рекомендуется дождаться бокового рынка или скорректировать настройки.

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

НастройкаОписание
RiskINFO Информация об уровнях риска — Текстовое описание уровней риска: 1 — консервативный, 2 — нормальный, 3 — агрессивный, 4 — очень агрессивный, 5 — экстремальный
Risk Уровень риска — Уровень риска от 1 до 5, определяющий коэффициент расчёта размера лота: 1 — консервативный, 5 — экстремальный
ToCloseTrades Закрытие всех сделок (информация) — Текстовая подсказка: для закрытия всех сделок установите UseClose=True
UseClose Использовать закрытие всех сделок — Переключатель для автоматического закрытия всех открытых позиций
MaxCapitalToRiskINFO Максимальный капитал для риска (информация) — Описание функции защиты капитала: при включении UseMaxCapitalStop советник закрывает все сделки при превышении заданного процента риска
UseMaxCapitalStop Использовать защиту максимального капитала — Переключатель защиты капитала: при достижении заданного процента убытка все сделки закрываются
MaxCapitalToRiskPercent Процент максимального капитала для риска — Процент капитала, при превышении которого срабатывает защита и закрываются все сделки
ToCloseOldTrades Закрытие старых сделок (информация) — Текстовая подсказка: для закрытия сделок по истечении заданного времени включите UseTimeOut и задайте MaxTradeOpenHours
UseTimeOut Использовать таймаут закрытия сделок — Переключатель таймаута: при включении советник автоматически закрывает все сделки по истечении MaxTradeOpenHours
MaxTradeOpenHours Максимальное время открытой сделки (часы) — Максимальное время удержания открытых сделок в часах; при достижении лимита все сделки закрываются автоматически
Получить полный код

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

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

extern string RiskINFO = "1 for conservative, 2 for normal, 3 for aggressive, 4 for very aggressive, 5 for extreme.";
extern int Risk = 2;
extern string ToCloseTrades = "To CLOSE ALL Trades, set the property below UseClose=True";
extern bool UseClose = FALSE;
extern string PercentageOfAccountToUseINFO = "This is the percentage (%) of the account to calculate base lot size";
extern int PercentageOfAccount = 100;
extern string MaxCapitalToRiskINFO = "To have Equity protection, set UseMaxCapitalStop=true and set MaxCapitalToRiskPercent=protect%";
extern bool UseMaxCapitalStop = FALSE;
extern double MaxCapitalToRiskPercent = 70.0;
extern string ToCloseOldTrades = "To CLOSE trades after a certain amount of time, set property UseTimeOut=true, and set MaxTradeOpenHours=number of hours";
extern bool UseTimeOut = FALSE;
extern double MaxTradeOpenHours = 48.0;
string gs_152 = "Set LotsDigits to number of decimal places for lots, for 0.01 lots, set to 2, for 0.1 set to 1, for 1.0 and greater set to 0";
double gd_160 = 2.0;
string gs_168 = "This property will automatically grow your account for 0.01 lot per one thousand";
bool gi_176 = TRUE;
string gs_180 = "This is automatically by lotSizeGrowthPer1000, set lotSizeGrowthPer1000=false to change";
double gd_188 = 0.01;
double gd_196 = 300.0;
double gd_204 = 30.0;
double gd_212 = 60.0;
double gd_220 = 30.0;
double gd_228 = 1.4;
double gd_236 = 5.0;
int gi_244 = 9;
bool gi_248 = TRUE;
int gi_252 = 1;
bool gi_256 = TRUE;
double gd_260 = 3.0;
double gd_268 = 10.0;
bool gi_276 = FALSE;
int gi_280 = 1;
double gd_284 = 0.0;
bool gi_292 = FALSE;
bool gi_296 = TRUE;
double gd_300 = 4.0;
bool gi_308 = TRUE;
bool gi_312 = FALSE;
bool gi_316 = TRUE;
int gi_320 = 40;
int gi_324 = 4;
bool gi_328 = FALSE;
double gd_332 = 0.005;
double gd_340 = 0.05;
int gi_348 = 1;
int gi_352 = 4;
double gd_356 = 4.0;
double gd_364 = 0.01;
double gd_372 = 20.0;
int gi_380 = 13;
int gi_384 = 26;
int gi_388 = 52;
int gi_392 = 1;
int gi_396 = 61;
int gi_400 = 2;
int gi_404 = 0;
double gd_408 = 0.0;
double gd_416 = 2.0;
int gi_424 = 8;
int gi_428 = 2;
int gi_432 = 0;
int gi_436 = 2;
int gi_440 = 1;
int gi_444 = 0;
int gi_448 = 255;
int gi_452 = 16711680;
bool gi_456 = TRUE;
double gd_460 = 0.00005;
int gi_468 = 8885554;
double gd_472;
double gd_480;
double gd_488;
double gd_496;
double gd_504;
double gd_512;
double gd_520;
double gd_528;
double gd_536;
double gd_552;
bool gi_560;
string gs_564 = "Ichi_FX AUDUSD_5M v54";
int gt_572 = 0;
int gi_576;
int gi_580 = 0;
double gd_584;
int gi_592 = 0;
int gi_596 = 0;
double gd_600 = 0.0;
bool gi_608 = FALSE;
bool gi_612 = FALSE;
bool gi_616 = FALSE;
int gi_620;
bool gi_624 = FALSE;
double gd_628 = 0.0;
int gi_636 = 10;
double gd_640 = 0.0;
double gd_648 = 1.0;
double gd_656 = 1.0;
double gd_664 = 0.0;
double gd_672 = 0.0;
double gd_680;
double gd_688;
double gd_696;
double gd_704;
double gd_712;
double gd_720;
double gd_728;
double gd_736;
int gi_744;
int gi_748;
int gi_752 = 0;
int gi_756 = 0;
bool gi_760 = FALSE;
bool gi_764 = FALSE;
bool gi_768 = FALSE;
int gi_772 = 0;
int gi_776 = 0;
double gd_780;
double gd_788;

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

int deinit() {
   return (0);
}

int start() {
      // код доступен только после оплаты
   }
   double ld_32;
   double ld_40;
   double ld_48;
   double ld_56;
   double ld_72;
   double ld_80;
   if (gi_764) {
      init();
      return (-1);
   }
   if (gi_248) f0_15(gd_212, gd_220, gd_504);
   if (UseTimeOut) {
      if (TimeCurrent() >= gi_576) {
         f0_3();
         Print("Closed All due to TimeOut");
      }
   }
   if (gt_572 == Time[0]) return (0);
   gt_572 = Time[0];
   if (gi_176) gd_640 = MathMax(NormalizeDouble(MathFloor(AccountBalance() * PercentageOfAccount / 100.0 / 1000.0) / 100.0 * gd_656, gd_160), gd_364);
   else gd_640 = gd_188;
   double ld_16 = (Close[gi_320] + (Close[gi_320 + 2]) + (Close[gi_320 + 4]) + (Close[gi_320 + 8])) / 4.0;
   double ld_0 = High[iHighest(NULL, 0, MODE_HIGH, gi_320, gi_324)];
   double ld_8 = Low[iLowest(NULL, 0, MODE_LOW, gi_320, gi_324)];
   gd_664 = iATR(NULL, 0, gi_352, 0);
   gd_672 = iATR(NULL, 0, gi_352, 1);
   gd_268 = gd_356 * gd_664 * (1 / (Point * gd_680));
   double ld_24 = 0;
   gi_756 = gi_752;
   if (gi_312) ld_24 = iCustom(NULL, 0, "snowball indicator", gi_436, gi_440, gi_424, gi_428, gd_460, 4, gi_432);
   if (gi_308) {
      ld_32 = iIchimoku(NULL, 0, gi_380, gi_384, gi_388, MODE_TENKANSEN, gi_392);
      ld_40 = iIchimoku(NULL, 0, gi_380, gi_384, gi_388, MODE_KIJUNSEN, gi_392);
      ld_48 = iIchimoku(NULL, 0, gi_380, gi_384, gi_388, MODE_TENKANSEN, gi_392 + 1);
      ld_56 = iIchimoku(NULL, 0, gi_380, gi_384, gi_388, MODE_KIJUNSEN, gi_392 + 1);
      if (ld_48 > ld_56 && ld_32 < ld_40) ld_24 = -1;
      else
         if (ld_48 < ld_56 && ld_32 > ld_40) ld_24 = 1;
   }
   gi_752 = ld_24;
   if (gi_760 != gi_756) gi_760 = TRUE;
   double ld_64 = f0_5();
   if (UseMaxCapitalStop) {
      if (ld_64 < 0.0 && MathAbs(ld_64) > MaxCapitalToRiskPercent / 100.0 * f0_8()) {
         f0_3();
         Print("Closed All due to Stop Out");
         gi_624 = FALSE;
      }
   }
   gi_596 = f0_13();
   if (gi_596 == 0) gi_560 = FALSE;
   for (gi_592 = OrdersTotal() - 1; gi_592 >= 0; gi_592--) {
      OrderSelect(gi_592, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != gi_468) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == gi_468) {
         if (OrderType() == OP_BUY) {
            gi_612 = TRUE;
            gi_616 = FALSE;
            ld_72 = OrderLots();
            break;
         }
      }
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == gi_468) {
         if (OrderType() == OP_SELL) {
            gi_612 = FALSE;
            gi_616 = TRUE;
            ld_80 = OrderLots();
            break;
         }
      }
   }
   if (gi_596 > 0 && gi_596 <= gi_244) {
      RefreshRates();
      gd_528 = f0_2();
      gd_536 = f0_7();
      if (gi_612 && gd_528 - Ask >= gd_268 * Point) gi_608 = TRUE;
      if (gi_616 && Bid - gd_536 >= gd_268 * Point) gi_608 = TRUE;
   }
   if (gi_596 < 1) {
      gi_616 = FALSE;
      gi_612 = FALSE;
      gi_608 = TRUE;
      gd_480 = AccountEquity();
   }
   if (gi_608) {
      gd_528 = f0_2();
      gd_536 = f0_7();
      if (gi_616 && gi_752 == -1) {
         if (UseClose) {
            f0_1(0, 1);
            gd_584 = NormalizeDouble(gd_228 * ld_80, gd_160);
         } else gd_584 = f0_11(OP_SELL);
         if (gi_256) {
            gi_580 = gi_596;
            if (gd_584 > 0.0) {
               RefreshRates();
               if (gi_276) gi_620 = f0_12(1, MathMax(gd_640 + (AccountBalance() - gd_628) / gd_628 / 10.0 - 0.06, gd_188), Bid, gd_260, Ask, 0, 0, gs_564 + "-" + gi_580, gi_468, 0, Orange);
               else gi_620 = f0_12(1, gd_584, Bid, gd_260, Ask, 0, 0, gs_564 + "-" + gi_580, gi_468, 0, Orange);
               if (gi_620 < 0) {
                  Print("Error: ", GetLastError());
                  return (0);
               }
               gd_536 = f0_7();
               gi_608 = FALSE;
               gi_624 = TRUE;
            }
         }
      } else {
         if (gi_612 && gi_752 == 1) {
            if (UseClose) {
               f0_1(1, 0);
               gd_584 = NormalizeDouble(gd_228 * ld_72, gd_160);
            } else gd_584 = f0_11(OP_BUY);
            if (gi_256) {
               gi_580 = gi_596;
               if (gd_584 > 0.0) {
                  RefreshRates();
                  if (gi_276) gi_620 = f0_12(0, MathMax(gd_640 + (AccountBalance() - gd_628) / gd_628 / 10.0 - 0.06, gd_188), Ask, gd_260, Bid, 0, 0, gs_564 + "-" + gi_580, gi_468, 0, Blue);
                  else gi_620 = f0_12(0, gd_584, Ask, gd_260, Bid, 0, 0, gs_564 + "-" + gi_580, gi_468, 0, Blue);
                  if (gi_620 < 0) {
                     Print("Error: ", GetLastError());
                     return (0);
                  }
                  gd_528 = f0_2();
                  gi_608 = FALSE;
                  gi_624 = TRUE;
               }
            }
         }
      }
   }
   if (gi_608 && gi_596 < 1) {
      gd_512 = Bid;
      gd_520 = Ask;
      if (!gi_616) {
         gi_580 = gi_596;
         if ((gi_308 && ld_24 == -1.0) || (gi_312 && ld_24 == -1.0)) {
            gd_584 = f0_11(OP_SELL);
            if (gd_584 > 0.0) {
               if (gi_276) gi_620 = f0_12(1, MathMax(gd_640 + (AccountBalance() - gd_628) / gd_628 / 10.0 - 0.06, gd_188), gd_512, gd_260, gd_512, 0, 0, gs_564 + "-" + gi_580, gi_468, 0, Red);
               else gi_620 = f0_12(1, gd_640, gd_512, gd_260, gd_512, 0, 0, gs_564 + "-" + gi_580, gi_468, 0, Red);
               if (gi_620 < 0) {
                  Print(gd_584, "Error: ", GetLastError());
                  return (0);
               }
               gd_528 = f0_2();
               gi_624 = TRUE;
            }
         }
         if (!gi_612) gi_580 = gi_596;
         if ((gi_308 && ld_24 == 1.0) || (gi_312 && ld_24 == 1.0)) {
            gd_584 = f0_11(OP_BUY);
            if (gd_584 > 0.0) {
               if (gi_276) gi_620 = f0_12(0, MathMax(gd_640 + (AccountBalance() - gd_628) / gd_628 / 10.0 - 0.06, gd_188), gd_520, gd_260, gd_520, 0, 0, gs_564 + "-" + gi_580, gi_468, 0, Lime);
               else gi_620 = f0_12(0, gd_640, gd_520, gd_260, gd_520, 0, 0, gs_564 + "-" + gi_580, gi_468, 0, Lime);
               if (gi_620 < 0) {
                  Print(gd_584, "Error: ", GetLastError());
                  return (0);
               }
               gd_536 = f

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

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

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

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

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

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

Стоимость полного кода
1 999,60₽ ≈ $24.44