Обсуждение статьи "Инжиниринг признаков для машинного обучения (Часть 2): Реализация дробного дифференцирования с фиксированным окном в MQL5"

 

Опубликована статья Инжиниринг признаков для машинного обучения (Часть 2): Реализация дробного дифференцирования с фиксированным окном в MQL5:

В этой статье представлена готовая к промышленному применению реализация дробного дифференцирования с фиксированной шириной окна на MQL5 для потока данных MetaTrader 5 в реальном времени. Мы вводим класс CFFDEngine, полностью реализованный в заголовочном файле, который заранее вычисляет веса без фиксированного ограничения, выполняет обновления за O(width) на бар и избегает выделения памяти на каждом тике. Индикатор FFD.mq5 поддерживает все типы ENUM_APPLIED_PRICE и оптимизацию prev_calculated. Скрипты валидации подтверждают численную эквивалентность стандартному конвейеру обработки frac_diff_ffd на Python.

Часть 1 разобрала теорию и реализацию дробного дифференцирования на Python с использованием метода окна фиксированной ширины (FFD) из главы 5 AFML. Три свойства метода FFD делают его идеальным для работы с потоковыми данными в реальном времени: вектор весов предварительно вычисляется один раз, каждое наблюдение зависит от ограниченного окна истории, а вычисление сводится к одному скалярному произведению. В этой статье эти свойства переносятся в готовый к промышленному применению модуль на MQL5 для работы с потоком данных MetaTrader 5 в реальном времени.

Реализация состоит из двух компонентов: CFFDEngine (класс .mqh только в виде заголовочного файла для генерации весов и вычисления скалярного произведения) и FFD.mq5 (пользовательский индикатор, который оборачивает CFFDEngine и отображает дробно-дифференцированный ряд). Индикатор поддерживает оптимизацию MetaTrader prev_calculated и пересчитывает только то, что изменилось с момента предыдущего вызова.

Главная цель проектирования: нулевое выделение памяти при обработке тиков, O(width) на новый бар и амортизированная инициализация O(1) . На типичном инструменте при d = 0.4 и τ = 10−5, ширина окна, определяемая порогом, составляет 1457 баров. При τ = 10−4 она уменьшается до 281 бара. Скалярное произведение по такому окну выполняется на современном оборудовании за микросекунды.

Конструирование признаков для ML (часть 2): реализация дробного дифференцирования с фиксированной шириной окна в MQL5


Автор: Patrick Murimi Njoroge