Обсуждение статьи "Архитектура машинного обучения для MetaTrader 5 (Часть 14): Моделирование транзакционных издержек для разметки методом тройного барьера в MQL5"

 

Опубликована статья Архитектура машинного обучения для MetaTrader 5 (Часть 14): Моделирование транзакционных издержек для разметки методом тройного барьера в MQL5:

В статье заданные вручную предположения об издержках в разметке методом тройного барьера заменяются измеренными данными. Скрипт MQL5 собирает у брокера распределение спреда, ставки свопа и свойства символа, а модель Python преобразует эти данные в min_ret, откалиброванный с учётом условий брокера, который можно передать в get_events(). После этого метки учитывают фактические издержки полного цикла сделки для выбранного инструмента и периода удержания позиции.

Представьте, что вы проектируете мост, но не учитываете в расчётах собственный вес конструкции: такая конструкция не выдержит нагрузки, хотя причина ошибки была очевидна с самого начала. Похожая практическая ошибка встречается во многих процессах разметки тройным барьером. Исследователи часто задают min_ret произвольной константой (0,5–1%) или опираются на устаревшие допущения о спреде и комиссии, а затем считают каждое историческое движение цены выше этого порога настоящим сигналом. Недостающий шаг — строгий воспроизводимый способ ответить на вопрос: каковы фактические издержки полного цикла сделки для этого символа у этого брокера с учётом типичного периода удержания позиции и часов входа стратегии?

Конвейер транзакционных издержек — поток данных

Рисунок 1. Двухэтапная пайплайн: от сбора брокерских данных до порога разметки

  • Этап 1 (MQL5): TransactionCostCollector.mq5 запускается на любом графике, считывает историю спреда через CopySpread(), считывает ставки свопа и свойства символа через SymbolInfoDouble() и записывает структурированный CSV в каталог терминала Files.
  • Этап 2 (Python): load_cost_model() читает CSV и создаёт TransactionCostModel с методами min_ret_for_symbol() для пайплайна разметки и summary() для проверки издержек перед выбором порога.

В этой статье показано, как получить такую оценку. Описан воспроизводимый двухэтапный пайплайн: (1) компактный скрипт MQL5, который считывает историю спреда брокера, ставки свопа и свойства символа и записывает структурированный CSV; (2) модель Python TransactionCostModel, которая загружает CSV, приводит все компоненты к единой мере — относительной доходности — и предоставляет min_ret_for_symbol() вместе с диагностическими процедурами. На выходе получаются конкретные результаты: CSV с процентилями спреда и средними значениями спреда по часам, объект модели с разбивкой издержек по сделкам, min_ret, откалиброванный по издержкам и готовый к передаче в get_events(), а также те же параметры для расчёта P&L по каждой сделке.


Автор: Patrick Murimi Njoroge