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

Relative Moving Average Indicator - индикатор для MetaTrader 5

Просмотров:
24
Рейтинг:
(2)
Опубликован:
MQL5 Фриланс Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Обзор

Это точная реализация в MetaTrader 5 методологии «Относительной скользящей средней» (RMA), представленной доктором Даниэлем Александром Блохом в курсе «Систематическая торговля с использованием RMA». Классическая скользящая средняя сводит ценовое окно к одному сглаженному числу, которое показывает уровень, но не редкость: высокое закрытие может сильно отличаться от всего, что его окружает, или быть высоким, но при этом вполне обычным в пределах окна. RMA отвечает на второй вопрос. Она рассматривает скользящее окно как небольшое распределение, ранжирует текущую цену внутри него и отображает этот ранг по шкале [0, 1], значение которой одинаково для любого инструмента и в любом режиме волатильности.

Примечание: это не тот «RMA», который отображают некоторые платформы для построения графиков (сглаживание Уайлдера, вариант EMA). Несмотря на совпадающий акроним, это совершенно другой объект. Здесь RMA означает конструкцию Блоха: статистику цен, измеренную относительно скользящего среднего и проецируемую на распределение нормализованных доходностей.

Структура состоит из трёх уровней, и код точно их отражает:

  • SMA скользящего окна из W закрытий, рассматриваемого как локальное равновесие и зафиксированного на нуле.
  • Семейство RMA — отклонение каждого ориентира окна от этого равновесия, представленное в виде чистого отношения sma / x - 1, вычисляемое для последнего закрытия, первого закрытия, среднего закрытия, а также минимума и максимума окна. Поскольку это отношения, они не зависят от масштаба и сопоставимы между различными инструментами.
  • Фрактили, которые переформулируют окно в виде нормализованных доходностей (цена закрытия / SMA - 1) и ранжируют текущие, минимальные и максимальные значения внутри этого распределения. Это простая эмпирическая функция распределения вероятностей (CDF), взятая дословно из определения в приложении к статье, а f_w — это ряд, на основе которого фактически осуществляется торговля на всех последующих этапах.

Построение RMA: ценовое окно → SMA → нормализованное распределение → фратиль

Построение: скользящее окно цен закрытия превращается в SMA, цены закрытия пересчитываются в виде распределения нормализованных доходностей относительно этого SMA, а ранговое место текущей цены в рамках этого распределения становится её фрактилем по шкале [0, 1].

Помимо этого, в состав движка входят два производных показателя. Детектор режимов классифицирует разброс нормализованных доходностей как расширяющийся, сжимающийся или переходный, используя показатели «относительных экстремумов» (Relative Extremum Ratios) из статьи, подтвержденные наклоном по методу наименьших квадратов, z-оценкой и коэффициентом вариации. Монитор неблагоприятного движения публикует d_med_w — фрактиль, перецентрированный по медиане, и D_k — долю недавних шагов от бара к бару в этом диапазоне, которые были направлены вверх; это показатель направленной стабильности, который делает утверждение «это движение идет в обратную сторону» точным, а не субъективным.

В комплект входят две программы. RMA_Engine вычисляет все ряды и выводит все девятнадцать из них в виде буферов, благодаря чему советник или другой индикатор может считывать точные значения прямо на графике, а не повторно реализовывать математические вычисления и отставать от графика. RMA_Panel ничего не вычисляет: он находит движок, уже прикреплённый к графику, и отображает группу его буферов в отдельном подокне, поскольку показатели семейства RMA измеряются в долях процента, а d_med_w центрирован относительно нуля, поэтому ни один из них не читается на оси движка от 0 до 1.


Что рисует движок

Движок открывает отдельное окно с вертикальной осью, привязанной к интервалу [0, 1], и рисует шесть графиков:

График
Внешний вид
Что это означает
Режим
Цветная полоса во всю высоту, расположенная за всем остальным
Зелёный — расширение, красный — сжатие, янтарный — переход к расширению, синий — начало сжатия. Пока режим ещё не определён, ничего не рисуется, поэтому разминка не начинается с цветового залива, означающего «ответа пока нет».
f_w
Толстая синяя линия
Фрактиль текущего закрытия: место, которое занимает последняя нормализованная доходность в пределах собственного окна. Это основная серия.
f_min / f_max
Пунктирные красная и зелёная линии
Фрактили минимума и максимума окна — нижняя и верхняя границы огибающей, по которой движется f_w.
alpha_lo_mean / alpha_hi_mean
Фиолетовая и оранжевая линии
Сглаженные уровни квантилей: EMA от f_w и от его дополнения, создающие более медленное фоновое движение, на фоне которого всплеск f_w воспринимается как всплеск.

Начерчены три горизонтальные направляющие на двух порогах входа и на медиане. Они построены на основе тех же входных данных, что и сопутствующий советник, а не жестко запрограммированы, поэтому перенастройка порогов приводит к смещению направляющих вместе с ними, вместо того чтобы оставить график в состоянии тихого несоответствия правилам.

Как это интерпретировать. f_w, прижатое к верхней линии, означает,что текущая цена закрытия находится на максимальном значении из всех значений, зафиксированных за время его окна, и именно в этой точке инициируется нисходящий проход; f_w у нижней линии — это зеркально противоположный случай. Медиана — это уровень, правее которого движение должно оставаться, и его пересечение является естественным выходом из позиции. Цветная полоса задает контекст этому показателю, поскольку стратегия статьи заключается в открытии позиций в начале фазы расширения и их закрытии во время фазы сжатия.


Рекомендуемая настройка

Настройка
Рекомендуемое значение
Примечания
Символ
Любой
Шкала фрактилей самонормализуется, поэтому для получения значимых показаний не требуется отдельная калибровка по каждому символу. При разработке и на приведенных ниже скриншотах использовалась пара EURUSD.
Таймфрейм
От M30 до H4
Работает на любом таймфрейме. Окно измеряется в барах, поэтому более короткий таймфрейм с тем же значением W просто описывает более короткий отрезок рынка.
Размер окна (W)
106 баров
Значение по умолчанию. В статье предполагается, что окно калибруется для каждого актива отдельно, поэтому это скорее отправная точка, чем рекомендация.
Требуемый исторический диапазон
W + количество баров обратного просмотра режима
126 баров при настройках по умолчанию. Каждый график начинается с того момента, когда соответствующий модуль может дать первый ответ, а не с момента самой длительной «разогрева» в наборе, поэтому фрактили появляются раньше, чем полоса режима.


Ключевые особенности

Верность оригинальной статье

  • Фрактиль соответствует определению из приложения к статье: f_i = (1 / |W_i|) * sum_j I( W_ij <= v_i ), реализованный в точном соответствии с текстом. В случаях, когда текст статьи и приложение к ней расходятся, приоритет отдается приложению, а несоответствие документируется в исходном коде, а не исправляется незаметно.
  • Классификация режимов следует «Относительным коэффициентам экстремумов»: сначала проверяется сжатие, поскольку это самое строгое толкование, требующее подтверждения, тогда как расширение намеренно достигается легче.
  • Не было добавлено никаких сглаживаний, пороговых значений или фильтров, которые не предусмотрены исходным кодом.

Создан для чтения другими программами

  • Все девятнадцать рядов представлены в виде буферов индикаторов: шесть — для построения графиков, а тринадцать — только для расчётов, так что экспертный советник может считывать те же числа, что и график, и их значения никогда не будут расходиться.
  • Карта буферов находится в одном общем заголовке, поэтому движок, панели и любой потребитель говорят на одном языке, вместо того чтобы расходиться во мнениях без компиляционных ошибок, которые могли бы кого-то предупредить.
  • Математика полностью реализована в классах, определяемых только в заголовочных файлах, без зависимости от графиков или ордеров, поэтому один и тот же код может управлять скриптом или тестовым набором без использования заглушек.

Правильный инкрементный перерасчет

  • Каждый проход пересчитывает данные, начиная с prev_calculated-1, а не с prev_calculated. Бар с этим индексом ещё формировался при предыдущем вызове, и его закрытие стало окончательным только сейчас; если оставить всё как есть, то в каждой серии, зависящей от него, зафиксируется недоформированное значение, а разница фрактилей между барами станет разницей между двумя незавершёнными числами.
  • Бары в фазе прогрева содержат значение EMPTY_VALUE, а не ноль, поэтому потребитель, подключающийся в середине прогрева, увидит «отсутствует» вместо правдоподобного числа.
  • Классификация режимов зависит от пути внутри полосы перехода, поэтому хранится история по каждому бару, а не одно скользящее поле, что позволяет инкрементальному проходу возобновить цепочку с предыдущего бара.

Панели, заимствующие вторую ось

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


Скриншоты

Окно осциллятора RMA_Engine с фрактилями, альфа-полосой и фоновым изображением режима на графике EURUSD M30

Окно движка на паре EURUSD, M30: f_w с его огибающей и сглаженными квантильными средними значениями на фоне цветных режимов.

График с индикаторами D_k и d_med_w на паре EURUSD, таймфрейм M30

Панель «Неблагоприятная ситуация»: d_med_w, центрированная на нуле, с D_k над ней — показателем направленной согласованности.

Панель пропуска сигналов семейства RMA с индикаторами rma_w, min и max на графике EURUSD M30

Панель семейства RMA: rma_w с минимумом и максимумом окна на собственной шкале, а также огибающей, по которой проходит текущая цена.


Установка и структура файлов

Два индикатора и четыре заголовочных файла. Важна организация папок: движок загружает панель по относительному пути RMA\RMA_Panel, а заголовочные файлы включаются как <RMA\...>, поэтому и то, и другое должно находиться в своих подпапках RMA.

Файл
Роль
Описание
Indicators\RMA\RMA_Engine.mq5
Основной индикатор
Запускает три модуля на текущих свечах, привязывает все девятнадцать буферов, рисует шесть графиков и полосу режима, а также открывает панели. Не содержит собственных математических вычислений.
Indicators\RMA\RMA_Panel.mq5
Панель пропуска
Размещает «двигатель» на графике и отображает одну группу его буферов в отдельном окне с собственной шкалой. Два режима: неблагоприятное движение (D_k, d_med_w) и семейство RMA (rma_w, rma_min, rma_max).
Include\RMA\RmaTypes.mqh
Общий словарь
Перечисления режимов и перекрестных состояний, карта буферов, а также количество графиков и палитр. Единственное место, где движок, панели и любой потребитель согласуются.
Include\RMA\RmaCore.mqh
Числовое ядро
SMA, семейство из пяти RMA, распределение нормализованных доходностей, функция фрактилей, диапазон окна и сглаженные границы альфа.
Include\RMA\RegimeDetector.mqh
Классификация режимов
Расширение, сжатие и два переходных состояния, определяемые огибающей отношения экстремумов, подтверждённой наклоном, z-оценкой и коэффициентом вариации.
Include\RMA\AdverseMonitor.mqh
Направленная согласованность
d_med_w — медианно-центрированный фрактил, и D_k — доля восходящих изменений в недавних переходах от одного бара к другому.


Чтение буферов из собственного кода

Получите дескриптор с помощью iCustom на RMA\RMA_Engine и считайте любой индекс ниже с помощью CopyBuffer. Индексы от 0 до 6 — это отображаемые на графике ряды, а от 7 до 18 — только для расчёта, но все девятнадцать доступны для чтения.

Индекс
Ряды
Значение
0, 1
Полоса режима, индекс цвета
Высота фона и его слот в палитре. Не содержит измерений, только цвет.
2
f_w
Фрактиль последнего нормализованного значения окна, в диапазоне [0, 1]. Основной ряд.
3, 4
f_min, f_max
Фрактили минимального и максимального значений окна.
5, 6
alpha_lo_mean, alpha_hi_mean
Экспоненциальная средняя (EMA) нижней и верхней границ альфа.
7
sma
Простое скользящее среднее окна в ценовых единицах.
от 8 до 12
rma_w, rma_1, rma_mid, rma_min, rma_max
Семейство RMA: sma, деленное на последнюю, первую, среднюю, минимальную и максимальную цену закрытия, минус один.
13
range
Диапазон нормализованных доходностей окна — величина, которую считывает детектор режима.
14, 15
alpha_lo, alpha_hi
Уровень исходного квантиля, занимаемого f_w, и его дополнение.
16
режим
Идентификатор режима в виде числа типа double: 0 — расширение, 1 — сжатие, 2 — переход, 3 — прорыв, 4 — неизвестно.
17, 18
D_k, d_med_w
Направленная согласованность и медианно-центрированный фрактил.
Внимание: каждая группа входных данных в индикаторе занимает слот параметра в вызове iCustom, даже если она не содержит значения. Если пропустить одну из групп, остальные параметры сдвигаются на одну позицию вверх, что приводит к загрузке рабочего индикатора, настроенного с неверными числами, и к его сбою без каких-либо предупреждений. Передавайте входные данные точно в том порядке, в котором они объявлены, включая группы.


Входные параметры

Группа
Параметры
Значения по умолчанию
Window
InpWindowSize, InpSmoothingPeriod
106 баров, 10
Обнаружение режима
InpEpsilonLow, InpEpsilonHigh, InpSlopeThreshold, InpRegimeLookback, InpVariationRatioLow, InpZScoreExpansion, InpRangeHistoryLookback
0,15; 3,0; 0,0001; 20; 0,1; 1,0; 100
Неблагоприятное движение
InpAdverseLookback
10 баров
Линии опоры
InpEntryUpperThreshold, InpEntryLowerThreshold
0,9; 0,1
Панели
InpAutoAttachPanels, InpPanelAdverse, InpPanelRmaValues, InpAdverseThresholdDown, InpAdverseThresholdUp
true, true, false, 0,3, 0,7
Фон режима
InpShowRegimeBand плюс один цвет на каждый режим
true, тёмно-зелёный / красный / янтарный / синий
Примечание: панели автоматически пропускаются при запуске тестера стратегий в невизуальном режиме, поэтому ничего не рисуется там, где нет графика, на котором можно было бы это отобразить.


Основа исследования

Реализация основана на следующем:

  • Даниэль Александр Блох, «Курс по систематической торговле с использованием RMA», доступен на SSRN.

Стоит четко указать одно предостережение, поскольку оно исходит из самого источника: раздел «Результаты» статьи оставлен в качестве темы для будущих исследований. В ней предлагается концептуальная основа и механизм работы, а не эмпирические результаты. Этот индикатор предоставляет вам описание состояния рынка в шкале, которая везде означает одно и то же, что служит основой для вашего собственного тестирования, а не проверенным преимуществом, унаследованным от источника.

В сопутствующей статье подробно рассматриваются математические основы и реализация каждого модуля, а также создается советник, торгующий на основе этих буферов: «Реализация концепции относительной скользящей средней (RMA) Блоха на языке MQL5».

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

ZZV_CHoCH_V6 ZZV_CHoCH_V6

ZZV_CHoCH_V6 — зигзаг, построенный на волатильном стопе (ATR-трейлинге). За основу взят код ZZVolatility. Он отмечает точками вершины и низы рыночных колебаний, а порог разворота задаётся не фиксированным процентом, как у классического ZigZag, а текущей волатильностью: в спокойном рынке индикатор ловит мелкие движения, в бурном игнорирует их. Встроенный фильтр структуры оставляет только значимые экстремумы — обновления хая и лоя либо моменты слома тренда.

Clock (Spread) Clock (Spread)

Функции данного индикатора: Clock (Spread).mq5 — это индикатор графика MetaTrader 5, который отображает в углу графика небольшую текстовую надпись, содержащую: Таймер обратного отсчёта до закрытия текущей свечи (в формате ЧЧ:ММ:СС или ММ:СС, в зависимости от таймфрейма) Текущий спред (Ask − Bid, в пунктах), отображаемый в скобках рядом с таймером. Журнал изменений: Версия 2.20: - Цвет спреда теперь динамически меняется в зависимости от направления (зеленый = растет, красный = падает) - Добавлены настраиваемые параметры для цветов спреда

Trading Panel EA Trading Panel EA

Pro Manager — это универсальный торговый помощник для платформы MT5, разработанный специально для проп-фирм и профессиональных трейдеров. Выполняйте сделки быстрее, управляйте позициями более эффективно, контролируйте риски и автоматизируйте повседневные торговые задачи с помощью мощных инструментов, таких как «Break-even», «Average TP», управление «Magic Number» и «Auto Grid».

YURAZ_MCCH YURAZ_MCCH

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