Мы перенесли тесты на структурные сдвиги из главы 17 AFML в MQL5 в виде единого подключаемого файла CStructuralBreaks, предоставляющего советникам шесть признаков, индексируемых по барам: статистику CSW и ее критическое значение, тест Дики — Фуллера типа Чоу (DFC), SADF со скользящим окном с заданной глубиной истории (по умолчанию 252 бара), SM-Exp и SM-Power. В SADF используются скользящие окна с вычислительной сложностью O(L²), что позволяет выполнять расчеты в реальном времени. Сопутствующий индикатор StructuralBreaksViewer строит графики всех рядов данных с возможностью настройки видимости каждого ряда и опциональной нормализацией по z-оценке. SB_EMPTY отмечает недопустимые значения для обеспечения безопасной интеграции.
В 9-й части этой серии на Python был реализован набор тестов на структурные сдвиги из главы 17 книги AFML, включающий CUSUM-тест Чу — Стинчкомба — Уайта, тест Дики — Фуллера типа Чоу, SADF для шести регрессионных моделей и два варианта с повышенной устойчивостью (QADF и CADF). В этой статье три основных теста — CSW, Chow и SADF — переносятся в MQL5 в виде единого подключаемого файла CStructuralBreaks.mqh, размещенного в каталоге MQL5/Include/StructuralBreaks/. Также включены тесты на субмартингальность и супермартингальность (SM-Exp и SM-Power), что доводит общее число статистик до пяти на каждый бар.
Реализация на MQL5 отличается от версии на Python одним архитектурным решением, о котором стоит сказать сразу: SADF использует скользящее окно с заданной глубиной истории, а не полное расширяющееся окно. В Python использование расширяющегося окна оправданно, поскольку вычисления выполняются однократно в автономном режиме на фиксированном наборе данных. В советнике, выполняющем пересчёт на каждом новом баре, вычислительная сложность при использовании расширяющегося окна составляет O(T²), где T — число завершённых баров. При T = 1 000 баров — небольшом двухлетнем ряде дневных данных — использование расширяющегося окна требует в 15 раз больше операций во внутреннем цикле, чем использование скользящего окна длиной 252 бара. При T = 5 000 баров оно требует в 400 раз больше таких операций. Скользящее окно не является компромиссом; оно слегка меняет интерпретацию статистики, и это изменение описано в разделе 6.
Опубликована статья Конструирование признаков для машинного обучения (Часть 10): Tесты на структурные сдвиги в MQL5:
В 9-й части этой серии на Python был реализован набор тестов на структурные сдвиги из главы 17 книги AFML, включающий CUSUM-тест Чу — Стинчкомба — Уайта, тест Дики — Фуллера типа Чоу, SADF для шести регрессионных моделей и два варианта с повышенной устойчивостью (QADF и CADF). В этой статье три основных теста — CSW, Chow и SADF — переносятся в MQL5 в виде единого подключаемого файла CStructuralBreaks.mqh, размещенного в каталоге MQL5/Include/StructuralBreaks/. Также включены тесты на субмартингальность и супермартингальность (SM-Exp и SM-Power), что доводит общее число статистик до пяти на каждый бар.
Реализация на MQL5 отличается от версии на Python одним архитектурным решением, о котором стоит сказать сразу: SADF использует скользящее окно с заданной глубиной истории, а не полное расширяющееся окно. В Python использование расширяющегося окна оправданно, поскольку вычисления выполняются однократно в автономном режиме на фиксированном наборе данных. В советнике, выполняющем пересчёт на каждом новом баре, вычислительная сложность при использовании расширяющегося окна составляет O(T²), где T — число завершённых баров. При T = 1 000 баров — небольшом двухлетнем ряде дневных данных — использование расширяющегося окна требует в 15 раз больше операций во внутреннем цикле, чем использование скользящего окна длиной 252 бара. При T = 5 000 баров оно требует в 400 раз больше таких операций. Скользящее окно не является компромиссом; оно слегка меняет интерпретацию статистики, и это изменение описано в разделе 6.
Автор: Patrick Murimi Njoroge