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

luckycandles 2in1~.mq4

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

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

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

О программе

Данный продукт представляет собой советник для MetaTrader 4, реализующий торговую логику на основе анализа свечных данных. Советник автоматически открывает и управляет позициями, включая функции трейлинга стоп-лосса, усреднения убыточных позиций и блокировки противоположными ордерами.

В качестве основного торгового сигнала используется сравнение разницы между ценой открытия и закрытия предыдущего бара с заданным порогом в пунктах. При выполнении условия запускаются ордера BUY или SELL с настраиваемыми параметрами лота, стоп-лосса и тейк-профита.

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

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

НастройкаОписание
__1__ Параметр 1 — Текстовый параметр настройки.
TF Таймфрейм — Таймфрейм, используемый для анализа свечных данных.
pips Порог в пунктах — Пороговое значение в пунктах для формирования торгового сигнала.
____2___ Параметр 2 — Текстовый параметр настройки.
Lots Размер лота — Размер лота по умолчанию для открытия новых позиций.
StopLoss Стоп-лосс — Значение стоп-лосса в пунктах для обычных позиций (0 — отключён).
TakeProfit Тейк-профит — Значение тейк-профита в пунктах для обычных позиций (0 — отключён).
MagicNumber Магический номер — Магический номер для обычных позиций советника.
Slippage Проскальзывание — Допустимое проскальзывание при открытии и закрытии позиций.
NumberOfTry Количество попыток — Максимальное количество попыток выполнения торговой операции при ошибке.
MarketWatch Market Watch — Включает или отключает режим Market Watch при открытии позиций.
Traling Трейлинг — Включает или отключает функцию трейлинга стоп-лосса.
TSProfitOnly Трейлинг только с прибылью — Переключатель, ограничивающий трейлинг позициями, имеющими нереализованную прибыль.
TrailingStep Шаг трейлинга — Шаг трейлинга в пунктах для обычных позиций.
_____Averag_____ Параметр усреднения — Текстовый параметр настройки группы усреднения.
AVERAGES Усреднение — Включает или отключает режим усреднения позиций при движении цены против открытого ордера.
Averag Порог усреднения — Числовой параметр, задающий пороговое значение в пунктах для активации усреднения.
koef_averag Коэффициент усреднения — Коэффициент, используемый при расчёте порога усреднения.
alfa_lot Округление лота — Целочисленный параметр, влияющий на округление размера лота при усреднении.
koef_lot Коэффициент лота — Коэффициент, определяющий размер лота при усреднении.
StopLoss_Av Стоп-лосс усреднения — Значение стоп-лосса в пунктах для усреднённых позиций (0 — без стоп-лосса).
TakeProfit_Av Тейк-профит усреднения — Значение тейк-профита в пунктах для усреднённых позиций.
Close_and_TRL Закрытие с трейлингом — Переключатель, определяющий, закрывать ли позицию с фиксацией прибыли или применять трейлинг при достижении целевого уровня.
TRL Уровень трейлинга — Числовой параметр, задающий уровень трейлинга для позиций с усреднением.
MagNum_Av Магический номер усреднения — Магический номер для позиций, открытых в режиме усреднения.
clCloseBuy Цвет закрытия BUY — Цвет отображения графики при закрытии BUY-позиции.
clCloseSell Цвет закрытия SELL — Цвет отображения графики при закрытии SELL-позиции.
NameCloseSound Звук закрытия — Путь к звуковому файлу, воспроизводимому при закрытии позиции.
_____Lock_____ Параметр блокировки — Текстовый параметр настройки группы блокировки.
Lock Блокировка — Включает или отключает блокировку — открытие противоположной позиции при усреднении.
Lock_TRL Трейлинг блокировки — Переключатель, активирующий трейлинг для заблокированных позиций.
StopLoss_Lock Стоп-лосс блокировки — Значение стоп-лосса в пунктах для заблокированных позиций (0 — без стоп-лосса).
TakeProfit_Lock Тейк-профит блокировки — Значение тейк-профита в пунктах для заблокированных позиций.
MagicNumber_Lock Магический номер блокировки — Магический номер для заблокированных позиций.
Получить полный код

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

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

#include <stdlib.mqh>

extern string __1__ = "ok";
extern int TF = 0;
extern int pips = 10;
extern string ____2___ = "ok";
extern double Lots = 0.01;
extern int StopLoss = 0;
extern int TakeProfit = 0;
extern int MagicNumber = 1;
extern int Slippage = 3;
extern int NumberOfTry = 5;
extern bool MarketWatch = FALSE;
extern string _____????_______ = "ok";
extern bool Traling = TRUE;
extern bool TSProfitOnly = TRUE;
extern int TStop.Buy = 30;
extern int TStop.Sell = 40;
extern int TrailingStep = 10;
extern string _____Averag_____ = "_____";
extern bool AVERAGES = TRUE;
extern int Averag = 25;
extern double koef_averag = 1.0;
extern int alfa_lot = 2;
extern double koef_lot = 2.0;
extern double StopLoss_Av = 0.0;
extern int TakeProfit_Av = 10;
extern bool Close_and_TRL = FALSE;
extern int TRL = 5;
extern int MagNum_Av = 3;
extern color clCloseBuy = Aqua;
extern color clCloseSell = Tomato;
extern string NameCloseSound = "ok.wav";
extern string _____Lock_____ = "______????????????????????_____";
extern bool Lock = TRUE;
extern bool Lock_TRL = FALSE;
extern int StopLoss_Lock = 0;
extern int TakeProfit_Lock = 10;
extern int MagicNumber_Lock = 3;
int gi_264 = 0;
bool gi_268 = TRUE;
int gi_272 = 15128749;
int gi_276 = 8421616;
bool gi_280 = TRUE;
string gs_284 = "expert.wav";
bool gi_292 = FALSE;
bool gi_296 = FALSE;
string gs_300 = "";
int g_datetime_308 = 0;
int g_time_312 = 0;

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

int deinit() {
   if (!IsTesting()) Comment("");
   return (0);
}

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

int fNewBar() {
   if (g_datetime_308 != iTime(Symbol(), TF, 0)) {
      if (g_datetime_308 == 0) {
         g_datetime_308 = iTime(Symbol(), TF, 0);
         return (0);
      }
      g_datetime_308 = iTime(Symbol(), TF, 0);
      return (1);
   }
   return (0);
}

bool ExistPositions(string as_0 = "", int a_cmd_8 = -1, int a_magic_12 = -1, int ai_16 = 0) {
   int l_ord_total_24 = OrdersTotal();
   if (as_0 == "0") as_0 = Symbol();
   for (int l_pos_20 = 0; l_pos_20 < l_ord_total_24; l_pos_20++) {
      if (OrderSelect(l_pos_20, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderSymbol() == as_0 || as_0 == "") {
            if (OrderType() == OP_BUY || OrderType() == OP_SELL) {
               if (a_cmd_8 < OP_BUY || OrderType() == a_cmd_8) {
                  if (a_magic_12 < 0 || OrderMagicNumber() == a_magic_12)
                     if (ai_16 <= OrderOpenTime()) return (TRUE);
               }
            }
         }
      }
   }
   return (FALSE);
}

void Message(string as_0) {
   Comment(as_0);
   if (StringLen(as_0) > 0) Print(as_0);
}

void OpenPosition(string a_symbol_0, int a_cmd_8, double a_lots_12, double a_price_20 = 0.0, double a_price_28 = 0.0, int a_magic_36 = 0, string as_40 = "") {
   color l_color_48;
   int l_datetime_52;
   double l_price_56;
   double l_ask_64;
   double l_bid_72;
   int l_digits_80;
   int l_error_84;
   int l_ticket_92 = 0;
   string l_comment_96 = as_40 + "   /" + WindowExpertName() + " " + GetNameTF(Period());
   if (a_symbol_0 == "" || a_symbol_0 == "0") a_symbol_0 = Symbol();
   if (a_cmd_8 == OP_BUY) l_color_48 = gi_272;
   else l_color_48 = gi_276;
   for (int li_88 = 1; li_88 <= NumberOfTry; li_88++) {
      if (!IsTesting() && !IsExpertEnabled() || IsStopped()) {
         Print("ok");
         break;
      }
      while (!IsTradeAllowed()) Sleep(5000);
      RefreshRates();
      l_digits_80 = MarketInfo(a_symbol_0, MODE_DIGITS);
      l_ask_64 = MarketInfo(a_symbol_0, MODE_ASK);
      l_bid_72 = MarketInfo(a_symbol_0, MODE_BID);
      if (a_cmd_8 == OP_BUY) l_price_56 = l_ask_64;
      else l_price_56 = l_bid_72;
      l_price_56 = NormalizeDouble(l_price_56, l_digits_80);
      l_datetime_52 = TimeCurrent();
      if (MarketWatch) l_ticket_92 = OrderSend(a_symbol_0, a_cmd_8, a_lots_12, l_price_56, Slippage, 0, 0, l_comment_96, a_magic_36, 0, l_color_48);
      else l_ticket_92 = OrderSend(a_symbol_0, a_cmd_8, a_lots_12, l_price_56, Slippage, a_price_20, a_price_28, l_comment_96, a_magic_36, 0, l_color_48);
      if (l_ticket_92 > 0) {
         if (!(gi_280)) break;
         PlaySound(gs_284);
         break;
      }
      l_error_84 = GetLastError();
      if (l_ask_64 == 0.0 && l_bid_72 == 0.0) Message("???????????????? ???????????????????" + a_symbol_0);
      Print("Error(", l_error_84, ") opening position: ", ErrorDescription(l_error_84), ", try ", li_88);
      Print("Ask=", l_ask_64, " Bid=", l_bid_72, " sy=", a_symbol_0, " ll=", a_lots_12, " op=", GetNameOP(a_cmd_8), " pp=", l_price_56, " sl=", a_price_20, " tp=", a_price_28, " mn=", a_magic_36);
      if (l_error_84 == 2/* COMMON_ERROR */ || l_error_84 == 64/* ACCOUNT_DISABLED */ || l_error_84 == 65/* INVALID_ACCOUNT */ || l_error_84 == 133/* TRADE_DISABLED */) {
         gi_292 = TRUE;
         break;
      }
      if (l_error_84 == 4/* SERVER_BUSY */ || l_error_84 == 131/* INVALID_TRADE_VOLUME */ || l_error_84 == 132/* MARKET_CLOSED */) {
         Sleep(300000);
         break;
      }
      if (l_error_84 == 128/* TRADE_TIMEOUT */ || l_error_84 == 142 || l_error_84 == 143) {
         Sleep(66666.0);
         if (ExistPositions(a_symbol_0, a_cmd_8, a_magic_36, l_datetime_52)) {
            if (!(gi_280)) break;
            PlaySound(gs_284);
            break;
         }
      }
      if (l_error_84 == 140/* LONG_POSITIONS_ONLY_ALLOWED */ || l_error_84 == 148/* ERR_TRADE_TOO_MANY_ORDERS */ || l_error_84 == 4110/* LONGS__NOT_ALLOWED */ || l_error_84 == 4111/* SHORTS_NOT_ALLOWED */) break;
      if (l_error_84 == 141/* TOO_MANY_REQUESTS */) Sleep(100000);
      if (l_error_84 == 145/* TRADE_MODIFY_DENIED */) Sleep(17000);
      if (l_error_84 == 146/* TRADE_CONTEXT_BUSY */) while (IsTradeContextBusy()) Sleep(11000);
      if (l_error_84 != 135/* PRICE_CHANGED */) Sleep(7700.0);
   }
   if (MarketWatch && l_ticket_92 > 0 && a_price_20 > 0.0 || a_price_28 > 0.0)
      if (OrderSelect(l_ticket_92, SELECT_BY_TICKET)) ModifyOrder(-1, a_price_20, a_price_28);
}

string GetNameTF(int a_timeframe_0 = 0) {
   if (a_timeframe_0 == 0) a_timeframe_0 = Period();
   switch (a_timeframe_0) {
   case PERIOD_M1:
      return ("M1");
   case PERIO

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

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

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

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

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

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

Стоимость полного кода
1 733,90₽ ≈ $21.19