Смотри, как бесплатно скачать роботов
Ищи нас в Twitter!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Советники

RegimeRouter — классификатор трендов/диапазонов с реестром процента выигрышей по каждому режиму - эксперт для MetaTrader 5

Ali Akbar
Ali Akbar
Hi, I'm Ali. 24 years old, trading for around 5 years, and developing MQL5/MQL4 tools. I mainly work on automating manual strategies, fixing broken EA logic, and building clean indicators. I care more about clean architecture and proper risk management than over-complicated code. Always down to talk
| Russian English 中文 Español Deutsch 日本語 Português 한국어 Français Italiano Türkçe
Просмотров:
20
Рейтинг:
(2)
Опубликован:
MQL5 Фриланс Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

RegimeRouter — классификатор трендов и диапазонов с реестром процента выигрышей по каждому режиму


Проблема

Правило, следующее за трендом, приносит убытки в условиях диапазона. Правило, основанное на возврате к среднему значению, терпит крах в условиях тренда. Большинство советников выбирают одно из них и надеются, что рынок пойдет им навстречу. Обычным решением является использование одного фильтра ADX. ADX измеряет только одно — силу тренда — и ничего не говорит о том, являются ли доходности действительно устойчивыми или возвращаются к среднему значению.

Как происходит классификация

По каждому закрытому бару он измеряет три независимых свойства недавней ценовой серии.

  • ADX — классическая сила направления.
  • Экспонента Херста — анализ логарифмической доходности с учетом масштабированного диапазона (R/S). При значении выше 0,5 ряд является устойчивым. При значении ниже 0,5 — антиустойчивым. При значении 0,5 — это случайное блуждание.
  • Автокорреляция с лагом 1 — следует ли за одним движением, как правило, другое движение в том же направлении или же резкий откат.

Каждый показатель отдаёт свой голос: плюс один — за тренд, минус один — за диапазон, ноль — за неопределённость. Голоса суммируются. Если сумма превышает InpMinVotes в любом направлении, режим определяется как TREND или RANGE. В противном случае режим — NEUTRAL, и советник не совершает никаких сделок. Если какой-либо из трёх показателей не может быть рассчитан, он не участвует в голосовании, и бар считается NEUTRAL. Суть в том, что требуется согласие. Использование одного индикатора — это как подбрасывание монеты с дополнительными шагами.

Как происходит маршрутизация

Режим Модуль
ТРЕНД Прорыв максимума или минимума N-бара, учитываемый только в том направлении, в котором уже указывают быстрая и медленная EMA.
RANGE Торгуйте против растянутого z-показателя цены по отношению к её собственной скользящей средней. Покупайте на нижнем хвосте, продавайте на верхнем хвосте.
НЕЙТРАЛЬНЫЙ Ничего.

Журнал

Каждая позиция открывается с магическим номером, равным InpMagicBase плюс идентификатор режима, так что режим, сгенерировавший сделку, отмечается на самой сделке. При запуске советник проходит по истории сделок, группирует их по идентификаторам позиций и восстанавливает запись. Она сохраняется при перезапуске и при переносе на другой терминал.

Для каждого модуля он сообщает исходный коэффициент выигрыша,нижнюю границу Уилсона 95%,коэффициент выигрыша, обеспечивающий безубыточность, вытекающий из средней прибыли и среднего убытка данного модуля, коэффициент прибыльности и вердикт.

TREND 96 tr 38 W сырая 39,6% wilson95 30,4% безубыточность 34,2% PF 1,26 чистая прибыль +734,84 [НЕПРОВЕРЕНО]

Важны именно две средние цифры. Система следования за трендом с размером позиции 2R является прибыльной при показателе выше примерно 34%. Стратегии противодействия тренду с размером ставки 1R требуется показатель выше 50%. А сырой показатель выигрышности по шести сделкам ни о чём не говорит. Вердикт сводится к тому, превышает ли нижняя граница уровень безубыточности — это единственный вариант утверждения «этот модуль работает», который выдерживает проверку на небольшой выборке.

Переключатель A/B

InpForceRegime отключает маршрутизатор и принудительно пропускает каждую сделку через один модуль. Запустите один и тот же символ и один и тот же период три раза — сначала AUTO, затем ALWAYS_TREND, а затем ALWAYS_RANGE — и вы получите прямое подтверждение того, приносит ли классификатор какую-либо пользу. Три показателя по-прежнему регистрируются при принудительном запуске, поэтому вы можете увидеть, как принудительно запущенный модуль работал на свечах, которые маршрутизатор отклонил бы.

Сделайте это, прежде чем доверять системе. Идея маршрутизации — это гипотеза, а не результат.

Бэктест

H1 · с 01.01.2026 по 20.09.2026 · 10 000 USD · включена случайная задержка · все параметры по умолчанию. Два символа, оба показаны.

EURUSD H1

Показатели Значение
Общая чистая прибыль +900,42
Валовая прибыль / валовый убыток 3 712,84 / 2 812,42
Коэффициент прибыльности 1,32
Ожидаемая выплата 9,00
Коэффициент восстановления 1,71
Общее количество сделок 100
Максимальное снижение баланса 505,32 (4,56 %)
Максимальное снижение собственного капитала 527,80 (4,76 %)
Модуль Сделки Выигрышные Исходные данные Уилсон 95% минимум Чистый
ТЕНДЕНЦИЯ 96 38 39,6% 30,4 % +734,84
ДИАПАЗОН 4 4 100,0 % 51,0 % +165,58

96 + 4 = 100 сделок и +734,84 + 165,58 = +900,42, поэтому данные в журнале точно совпадают с отчетом тестера.

XAUUSD H1 — тот же советник, те же настройки, тот же период

Показатель Значение
Общая чистая прибыль −1 554,11
Конечный баланс 8 445,89
Общее количество сделок 85
Модуль Сделки Выигрыши Исходные Уилсон 95% низкий Чистый
ТЕНДЕНЦИЯ 78 26 33,3% 23,9 % −1 576,33
ДИАПАЗОН 7 4 57,1 % 25,0 % +22,22

78 + 7 = 85 сделок и −1 576,33 + 22,22 = −1 554,11. Эта сделка приносит убыток. Я специально публикую её рядом с прибыльной, потому что список, в котором указан только тот символ, который принёс прибыль, ничего не говорит о советнике.

Что показывает этот результат, а что нет

Прочитайте эту часть, прежде чем использовать советник.

  • Модуль TREND не подтвердил свою эффективность ни на одном из символов. На паре EURUSD его средняя прибыль составила 93,35, а средний убыток — 48,49, поэтому для выхода в ноль требовалось, чтобы около 34,2 % сделок были прибыльными. Прибыльных было 39,6 %. Однако нижняя граница Уилсона (95%) для этой доли выигрышных сделок составляет 30,4%, что ниже уровня безубыточности. При данном объеме выборки результат свидетельствует об отсутствии какого-либо преимущества. На паре XAUUSD этот же модуль показал 33,3% по исходным данным и 23,9% по нижней границе, при этом он принёс убыток. В обоих случаях вывод один и тот же: пока недостаточно доказательств.
  • Чтобы нижняя граница вышла за пределы безубыточности при показателе выигрыша по паре EURUSD,потребовалось бы примерно 320 сделок. Один инструмент на графике H1 принес 100 за примерно девять месяцев, так что это проблема портфеля, а не проблема более длительного бэктеста.
  • Модуль RANGE по сути не протестирован. Четыре сделки по EURUSD, семь по XAUUSD. 100%-ная доля выигрышных сделок по EURUSD ничего не значит, и именно поэтому существует колонка Уилсона.
  • Тестирование вне выборки отсутствует. Один период, один таймфрейм, два инструмента.
  • Моделирование проводилось по принципу «каждый тик», а не по реальным тикам. Выходы по сделкам определяются стоп-лоссом (SL) и тейк-профитом (TP) брокера, поэтому траектория движения внутри бара имеет значение. Перед тем как делать выводы, запустите модель на реальных тиках.

Я публикую это потому, что полезна именно методика измерения, а не потому, что у меня есть проверенное преимущество, которое я хочу вам продать. Проведите A/B-тестирование. Если маршрутизатор не превосходит свои два собственных модуля на вашем символе, об этом тоже стоит знать.

Примечания по исполнению

  • Сигналы оцениваются при закрытии бара, поэтому система рассчитана на M15 и выше.
  • Позиции открываются без стопов, а затем стопы устанавливаются на основе реальной цены исполнения. Стоп, рассчитанный на основе моментального снимка перед сделкой, может оказаться уже неактуальным к моменту исполнения ордера.
  • Если установка стоп-приказов не удалась, позиция немедленно закрывается, а не остается без защиты.
  • Расстояния до стопов ограничиваются уровнем стопов и уровнем заморозки, заданными для данного символа.
  • Выходы соответствуют SL и TP брокера. Ручного принудительного закрытия по времени нет.
  • Опциональный трейлинг-стоп по ATR для трендовых сделок, применяемый не чаще одного раза за бар и никогда не на баре входа.
  • Одновременно открывается только одна позиция. На счете с неттингом второй ордер по тому же символу объединяется с существующей позицией, а не становится отдельной сделкой, что могло бы незаметно повредить учетную книгу.
  • Определение размера лота с учётом риска, дневной лимит убытков, дневной лимит сделок, фильтр по спреду, минимальное соотношение тейк-профита к спреду и опциональный фильтр по сессии.

Основные входные параметры

Входные данные По умолчанию Функция
InpForceRegime Авто Принудительно использовать один модуль для A/B-тестирования классификатора
InpMinVotes 2 Голосов из трёх, необходимых для перехода к режиму
InpADXTrendLevel / InpADXRangeLevel 25 / 20 Пороги голосования ADX
InpHurstBars 256 Бар данных о доходности, лежащих за оценкой по методу Херста
InpHurstAdaptive выключено Оценка Херста проводится по собственному распределению, а не по фиксированным уровням
InpAutoCorrThreshold 0,05 Автокорреляция должна превышать это значение, чтобы учитываться при голосовании
InpBreakoutBars 20 Модуль тренда: N-барный максимум/минимум для прорыва
InpRangeZEntry 2,0 Модуль диапазона: z-показатель, при котором следует открывать противоположную позицию
InpRiskPercent 0,5 Риск на одну сделку, % от баланса
InpMagicBase 772000 К этому добавляется идентификатор режима

Примечание о пороге Херста

Существует параметр InpHurstAdaptive , который по умолчанию отключен.

Классическая линия тренда/диапазона для показателя Херста равна 0,5. На практике эта линия находится не в том месте. Оценка соотношения R/S имеет смещение в сторону увеличения при конечной выборке, поэтому оценка обычного ряда на основе 256 баров оказывается значительно выше 0,5. При измерении на графике EURUSD H1 среднее значение составляло 0,568 и опускалось ниже 0,45 лишь дважды за 419 наблюдений. При фиксированном диапазоне 0,45–0,55 этот индикатор фактически ничего не измеряет. Он практически постоянно сигнализирует о ТРЕНДЕ.

Включение параметра ` InpHurstAdaptive ` отключает абсолютную шкалу и вместо этого задает относительный вопрос: является ли данная серия более устойчивой, чем этот инструмент в последнее время? Сохраняются последние N значений, и голос отдается на основе процентилей этой истории, а не по отметке 0,5.

Цена этого реальна. По замыслу «голосующий» тогда голосует за RANGE по фиксированной доле баров, независимо от того, как ведет себя рынок. Так что это переключатель, а не перепрограммирование. По умолчанию он отключен, поскольку приведенные выше бэктесты проводились с отключенной функцией, и я не хочу, чтобы поставляемая по умолчанию настройка была такой, для которой у меня нет результатов.

Ни одна стратегия не гарантирует прибыльности. Это дает вам структуру для тестирования со встроенной системой измерения. Но это не даёт вам преимущества.

— Али Раджпут


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

One-Click Trade Manager — определение размера лота с учетом риска, а также установка точек входа, стопа и целевого уровня одним щелчком мыши One-Click Trade Manager — определение размера лота с учетом риска, а также установка точек входа, стопа и целевого уровня одним щелчком мыши

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

Contract Sizer: ladder, floor and a breaker that survives a deposit Contract Sizer: ladder, floor and a breaker that survives a deposit

Три механизма защиты при определении размера позиции, которые действуют по-разному; именно их путаница приводит к тому, что так много счетов оказываются полностью обнуленными: - «лестница»: один контракт на каждые X баланса, всегда применяется в качестве верхнего предела (CAP), даже при ручном определении размера лота; - floor: при балансе ниже минимального капитала торговля не ведётся; требуется новый депозит; - breaker: срабатывает при падении на X% ниже пикового значения, независимо от размера счёта, и не сбрасывается автоматически. Что решает эта библиотека, а почти ни одна другая — депозит не является прибылью, а вывод средств — убытком. Брейкер измеряет падение относительно пикового значения баланса. Без специальной обработки пополнение счёта, произведённое ВО ВРЕМЯ просадки, одновременно повышает баланс и пиковое значение, и защита перестаёт фиксировать падение именно в тот момент, когда это было бы полезно. Здесь пополнения и снятия средств смещают пиковое значение на одинаковую величину. Пиковое значение сохраняется в файле: защитный механизм, который забывает пиковое значение при перезапуске терминала, не является защитным механизмом. Демо-версия моделирует внесение средств в момент достижения дна просадки. Запустите её с включенным и выключенным внесением средств и сравните столбец «падение».

YURAZ_RSAXEL Скрипт рисует уровни Рудолфа Акселя YURAZ_RSAXEL Скрипт рисует уровни Рудолфа Акселя

Скрипт рисует уровни Рудолфа Акселя

YURAZ_MCCH YURAZ_MCCH

Индикатор рассчитывает % роста или падения относительно CLOSE, написан с применением ООП, и легко интегрируется в любой советник или иной индикатор.