Обсуждение статьи "Конструирование признаков для машинного обучения (Часть 8): Энтропийные признаки в MQL5"

Опубликована статья Конструирование признаков для машинного обучения (Часть 8): Энтропийные признаки в MQL5:

Реализация на MQL5 четырех методов оценки энтропии — энтропии Шеннона, подстановочной оценки энтропии (Plug-In), сложности Лемпеля — Зива и энтропии Контоянниса — для последовательности, полученной по тиковому правилу внутри бара. CopyTicksRange() ограничивает доступные данные окном тикового кеша брокера, поэтому признаки можно рассчитывать только для недавних баров. В реализации тики из структуры MqlTick кодируются по направлению изменения цены Bid, операции, зависящие от NumPy, заменяются методами работы с массивами, а для использования в советниках и индикаторах предоставляются файлы CEntropyFeatures.mqh и EntropyViewer.mq5.

В статье описывается перенос с Python на MQL5 четырех методов оценки энтропии — энтропии Шеннона, подстановочной оценки энтропии (Plug-In), сложности Лемпеля — Зива и энтропии Контоянниса, — реализованных в части 7, а также объясняются проектные решения, необходимые для их практического применения в MetaTrader 5. Эталонная реализация на Python использовала скользящие окна NumPy, словари Python и ускорение с помощью Numba; ни одно из этих средств недоступно в MQL5. Что еще важнее, доступ к тикам внутри бара в MQL5 ограничен окном тикового кеша брокера, данные из которого возвращает функция CopyTicksRange(), поэтому исторические последовательности тиков за пределами этого кеша просто недоступны. Таким образом, при переносе учитываются сразу три основных ограничения:

  • как получать и кодировать значения тикового правила внутри бара с помощью CopyTicksRange(), помечая бары с недостаточным количеством тиков значением-маркером ENT_EMPTY;
  • как подсчитывать перекрывающиеся w-граммы без NumPy (целочисленный хеш на основе троичной системы счисления служит индексом в массиве счетчиков фиксированного размера, заменяя sliding_window_view и unique);
  • как ограничить поиск совпадений в методе Контоянниса (настраиваемое окно предыстории ограничивает область поиска во внутреннем цикле со сложностью O(n²)).

Цель носит практический характер: воспроизвести численные результаты эталонной реализации на Python, предоставить безопасные точки интеграции с советниками и индикаторами, а также сделать набор признаков пригодным для использования в реальной торговле, несмотря на ограничение тикового кеша.


Автор: Patrick Murimi Njoroge

mandiisa Myers #:
Какая замечательная статья!
Спасибо