Смотри, как бесплатно скачать роботов
Ищи нас в Facebook!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Просмотров:
435
Рейтинг:
(9)
Опубликован:
MQL5 Фриланс Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Параметры эксперта (входы)

Советник предоставляет несколько внешних параметров, которые пользователь может изменять для управления его поведением:

Общие параметры

Параметр Тип Описание
MagicNumber int Уникальный идентификатор для сделок советника.
InitialLot double Размер начального лота для первой сделки в серии.
AllowBuy bool Флаг, разрешающий советнику открывать сделки на покупку (начальную и по Мартингейлу).
AllowSell bool Флаг, разрешающий советнику открывать сделки на продажу (начальную и по Мартингейлу).
TakeProfit int Фиксированный тейк-профит в пунктах/пипсах, используемый при выставлении отложенных ордеров (но не для рыночного исполнения).
FindHighLowBackBars int Количество предыдущих баров, на которые нужно оглянуться, чтобы определить наивысший максимум и наименьший минимум для первоначального размещения отложенного ордера.
ResetAfterBars int Количество баров, после которого первоначальные отложенные ордера будут удалены и заново оценены (если позиция не открыта).

Стратегия Мартингейла

Параметр Тип Описание
ReverseMartingale bool Если значение равно true, то последующие сделки по Мартингейлу будут совершаться в направлении, противоположном последней сделке в серии (обычно это является анти-Мартингейлом или хеджированием, но в случае false код открывается в том же направлении). Текущая логика предполагает открытие в том же направлении, если значение ReverseMartingale равно false.
LotMultiplier double Коэффициент, на который умножается размер лота для следующей сделки в убыточной серии (например, 2 .0 означает удвоение лота).
SecureProfitMartingaleTarget double Общая плавающая прибыль (в валюте счета), при которой вся серия открытых сделок будет закрыта.
DistanceMartingalePips int Расстояние (в пунктах), на которое цена должна отойти от цены открытия последней сделки, прежде чем будет открыта новая сделка по Мартингейлу.
MaxTradesInSeries int Максимальное количество сделок, разрешенных в одной серии Мартингейла.

Стратегия времени

Параметр Тип Описание
AllowMonday... AllowFriday bool Флаги, разрешающие или запрещающие торговлю в определенные дни недели.
ForbiddenDates строка Список дат (формат YYYY.MM.DD), в которые торговля запрещена, разделенный запятыми.

Обзор основных функций

OnInit() (Инициализация)

Устанавливает MagicNumber, режим маржи и отклонение советника. Он сбрасывает переменные состояния Мартингейла ( s_currentLot , s_totalTradesInSeries и т. д.) к их начальным значениям, подготавливая к новому старту.

OnDeinit() (Деинициализация)

Простая функция для очистки, печатающая сообщение, когда советник останавливается или удаляется.

IsTradingDateAllowed() и IsTradingDayAllowed() (Фильтры торговли)

Эти функции проверяют текущий день и дату на соответствие заданным пользователем параметрам ( AllowMonday to AllowFriday и ForbiddenDates ), чтобы определить, разрешена ли торговля.

OpenTradeLogic(ENUM_ORDER_TYPE type, string tradeComment) (Исполнение рынка)

Эта функция обрабатывает открытие новых рыночных позиций (покупка или продажа).

  1. Она проверяет и нормализует размер лота в соответствии с минимальным, максимальным и шаговым размером, установленным брокером.

  2. Она проверяет наличие достаточной свободной маржи с помощью функции CheckMargin().

  3. Выполняется сделка без фиксированного тейк-профита или стоп-лосса (tp_calculated - 0).

  4. Обновляются глобальные переменные состояния Мартингейла: s_currentLot , s_lastOpenPrice , s_seriesType , и s_totalTradesInSeries .

CloseAllPositions()

Перебирает все открытые в данный момент позиции и закрывает все, которые были открыты этим советником (при совпадении с MagicNumber).

PendingOrders(ENUM_ORDER_TYPE type, double price, double lotSize, string comment) (Размещение отложенных ордеров)

Эта функция размещает ордера Buy Limit или Sell Limit:

  1. Она проверяет размер лота и достаточность маржи.

  2. Она проверяет цену входа на соответствие минимальному расстоянию брокера ( SYMBOL_TRADE_STOPS_LEVEL ).

  3. Рассчитывает фиксированный тейк-профит ( tp ) на основе входного параметра TakeProfit.

  4. Отправляет торговый запрос. Примечание: Функция UpdateHighLowAndOrders вызывает эту функцию для размещения первоначальных лимитных ордеров на покупку и лимитных ордеров на продажу.

UpdateHighLowAndOrders() (Логика первоначального входа)

Это механизм первоначального входа, когда не открыто ни одной позиции:

  1. Он просматривает FindHighLowBackBars, чтобы найти Highest High и Lowest Low.

  2. Вычисляется priceSellLimit (Highest High + 1 тик) и priceBuyLimit (Lowest Low - 1 тик).

  3. Проверяется, существуют ли уже ордера Buy Limit и Sell Limit с MagicNumber советника.

  4. Он размещает первоначальный ордер Sell Limit чуть выше недавнего самого высокого максимума и ордер Buy Limit чуть ниже недавнего самого низкого минимума, каждый из которых использует InitialLot.

OnTick() (основная логика)

Ядро логики исполнения советника:

  1. Проверка времени: Предотвращает избыточные вычисления на одном и том же тике.

  2. Проверка фильтра: Если торговля не разрешена по дню/дате, удаляет все отложенные ордера.

  3. Проверка цели прибыли (серийный выход): Если eaHasOpenPositions равен true И totalFloatingProfit равен SecureProfitMartingaleTarget, то вызывается CloseAllPositions() и сбрасываются все переменные состояния Мартингейла для начала новой серии.

  4. Первоначальное размещение ордеров: Если !eaHasOpenPositions И торговля разрешена, он сбрасывает статус Мартингейла и проверяет, сформировался ли новый бар.

    • Если новый бар сформирован, проверяется, является ли значение barsCount равным ResetAfterBars . Если да, то он удаляет отложенные ордера и вызывает UpdateHighLowAndOrders() для размещения новых начальных ордеров. Если нет, он просто вызывает UpdateHighLowAndOrders().

  5. Логика шага Мартингейла: Если eaHasOpenPositions равно true И s_totalTradesInSeries равно $< MaxTradesInSeries`:

    • Проверяется, не является ли TotalFloatingProfit отрицательным И не сдвинулась ли цена относительно последней открытой сделки по крайней мере на DistanceMartingalePips .

    • Если оба условия выполнены, он рассчитывает следующий лот путем умножения s_currentLot на LotMultiplier .

    • Определяется направление ордераToOpen (либо в том же направлении, что и серия, либо в обратном, на основе ReverseMartingale).

    • Он вызывает OpenTradeLogic(), чтобы открыть новую, умноженную позицию, продолжая серию Мартингейла.


Краткое описание стратегии

Советник "Babi Ngepet" реализует рискованную, но потенциально высокодоходную стратегию Мартингейла в сочетании с начальным входом на прорыве/развороте диапазона:

  1. Начальный вход: Советник устанавливает начальный лимит на покупку (ниже недавнего минимума) и лимит на продажу (выше недавнего максимума). Это предполагает первоначальное предположение о поведении в диапазоне - советник совершает покупку, когда цена падает до минимума, и продажу, когда цена поднимается до максимума.

  2. Управление торговлей: Если одна из первоначальных сделок срабатывает и позиция переходит в суммарный убыток (отрицательная плавающая прибыль), а цена продолжает двигаться против открытых позиций на определенное расстояние, советник открывает новую позицию в том же направлении с большим размером лота (Мартингейл).

  3. Стратегия выхода: Серия сделок продолжает увеличивать размер лота до тех пор, пока суммарная плавающая прибыль всех сделок серии не достигнет SecureProfitMartingaleTarget, после чего все позиции закрываются, и советник перезапускается для новой серии.

Предупреждение: Стратегия Мартингейла известна высокими просадками и высоким риском потери капитала, поскольку размер лота увеличивается после каждого проигрышного шага.


Перевод с английского произведен MetaQuotes Ltd.
Оригинальная публикация: https://www.mql5.com/en/code/64444

AIS Extremum AIS Extremum

Индикатор позволяет оценивать вероятность того, что цена достигла своего максимума или минимума.

Trap News MT5 Trap News MT5

Сценарий для новостей-ловушек с высокой степенью воздействия

Breakout Strategy with Prop Firm Helper Functions Breakout Strategy with Prop Firm Helper Functions

Это обновление "Простой, но эффективной стратегии прорыва". В этом коде я добавил несколько вспомогательных функций для решения задач проп-фирм.

Click on the market chart to create a price alert Click on the market chart to create a price alert

Это первая новинка для MetaTrader 5. Теперь вы можете щелкнуть на графике, чтобы создать ценовые оповещения.