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

luckycandles 2in1.mq4

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

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

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

О программе

Данный исходный код представляет собой торгового советника (Expert Advisor) для платформы MetaTrader 4 на языке MQL4. Советник анализирует свечной паттерн на выбранном таймфрейме и открывает позиции BUY или SELL в зависимости от направления предыдущей свечи и заданного порога в пунктах. В коде реализована обработка торговых операций через стандартный API MetaTrader: OrderSend, OrderClose, OrderModify, а также проверка разрешения торговли и наличия библиотек.

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

НастройкаОписание
__1__ Заголовок раздела — Текстовый параметр-заголовок, отображаемый в интерфейсе для группировки настроек.
TF Таймфрейм — Целочисленный параметр, определяющий таймфрейм для анализа свечного паттерна.
pips Порог в пунктах — Целочисленный параметр, задающий минимальное или максимальное отклонение цены свечи для принятия решения об открытии позиции.
____2___ Заголовок раздела — Текстовый параметр-заголовок, отображаемый в интерфейсе для группировки настроек.
Lots Объём лота — Числовой параметр, определяющий размер торгового объёма в лотах для открытия позиции.
StopLoss Стоп-лосс — Целочисленный параметр, задающий расстояние стоп-лосса в пунктах от цены входа; ноль отключает фиксированный стоп-лосс.
TakeProfit Тейк-профит — Целочисленный параметр, задающий расстояние тейк-профита в пунктах от цены входа; ноль отключает фиксированный тейк-профит.
MagicNumber Магический номер — Целочисленный параметр, используемый для идентификации ордеров и позиций советника.
Slippage Допуск цены — Целочисленный параметр, задающий максимальное допустимое отклонение цены исполнения в пунктах.
NumberOfTry Количество попыток — Целочисленный параметр, определяющий количество повторных попыток выполнения торговой операции при ошибке.
MarketWatch Режим наблюдения — Логический переключатель; при включении ордер отправляется без указания стоп-лосса и тейк-профита, а позже модифицируется.
Traling Трейлинг-стоп — Логический переключатель, включающий функцию трейлинга стоп-лосса для открытых позиций.
TSProfitOnly Трейлинг только в прибыли — Логический переключатель; при включении трейлинг-стоп активируется только после достижения позиции положительной прибыли.
TrailingStep Шаг трейлинга — Целочисленный параметр, определяющий шаг сдвига трейлинг-стопа в пунктах.
_____Averag_____ Заголовок раздела — Текстовый параметр-заголовок, отображаемый в интерфейсе для группировки настроек усреднения.
AVERAGES Усреднение — Логический переключатель, включающий функцию наращивания позиции при движении цены в нужном направлении.
Averag Порог усреднения — Целочисленный параметр, задающий условие для открытия дополнительной позиции при усреднении.
koef_averag Коэффициент усреднения — Числовой параметр, множитель, влияющий на расчёт порога открытия усредняющей позиции.
alfa_lot Точность лота — Целочисленный параметр, определяющий точность округления размера лота при усреднении.
koef_lot Коэффициент лота — Числовой параметр, множитель размера лота для усредняющих позиций.
StopLoss_Av Стоп-лосс усреднения — Числовой параметр, задающий стоп-лосс для позиций, открытых в режиме усреднения; ноль отключает.
TakeProfit_Av Тейк-профит усреднения — Целочисленный параметр, задающий тейк-профит для позиций, открытых в режиме усреднения.
Close_and_TRL Закрытие и трейлинг — Логический переключатель; при включении сначала закрывается прибыльная позиция, затем применяется трейлинг.
TRL Трейлинг усреднения — Целочисленный параметр, определяющий расстояние трейлинга для усреднённых позиций в пунктах.
MagNum_Av Магический номер усреднения — Целочисленный параметр, магический номер, назначаемый позициям, открытым в режиме усреднения.
clCloseBuy Цвет закрытия покупки — Параметр цвета, определяющий цвет визуального индикатора при закрытии позиции BUY.
clCloseSell Цвет закрытия продажи — Параметр цвета, определяющий цвет визуального индикатора при закрытии позиции SELL.
NameCloseSound Звук закрытия — Строковый параметр, задающий имя звукового файла для воспроизведения при закрытии позиции.
_____Lock_____ Заголовок раздела — Текстовый параметр-заголовок, отображаемый в интерфейсе для группировки настроек блокировки.
Lock Блокировка — Логический переключатель, включающий открытие противоположной позиции при определённых условиях.
Lock_TRL Трейлинг блокировки — Логический переключатель, включающий трейлинг для позиций, открытых в режиме блокировки.
StopLoss_Lock Стоп-лосс блокировки — Целочисленный параметр, задающий стоп-лосс для позиций блокировки в пунктах; ноль отключает.
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__ = "????????????????????";
extern int TF = 0;
extern int pips = 10;
extern string ____2___ = "???????? ????????";
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 _____????_______ = "______??????????????__________________";
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 = 2;
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("OpenPosition(): ??????????????? ??????");
         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_

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

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

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

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

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

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

Стоимость полного кода
1 771,40₽ ≈ $21.65