luckycandles 2in1.mq4
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «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? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.