Статьи по программированию на языках MQL4 и MQL5

icon

Изучайте язык программирования торговых стратегий MQL5 по опубликованным здесь статьям, большая часть которых написана вами - членами сообщества. Все статьи разделены на категории для быстрого поиска ответа по тому или иному аспекту программирования: "Интеграция", "Тестер", "Торговые стратегии" и многое другое.

Следите за новыми публикациями и участвуйте в их обсуждении на форуме!

Новая статья
последние | лучшие
preview
MetaTrader 5 как производитель сообщений Kafka: Рассылка сигналов нескольким торговым терминалам

MetaTrader 5 как производитель сообщений Kafka: Рассылка сигналов нескольким торговым терминалам

В статье подробно описан производитель Kafka, реализованный непосредственно на MQL5 и использующий сетевой протокол Kafka через TCP-сокеты без дополнительных библиотек. Он реализует кодирование RecordBatch v2, varint и вычисление CRC32C, а также пакетную отправку, подтверждения (acks) и логику повторных попыток — и всё это без вспомогательного процесса или DLL. Используйте его для публикации торговых сигналов в формате JSON из одного терминала в Kafka, где информационные панели и другие сервисы подписываются на них независимо друг от друга.
preview
Поиск торгового преимущества (Часть 3): Использование HMM и GRU в торговом советнике

Поиск торгового преимущества (Часть 3): Использование HMM и GRU в торговом советнике

Мы исследуем, как скрытая марковская модель (HMM) оценивает скрытые рыночные режимы на основе наблюдаемых последовательностей цен и значений индикаторов. Это достигается путем оценки вероятности переходов между состояниями. Сеть на основе управляемого рекуррентного блока (GRU) моделирует временные зависимости и сохраняет важную информацию на протяжении нескольких наблюдений. В советнике вероятности рыночных режимов, рассчитанные с помощью HMM, можно использовать совместно с обучением сети GRU на последовательностях, чтобы точнее классифицировать изменения в накоплении, распределении и импульсе еще до появления стандартных ценовых подтверждений.
preview
Сертифицированный радиус устойчивости: Оцениваем уровень шума торговой модели ONNX

Сертифицированный радиус устойчивости: Оцениваем уровень шума торговой модели ONNX

Мы представляем фильтр допуска для сигналов ONNX на основе сертифицированного радиуса, реализованный непосредственно на MQL5. Система оценивает устойчивость каждого прогноза с помощью рандомизированного сглаживания и односторонней границы Клоппера — Пирсона, а затем использует полученный радиус для допуска к сделкам, масштабирования объема в лотах и мониторинга. Это дает практически применимую оценку запаса устойчивости, которая отражает допустимый уровень шума во входных данных, а не величину значения softmax.
preview
Нейросети в трейдинге: Habi — быстрое принятие решений без сложного планирования (Окончание)

Нейросети в трейдинге: Habi — быстрое принятие решений без сложного планирования (Окончание)

Завершаем адаптацию фреймворка Habi для алгоритмической торговли с использованием MQL5 и OpenCL. Рассматриваем построение моделей, подготовку эталонных действий на истории и офлайн-обучение. Показываем, как критик учится оценивать денежные последствия торговых решений и как его оценки используются для обновления политики в режиме имитации онлайн-торговли. На примере EURUSD H1 за январь–апрель 2026 года разбираем проверку готовых моделей и ограничения полученных результатов.
preview
Поиск торгового преимущества (Часть 2): Использование картирования дивергенций и трансформера временного слияния (TFT) в торговом роботе

Поиск торгового преимущества (Часть 2): Использование картирования дивергенций и трансформера временного слияния (TFT) в торговом роботе

В этой статье мы обосновываем целесообразность объединения картирования дивергенций с имитационной моделью на основе TFT. Основная идея картирования дивергенций состоит в том, чтобы не полагаться на запаздывающие подтверждения со стороны цены, а использовать метод как структурный датчик, помогающий выявлять скрытые изменения импульса по движению цены и аномалиям индикаторов. Чтобы определить, как эти аномалии интерпретируются с течением времени, мы используем упрощенную модель TFT. Эта сеть учитывает исторический контекст при оценке формирующихся трендов, поэтому ее объединение с картированием дивергенций должно позволить нам выявлять изменения в накоплении и распределении еще до ценовых пробоев.
preview
Конструирование признаков для машинного обучения (Часть 10): Tесты на структурные сдвиги в MQL5

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

Мы перенесли тесты на структурные сдвиги из главы 17 AFML в MQL5 в виде единого подключаемого файла CStructuralBreaks, предоставляющего советникам шесть признаков, индексируемых по барам: статистику CSW и ее критическое значение, тест Дики — Фуллера типа Чоу (DFC), SADF со скользящим окном с заданной глубиной истории (по умолчанию 252 бара), SM-Exp и SM-Power. В SADF используются скользящие окна с вычислительной сложностью O(L²), что позволяет выполнять расчеты в реальном времени. Сопутствующий индикатор StructuralBreaksViewer строит графики всех рядов данных с возможностью настройки видимости каждого ряда и опциональной нормализацией по z-оценке. SB_EMPTY отмечает недопустимые значения для обеспечения безопасной интеграции.
preview
Архитектура машинного обучения для MetaTrader 5 (Часть 19): Режимы бэггинга

Архитектура машинного обучения для MetaTrader 5 (Часть 19): Режимы бэггинга

Мы проверяем утверждение AFML о том, что последовательный бутстрэп снижает корреляцию между деревьями в ансамбле бэггинга на метках метода тройного барьера с перекрывающимися временными интервалами, раздельно исследуя два фактора: число наблюдений в выборке и правило отбора. Бэггинг с одной и той же базовой моделью — деревом решений — применяется в четырёх режимах формирования выборки строк и оценивается на данных EURUSD за 2022–2023 годы по уникальности сформированных выборок, корреляции между деревьями, AUC и калибровке вероятностных прогнозов. Снижение корреляции почти полностью достигается за счёт ограничения max_samples до уровня средней уникальности; последовательный бутстрэп даёт лишь небольшой дополнительный эффект. Завышение OOB-оценки наиболее выражено при последовательном бутстрэпе с полным числом извлечений.
preview
Создание индикатора профиля объёма на уровнях поддержки и сопротивления в видимой области графика в MQL5

Создание индикатора профиля объёма на уровнях поддержки и сопротивления в видимой области графика в MQL5

Мы создаем индикатор «Профиль объема на уровнях поддержки и сопротивления (SnR)», который адаптируется к текущей видимой области графика в MetaTrader 5. Вы изучите методы определения видимой области графика, динамическую идентификацию SnR, изменение количества ценовых интервалов в зависимости от масштаба, масштабирование объёма в диапазоне от минимума до максимума, а также быструю отрисовку на графике, управляемую событием OnChartEvent. Данный подход отражает относительную значимость уровней SnR в зависимости от объема, позволяя сосредоточить внимание на графике на зонах, где возможны значимые ценовые реакции.
preview
От прогноза цены к узкому торговому уравнению

От прогноза цены к узкому торговому уравнению

Исследуется прогноз следующего часового движения EURUSD H1 на длинной истории. Сравнивается исходное ценовое уравнение с простейшим ориентиром, после чего задача переносится на направление и величину следующего изменения с хронологическим разделением данных. Отдельно анализируется переход 23:00→00:00 и его поведение на 100 последовательных двухмесячных участках вне обучения. Читатель получает воспроизводимую схему подготовки данных и отбора сигналов по уверенности.
preview
Тепловая карта внутридневной доходности в MQL5: Визуализация с помощью CCanvas

Тепловая карта внутридневной доходности в MQL5: Визуализация с помощью CCanvas

В MetaTrader 5 отсутствует встроенный инструмент для визуализации внутридневных закономерностей доходности одновременно по нескольким временным измерениям. В данной статье реализован пользовательский индикатор, который собирает данные о доходности исторических баров в матрицу размером 5×24, индексированную по дням недели и часам суток. Затем индикатор отрисовывает результат в виде тепловой карты с цветовой интерполяцией в подокне индикатора с помощью CCanvas. Зеленые ячейки обозначают положительную среднюю доходность, красные — отрицательную, причем интенсивность цвета отражает величину доходности.
preview
Создание интерактивного индикатора профиля объема AnchorFlow (MTF) на языке MQL5

Создание интерактивного индикатора профиля объема AnchorFlow (MTF) на языке MQL5

Мы реализуем интерактивный мультитаймфреймовый (MTF) профиль объема с якорной привязкой на языке MQL5 для MetaTrader 5. Индикатор строит профиль текущего таймфрейма на основном графике и профиль старшего таймфрейма (HTF) в подокне индикатора; оба профиля согласованы по положению общей линии с якорной привязкой и видимому диапазону. Вы освоите настройка количества ценовых интервалов (бинов) профиля с помощью клавиатуры (двойное нажатие клавиши E или S), надежную проверку таймфреймов, обновления с учетом видимой области графика и восстановление графических объектов, чтобы организовать надежную, синхронизированную работу с объемами.
preview
Конструирование признаков для машинного обучения (Часть 9): Tесты на структурные сдвиги на Python

Конструирование признаков для машинного обучения (Часть 9): Tесты на структурные сдвиги на Python

Мы представляем реализацию тестов на структурные сдвиги из главы 17 AFML, готовую для использования в реальных системах. Модуль включает тест Чу — Стинчкомба — Уайта (односторонний и двусторонний варианты), тест Дики — Фуллера типа Чоу (DFC), SADF для шести моделей (линейная, квадратичная, sm poly 1, sm poly 2, sm exp, sm power), а также квантильную статистику ADF (QADF) с параметрами q и v и условное среднее ADF (CADF) с параметром q; результаты возвращаются в виде скалярных признаков с индексацией по барам. Мы устраняем проблемы масштабируемости фрагментов кода из книги и ошибку, связанную с порядком аргументов, а также показываем, как фиксированная глубина ретроспективы (L=504) ограничивает вычислительную сложность SADF величиной O(L²) на бар при выявлении рыночных режимов.
preview
Низкочастотные количественные стратегии в MetaTrader 5 (Часть 3): Система свинг-трейдинга на основе возврата к среднему значению с адаптацией к рыночным режимам

Низкочастотные количественные стратегии в MetaTrader 5 (Часть 3): Система свинг-трейдинга на основе возврата к среднему значению с адаптацией к рыночным режимам

В статье описывается и приводится код стратегии MR Swing на языке MQL5 — это подход к свинг-трейдингу на основе возврата к среднему значению, сочетающий 200-дневный канал гистерезиса с индикаторами Value Chart (график стоимости), DVO и SVAPO. Мы описываем правила входа в позиции и выхода из них для бычьего и медвежьего режимов и приводим результаты пятилетнего бэктестирования на шести высоколиквидных акциях, котирующихся на Nasdaq. Для обеспечения воспроизводимости результатов предоставляются полный код советника и настройки бэктестирования.
preview
Цифровая обработка сигналов для трейдеров: Создаем библиотеку фильтров Элерса на языке MQL5

Цифровая обработка сигналов для трейдеров: Создаем библиотеку фильтров Элерса на языке MQL5

Мы реализуем фильтры цифровой обработки сигналов (ЦОС) по методам Элерса в единой библиотеке MQL5, пригодной для многократного использования, и на ее основе создадим два индикатора. В Roofing Filter за двухполюсным фильтром верхних частот (ФВЧ) следует Super Smoother, что позволяет выделить диапазон периодов 10–48 баров, пригодный для торговли. Even Better Sinewave нормирует сигнал примерно до диапазона ±1: в циклических рыночных режимах он колеблется, а при трендах удерживается у предельного уровня, что позволяет анализировать циклы и выявлять смены рыночного режима на графиках и в советниках.
preview
Интерактивное управление зонами спроса и предложения на MQL5 (Часть II): Событийно-ориентированная архитектура и журналирование жизненного цикла с долговременным хранением

Интерактивное управление зонами спроса и предложения на MQL5 (Часть II): Событийно-ориентированная архитектура и журналирование жизненного цикла с долговременным хранением

В этой статье мы совершенствуем систему управления зонами спроса и предложения с отслеживаемым состоянием для MetaTrader 5, заменяя опрос событийно-ориентированной моделью на основе OnChartEvent(). Мы распределяем задачи синхронизации между отдельными обработчиками создания, изменения и удаления, а также отделяем рыночную логику в OnTick() от обработки действий пользователя в OnChartEvent(). Компонент журналирования в формате CSV с долговременным хранением и режимом только с добавлением записей фиксирует все события жизненного цикла, улучшая скорость отклика, согласованность состояний и возможность восстановления истории для последующего анализа.
preview
Персистентное хранилище "ключ — значение" в MQL5: Плоские файлы как легковесная база данных для хранения состояния советника

Персистентное хранилище "ключ — значение" в MQL5: Плоские файлы как легковесная база данных для хранения состояния советника

Благодаря облегченной архитектуре системы сохранения данных торговые советники (EA) могут сохранять счетчики, флаги и временные метки между перезапусками терминала. Используя только средства MQL5, CPersistentStore записывает удобочитаемый файл формата key=value в папку MQL5/Files и обслуживает запросы на чтение из кэша со сквозной записью на основе CHashMap через типизированный API. В статье анализируются операции со сложностью O(1) и O(n), риски неполной записи и отсутствие блокировки файлов, проводится сравнение с глобальными переменными терминала (GlobalVariables) и SQLite, а также приводится демонстрационный пример с детерминированной повторной загрузкой состояния.
preview
Встраивание торговой дисциплины в код (Часть 8): Подтверждение сетапов и контроль разрешения торговли

Встраивание торговой дисциплины в код (Часть 8): Подтверждение сетапов и контроль разрешения торговли

В этой статье представлен фреймворк разрешения торговли на MQL5, построенный на основе классов CDisciplineLayer, CDisciplineGuardian и CDisciplinePanel. Этот фреймворк управляет жизненными циклами сетапов, актуальностью сигналов, ограничениями торговых сессий, истечением срока действия сетапов и глобальными блокировками торговли через централизованный уровень разрешения торговли. Он также обеспечивает автоматическое принудительное соблюдение правил при выявлении нарушений и предоставляет информационную панель, работающую в режиме реального времени, что позволяет единообразно проверять и отслеживать торговые операции до и после их исполнения.
preview
Интерактивное управление зонами спроса и предложения на MQL5 (Часть III): Анализ зон и отслеживание взаимодействий цены с зоной

Интерактивное управление зонами спроса и предложения на MQL5 (Часть III): Анализ зон и отслеживание взаимодействий цены с зоной

Мы расширяем программную основу управления зонами спроса и предложения с сохранением состояния для MetaTrader 5, добавляя количественную модель допуска зон в систему и специализированный механизм взаимодействия цены с зонами. Зоны-кандидаты получают балльную оценку по структурной симметрии, объемной активности участников рынка и смещению, нормированному по ATR, а затем распределяются по категориям качества на основе объективных критериев. Допущенные в систему зоны проходят детерминированный жизненный цикл, в ходе которого отслеживается первое касание, проверяются отскоки или подтверждаются пробои; при этом собирается полная телеметрия для анализа и обеспечения воспроизводимости.
preview
Конструирование признаков для машинного обучения (Часть 8): Энтропийные признаки в MQL5

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

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

Создание индикатора EquiVolume на языке MQL5

Мы реализуем в MQL5 индикатор EquiVolume, который преобразует стандартные свечи в прямоугольники, ширина которых определяется объёмом торгов. Процесс включает выбор типа объёма, определение максимального объёма в диапазоне обратного просмотра, нормализацию всех значений относительно него и преобразование их в пропорциональную ширину прямоугольников. В результате на графике в MetaTrader 5 формируется структура, которая наглядно отображает интенсивность торговой активности наряду с движением цены.
preview
Каналы линейной регрессии на MQL5: Построение статистически обоснованных доверительных и прогнозных полос

Каналы линейной регрессии на MQL5: Построение статистически обоснованных доверительных и прогнозных полос

В статье реализованы каналы скользящей регрессии методом МНК на языке MQL5 и рассчитываются доверительные и прогнозные полосы с использованием критических значений t-распределения Стьюдента вместо фиксированного множителя стандартного отклонения. В ней объясняется расширение полос по краям окна, обусловленное рычагом наблюдения, полученный результат сравнивается с полосами Боллинджера и каналами Дончиана, а также рассматриваются предпосылки МНК применительно к ценовым данным. Описан способ отрисовки с использованием пяти линий, обеспечивающий надежное отображение в MetaTrader 5.
preview
Нейросети в трейдинге: Habi — быстрое принятие решений без сложного планирования (формирование и оценка действий)

Нейросети в трейдинге: Habi — быстрое принятие решений без сложного планирования (формирование и оценка действий)

Продолжаем торговую адаптацию фреймворка Habi на MQL5 с использованием OpenCL. Разбираем реализацию выходных слоёв Decoder и Critic, передачу общих параметров латентного распределения вместе с пакетом торговых действий и подготовку обучающих сигналов по эталону, историческим результатам и TD-цели. Показываем, как объединяются прямой градиент критика и сигнал, прошедший через декодер и латентную выборку. Это позволяет подготовить компоненты к последующей сборке и обучению торговой модели.
preview
Возможности Мастера MQL5, которые вам нужно знать (Часть 99): Использование KD-дерева и эхо-сети (ESN) в пользовательском классе управления капиталом

Возможности Мастера MQL5, которые вам нужно знать (Часть 99): Использование KD-дерева и эхо-сети (ESN) в пользовательском классе управления капиталом

В этой статье описывается пользовательский класс управления капиталом CMoneyKDTreeESN, совместимый с Мастером MQL5 и объединяющий алгоритм KD-дерева и эхо-сеть (ESN). Мы применяем KD-дерево к логарифмическим доходностям и ATR (среднему истинному диапазону), чтобы получить оценку риска, а ESN отслеживает недавнюю рыночную динамику и выдает множитель объема позиции с ограниченным диапазоном значений. Наш класс можно использовать в различных советниках, созданных с помощью Мастера MQL5, как показано здесь на примере сигналов Envelopes и RSI; общая цель — регулировать рисковую экспозицию в условиях высокой волатильности и хвостового риска.
preview
Архитектура машинного обучения в MetaTrader 5 (Часть 18): Исправленный последовательный бутстрэп — клонирование, стирание типа и инструментарий сравнения

Архитектура машинного обучения в MetaTrader 5 (Часть 18): Исправленный последовательный бутстрэп — клонирование, стирание типа и инструментарий сравнения

В статье выявляются два дефекта, которые сводят на нет эффект последовательного бутстрэпа при перекрестной проверке: стирание типа SequentiallyBootstrappedBaggingClassifier и несоответствие размерностей на уровне фолда из-за клонирования полного набора информационных интервалов наблюдений. Предлагаемое исправление сохраняет принадлежность классификатора к исходному классу, добавляет функцию _find_seq_bagging() для повторной передачи в CalibratorCV.fit данных t1, ограниченных текущим фолдом, и сбрасывает состояние при каждом разбиении. Новый модуль bootstrap_comparison выводит OOF-метрики и на наблюдениях вне бутстрэп-выборки (OOB), а также данные об использовании памяти, позволяя проверить правильность применения последовательного отбора и количественно оценить его влияние.
preview
Отложенная загрузка хендлов индикаторов в MQL5: Менеджер ресурсов для мультитаймфреймовых советников

Отложенная загрузка хендлов индикаторов в MQL5: Менеджер ресурсов для мультитаймфреймовых советников

Мультитаймфреймовые торговые советники, которые инициализируют все хэндлы индикаторов в OnInit(), несут фиксированные затраты на запуск, даже если большинство хэндлов никогда не используется. CIndicatorCache использует отложенную загрузку с поиском по составному ключу, методы получения/освобождения AcquireHandle() и ReleaseHandle() с подсчетом ссылок и детерминированный метод FlushAll() для полной очистки кэша. Хэндлы создаются при первом запросе и повторно используются на последующих тиках, что сокращает задержку при запуске, позволяет избежать повторного выделения памяти в куче и предотвращает утечки ресурсов терминала благодаря централизованному владению ресурсами.
preview
Проектирование конечного автомата торговой стратегии на MQL5: Замена вложенных конструкций if-else явными состояниями

Проектирование конечного автомата торговой стратегии на MQL5: Замена вложенных конструкций if-else явными состояниями

Вложенные условные конструкции if-else внутри функции OnTick() создают неявные состояния, которые сложно изолировать, отлаживать и расширять без возникновения регрессионных ошибок. Реализация конечного автомата (FSM) на MQL5 использует интерфейс IState, посредник CStrategyContext и четыре конкретных состояния, чтобы отделить логику обнаружения от логики поведения. Структура из трёх подключаемых файлов устраняет циклические зависимости подключаемых файлов и чётко разделяет объявления, определения и создание экземпляров, делая внесение изменений безопаснее, а отладку — быстрее.
preview
Фильтрация Вьеториса — Рипса в MQL5: Построение симплексов и граничной матрицы

Фильтрация Вьеториса — Рипса в MQL5: Построение симплексов и граничной матрицы

Мы преобразуем облако точек, построенное с помощью вложения ценового ряда, в фильтрацию Вьеториса — Рипса и соответствующую ей граничную матрицу. В статье вершины, ребра и треугольники перечисляются с указанием значений фильтрации и сортируются в порядке добавления в фильтрацию; также создаются таблицы поиска вершин и ребер за время O(1). Вы получаете классы CTDARips и CTDABoundary на MQL5, а также разреженную граничную матрицу над Z/2, пригодную для последующей редукции при вычислении персистентности.
preview
Индикатор скользящего коэффициента Шарпа с доверительными границами в MQL5

Индикатор скользящего коэффициента Шарпа с доверительными границами в MQL5

В данной статье представлен пользовательский индикатор для MetaTrader 5, который вычисляет скользящий коэффициент Шарпа в годовом выражении и отображает полосы статистической значимости с настраиваемой z-оценкой на основе асимптотической стандартной ошибки по формуле Ло. В индикаторе используется кольцевой буфер доходностей с инкрементальным расчетом дисперсии, что обеспечивает обновление за время O(1). Мы объясняем, как неопределенность масштабируется пропорционально n^(-1/2), почему интервалы расширяются при высоких значениях коэффициента Шарпа и как настроить приведение к годовому выражению для каждого инструмента, чтобы корректно использовать индикатор.
preview
Метаразметка классических стратегий (Часть 2): Фильтрация сделок по ADX и определение размера позиций

Метаразметка классических стратегий (Часть 2): Фильтрация сделок по ADX и определение размера позиций

Пересечение линий DI часто дает сигналы на боковом рынке, где +DI и -DI колеблются без устойчивого преобладания одной из линий. Мы создаем двухслойную гибридную модель: алгоритм выбора гиперпараметров TPE в Optuna оптимизирует фильтр рыночного режима по порогу ADXR, периоду расчета DI и минимальному расстоянию между линиями DI, чтобы максимизировать точность (precision) сигналов на отложенном валидационном интервале; затем случайный лес использует одиннадцать признаков, рассчитанных на основе ADX, для допуска входов в рынок или определения размера позиций с помощью afml.bet_sizing. Полученная модель отфильтровывает всплески сигналов на боковом рынке и калибрует размер позиции при торговле EURUSD на H1.
preview
Разработка динамического мультивалютного советника (Часть 9): Фильтрация шума исполнения с учетом микроструктуры рынка

Разработка динамического мультивалютного советника (Часть 9): Фильтрация шума исполнения с учетом микроструктуры рынка

В статье представлен фильтр исполнения для нескольких торговых инструментов, который оценивает качество рынка в реальном времени, прежде чем разрешить сделку. Он измеряет динамику спреда, скорость тиков, разрывы в котировках и микроволатильность, оценивает проскальзывание, а затем классифицирует состояние рынка, чтобы блокировать торговлю при неблагоприятных условиях. После затухания шума модель продолжения движения после свипа ликвидности оценивает изменения структуры рынка, чтобы входы в рынок происходили только при стабильных условиях исполнения.
preview
Конструирование признаков для машинного обучения (Часть 6): Признаки микроструктуры рынка в MQL5

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

В статье представлен CMicrostructureFeatures — класс на языке MQL5 для расчета признаков микроструктуры рынка на уровне баров: спреда Ролла и ценового воздействия по Роллу, спреда и сигмы Корвина — Шульца, лямбды Кайла, показателя неликвидности Амихуда (ILLIQ) и лямбды Хасбрука. Расчеты основываются исключительно на данных OHLCV с использованием скользящих окон. В статье разъясняется, как использование тикового объема MetaTrader 5 влияет на оценки лямбды; при этом оценки спреда остаются независимыми от объема. Скрипт проверяет размеры выходных данных и соблюдение базовых ограничений на их значения.
preview
Адаптивное сглаживание цен в MQL5: фильтр Калмана с оценкой шума без внешних библиотек

Адаптивное сглаживание цен в MQL5: фильтр Калмана с оценкой шума без внешних библиотек

Скользящие средние с фиксированным весовым коэффициентом вносят запаздывание, которое не учитывает смену рыночных режимов. В данной работе представлен индикатор на основе адаптивного скалярного фильтра Калмана, реализованный штатными средствами MQL5. Он оценивает дисперсию шума процесса Q по дисперсии приращений цены в скользящем окне, а дисперсию шума измерений R — по дисперсии цены в скользящем окне, применяет ограничение снизу для обеспечения численной устойчивости и пересчитывает коэффициент усиления Калмана на каждом баре. Линия индикатора, отображаемая поверх ценового графика, сравнивается с 20-периодной EMA по показателям MAE, RMSE, запаздывания и гладкости для количественной оценки качества отслеживания цены и подавления шума.
preview
Форма ценового ряда: Введение в топологический анализ данных и вложение Такенса в MQL5

Форма ценового ряда: Введение в топологический анализ данных и вложение Такенса в MQL5

В статье представлены практические основы анализа формы ценовых рядов в MQL5. Реализовано вложение Такенса с временной задержкой для построения облака точек в фазовом пространстве, а также вычисление полной матрицы попарных расстояний с возможностью выбора нормы. Классы CTDAPointCloud и CTDADistance сопровождаются демонстрационным скриптом, который выполняет вложение данных графика и выводит результаты, подготавливая входные данные для дальнейшей обработки топологическими инструментами.
preview
Поиск торгового преимущества (Часть 1): Использование дискретного преобразования Фурье (ДПФ) и импульсной нейронной сети (SNN) в торговом роботе

Поиск торгового преимущества (Часть 1): Использование дискретного преобразования Фурье (ДПФ) и импульсной нейронной сети (SNN) в торговом роботе

В этой статье мы приводим аргументы в пользу сочетания дискретного преобразования Фурье (ДПФ) и импульсной нейронной сети (SNN) в торговом роботе. Преобразование Фурье позволяет представить данные в виде колебаний, а не в виде исходных значений. Для интерпретации этих циклов мы используем импульсную нейронную сеть (SNN), которая, в отличие от обычных сетей, накапливает потенциал за счёт изменяющихся во времени электрических зарядов и генерирует импульс только при достижении заданного порога. Сочетание этих двух модулей позволяет нам точнее определять моменты отдельных рыночных движений, что в теории должно давать сигналы входа со строгим математическим подтверждением.
preview
Интерактивное управление зонами спроса и предложения на MQL5 (Часть I): От ручной работы к автоматизации жизненного цикла

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

Заменяет статические графические объекты автоматизированными зонами с сохраняемым состоянием, управляемыми классом-оболочкой CZone. Система синхронизирует пользовательские прямоугольники, задает размеры зон по ATR (средний истинный диапазон), подтверждает пробои по последовательным закрытиям свечей, применяет правила перехода в призрачное состояние и деактивации, объединяет близлежащие структуры с порогом объединения 1.5×ATR и продлевает границы зон вперед по времени. Трейдеры получают устойчивые уровни, которые обновляются автоматически и позволяют сократить объем рутинной работы с графиками.
preview
Пользовательские инструменты отладки и профилирования для разработки на MQL5 (Часть II): Профилирование советников и тестирование торговой логики

Пользовательские инструменты отладки и профилирования для разработки на MQL5 (Часть II): Профилирование советников и тестирование торговой логики

Мы создаём компактный профилировщик, который записывает в CSV количество вызовов, минимальное, максимальное и среднее время выполнения, а также количество медленных вызовов, и простую среду запуска тестов, которая формирует детерминированные отчёты об успешном или неуспешном прохождении тестов. В статье объясняется, где размещать замеры в советнике, как выполнять выборку тиков и как сохранять возможность тестирования чистых вычислений. Выполнение сначала скрипта, а затем профилирующего советника позволяет получить воспроизводимые данные для регрессионного анализа.
preview
Фундаментальные модели для торговли (Часть III): Запуск генеративной ИИ-модели прогнозирования в MetaTrader 5

Фундаментальные модели для торговли (Часть III): Запуск генеративной ИИ-модели прогнозирования в MetaTrader 5

Мы демонстрируем отображение прогнозов Kronos на графике в реальном времени средствами MQL5 и пайплайн оценки, спроектированный для исключения заглядывания в будущее. Прогнозы из детерминированных выгрузок оцениваются для каждого горизонта в сравнении с базовым прогнозом случайного блуждания (15 113 прогнозных значений), затем используются в простом торговом правиле в Тестере стратегий на EURUSD H1. Результаты не выявляют торгового преимущества и показывают, как высокий порог может дать убедительный на вид, но малоинформативный результат тестирования на исторических данных с очень небольшим числом сделок.
preview
Конструирование признаков для машинного обучения (Часть 5): Микроструктурные признаки на Python

Конструирование признаков для машинного обучения (Часть 5): Микроструктурные признаки на Python

В статье представлен набор микроструктурных признаков из главы 19, реализованный в модуле afml.features.microstructure, и описана двухуровневая архитектура для работы как только с данными OHLCV, так и с добавлением тиковых данных. Мы рассматриваем оценки спреда и волатильности по Роллу и Корвину — Шульцу, лямбду Кайла, лямбду Амихуда и лямбду Хасбрука, VPIN, а также признаки дисбаланса на уровне баров — всё это реализовано в вычислительных ядрах, ускоренных с помощью Numba. Один проход с использованием np.searchsorted определяет границы баров, что позволяет выполнять параллельные вычисления с помощью prange и получать матрицу признаков с индексом по барам, готовую для дальнейшего использования в моделях машинного обучения.
preview
Конструирование признаков для машинного обучения (Часть 7): Энтропийные признаки в Python

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

В статье представлены готовые к промышленной эксплуатации оцениватели энтропии (Шеннона, подстановочный, Лемпеля — Зива, Контоянниса), работающие с последовательностями, закодированными по тиковому правилу. В статье устранены три проблемы корректности и производительности исходного кода, результаты сверены с данными из главы, а возможности кодирования расширены за счёт квантильного и сигма-кодирования. Пользователи получают воспроизводимые результаты и заметно более высокую скорость вычислений при работе с большими наборами баров.
preview
Фундаментальные модели для торговли (Часть II): Декодирование, авторегрессия и точный KV-кэш

Фундаментальные модели для торговли (Часть II): Декодирование, авторегрессия и точный KV-кэш

Мы завершаем нативную реализацию Kronos на MQL5: создаем декодировщик, этапы decode_s1 и decode_s2 предиктора с подводными камнями перекрестного внимания и авторегрессионный цикл, формирующий прогноз на несколько баров. Затем мы проводим профилирование и ускоряем реализацию примерно в 4,5 раза с помощью точного KV-кэша и предварительно транспонированных весов, сверяя результаты каждого этапа с результатами PyTorch.