Обсуждение статьи "Инжиниринг признаков для машинного обучения (Часть 4): Реализация временных признаков в MQL5"
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Опубликована статья Инжиниринг признаков для машинного обучения (Часть 4): Реализация временных признаков в MQL5:
В части 3 этой серии была создана Python-функция get_time_features, которая преобразует объект DatetimeIndex в структурированную матрицу признаков: циклические переменные, закодированные по Фурье, для часа, дня недели и дня года; флаги принадлежности к четырём основным торговым сессиям на рынке Форекс; индикатор перекрытия сессий; сессионно-зависимую скользящую волатильность; а также календарные эффекты на границах периодов. Реализация на языке Python обрабатывает пакетные данные с полной векторизацией. MQL5 обрабатывает данные бар за баром в режиме реального времени.
В этой статье тот же набор признаков реализован на MQL5 в виде многократно используемого файла включения CTimeFeatures.mqh. Любой советник может подключить его без изменений. Три проблемы требуют решений, выходящих за рамки простого механического перевода кода. Во-первых, MQL5 использует время брокера, а не UTC — при этом большинство розничных брокеров смещают время на своих серверах на два–три часа, что незаметно искажает определение границ торговых сессий для каждого бара в бэктесте. Во-вторых, Python вычисляет скользящую волатильность пакетно с помощью pandas. В MQL5 волатильность необходимо поддерживать инкрементально для каждой торговой сессии с помощью кольцевого буфера. В-третьих, Python применяет частотный фильтр с помощью вызова DataFrame.drop. В MQL5 частотный фильтр необходимо задать при инициализации, а его настройки должны быть отражены в реестре имён признаков, используемом последующими моделями ONNX.
Полученный класс предоставляет три метода, доступные советнику, — Initialize, Update и Calculate — и формирует плоский массив типа double, имена признаков и порядок столбцов в котором идентичны соответствующим значениям функции get_time_features. Модель, обученную в Python на признаках Python, можно развернуть в MQL5 с помощью OnnxRun, передав массив из Calculate без какого-либо изменения порядка элементов.
Автор: Patrick Murimi Njoroge