Реализация модели гауссовской смеси в MQL5
В статье рассматриваются теоретические основы и практическая реализация модели смеси нормальных распределений (Gaussian Mixture Model) на языке MQL5. Представлен класс CGMM и примеры его использования, а также методология выбора оптимального количества компонентов модели с помощью информационных критериев AIC/BIC. Значительное внимание уделяется принципу работы EM-алгоритма — признанного стандарта при обучении вероятностных моделей со скрытыми(латентными) переменными. Реализована поддержка режима обучения MAP и инициализация параметров с помощью K-Means++. Готовый инструмент для кластеризации, оценки многомерной плотности и генерации данных теперь доступен и в MetaTrader 5.
Создание пользовательских индикаторов в MQL5 (Часть 6): Усовершенствование расчётов RSI — сглаживание, динамические цвета и поддержка нескольких таймфреймов
В этой статье мы создадим универсальный индикатор RSI в MQL5 с поддержкой нескольких вариантов расчёта, источников данных и методов сглаживания для более качественного анализа. Мы добавим изменение оттенка для цветовой индикации, динамические границы зон перекупленности/перепроданности и уведомления о смене тренда. Индикатор включает мультитаймфреймовую поддержку с интерполяцией и предоставляет настраиваемый инструмент RSI для разных стратегий.
Автоматизация торговых стратегий на MQL5 (Часть 44): Обнаружение смены характера рынка (CHoCH) по пробоям свинговых экстремумов
В этой статье мы разрабатываем на MQL5 систему обнаружения смены характера рынка (Change of Character, CHoCH), которая определяет свинговые максимумы и минимумы на заданном пользователем количестве баров, присваивает максимумам метки HH/LH, а минимумам — LL/HL для определения направления тренда и торгует пробои этих свинговых уровней при изменении структуры рынка, что указывает на возможный разворот.
Создание пользовательских индикаторов в MQL5 (Часть 1): Построение трендового индикатора на основе пивотов с градиентной заливкой на Canvas
В этой статье мы создадим трендовый индикатор на основе пивотов в MQL5. Он рассчитывает быстрые и медленные пивотные линии за заданные пользователем периоды, определяет направление тренда по положению цены относительно этих линий и отмечает начало тренда стрелками, при необходимости продлевая линии за пределы текущего бара. Индикатор поддерживает динамическое отображение отдельных восходящих и нисходящих линий настраиваемых цветов, пунктирных быстрых линий, которые меняют цвет при смене тренда, а также дополнительную градиентную заливку между линиями с использованием объекта класса CCanvas для более наглядного выделения трендовой области.
Низкочастотные количественные стратегии в MetaTrader 5: (Часть 1) Настройка OLAP-ориентированного хранилища данных
В статье описывается практический конвейер данных для количественного анализа на базе хранилища Parquet, секционирования по схеме Hive и DuckDB. Подробно рассматривается перенос выбранных таблиц SQLite в Parquet, структурирование рыночных данных по источнику, символу, таймфрейму и дате, а также запросы к ним с помощью оконных функций SQL. Пример Golden Cross иллюстрирует оценку будущей доходности по нескольким символам. Прилагаемые скрипты Python отвечают за загрузку данных, преобразование и выполнение.
Моделирование рынка: Position View (II)
В этой статье я покажу как максимально просто и практично использовать индикатор для отслеживания открытых позиций на торговом сервере. Я делаю это именно так, шаг за шагом, чтобы показать, что вам не обязательно переносить всё это в советник. Многие из вас, вероятно, уже привыкли к этому по той или иной причине. На самом деле это ерунда, так как по мере развития данной реализации станет ясно, что вы сможете создавать или реализовать различные типы индикаторов для этой цели.
Торговые инструменты MQL5 (Часть 22): Построение гистограммы и функции вероятностной массы (PMF) биномиального распределения
В этой статье разрабатывается интерактивный график на MQL5 для биномиального распределения, объединяющий гистограмму смоделированных исходов с теоретической функцией массы вероятности. Он реализует расчеты среднего значения, стандартного отклонения, коэффициента асимметрии, коэффициента эксцесса, процентилей и доверительных интервалов, а также настраиваемые темы и метки, поддерживает перетаскивание, изменение размера и изменение параметров в реальном времени. Используйте его для оценки ожидаемых выигрышных сделок, вероятных просадок и доверительных диапазонов при проверке торговых стратегий.
Моделирование рынка: В единстве — сила (III)
В этой статье я представлю нашу систему для моделирования рыночных операций. Хотя всё уже практически завершено, ещё остаётся реализовать некоторые вещи и внести несколько изменений. Однако, признаюсь, после всего, что мы уже разработали, я устал от того, что всё ещё застрял в реализации этой системы.
Отслеживание динамики счета: Визуализация баланса, средств счета и плавающей прибыли/убытка в MQL5
Создайте пользовательский индикатор для MT5, который обрабатывает всю историю сделок и отрисовывает начальный баланс, текущий баланс, средства счета и плавающую прибыль/убыток в виде непрерывных кривых. Он обновляется на каждом баре, агрегирует позиции по всем символам и исключает внешние зависимости за счет локального кэширования. Используйте его для анализа расхождений между средствами счета и балансом, сопоставления реализованных и нереализованных результатов, анализа того, когда именно вы принимали на себя риск.
Архитектура системы машинного обучения в MetaTrader 5 (Часть 4): Скрытый изъян пайплайна финансового ML — одновременность меток
Узнайте, как исправить критический изъян в финансовом машинном обучении, который приводит к переобученным моделям и плохой работе в реальной торговле, — одновременность меток. При использовании метода тройного барьера (triple-barrier) обучающие метки перекрываются во времени, нарушая базовое предположение IID большинства ML-алгоритмов (алгоритмов машинного обучения). В статье показано практическое решение через взвешивание наблюдений: как измерять временное перекрытие торговых сигналов, рассчитывать взвешивание наблюдений с учётом уникальной информации и применять эти веса в scikit-learn для построения более устойчивых классификаторов. Освоение этих техник поможет сделать торговые модели более устойчивыми, надёжными и прибыльными.
Моделирование рынка: Position View (VII)
В данной статье мы начнем вносить некоторые улучшения в индикатор позиции, чтобы иметь возможность взаимодействовать с ним и изменять ценовые линии или закрывать позицию напрямую через взаимодействие с индикатором позиции. Прежде чем мы перейдем к реализации, стоит кое-что уточнить, особенно для тех, кто об этом не знает. Индикатор никак не может использоваться для изменения чего-либо на торговом сервере. Это связано с тем, что в MetaTrader 5 действует система безопасности, которая позволяет воздействовать на ордера и позиции только советникам. Никакое другое приложение, кроме советника, не сможет манипулировать ордерами или позициями.
Индикатор средней цены входа маркет-мейкера
В статье исследуется, можно ли по обычным данным MetaTrader 5 оценить среднюю стоимость позиции пассивной стороны рынка, если реальные сделки и позиции маркет-мейкеров недоступны. Пошагово строится модель: от оценки направленного потока и виртуальной позиции до Inventory Basis, Reservation Price по Avellaneda–Stoikov и адаптивных Bid/Ask с учётом токсичности потока.
Анализ CSV-данных (Часть 2): Построение конвейера экспорта и парсинга CSV промышленного уровня для количественного анализа стратегий
Файловая система MQL5 работает в строгой песочнице. Понимание флагов доступа и правил разрешения путей лежит в основе любого надёжного пайплайна экспорта. В статье создаётся класс CCSVExporter, который отвечает за создание файлов, безопасное дописывание и механизмы восстановления при ошибках. Также рассматриваются разбор CSV-файлов, токенизация полей, конфликты параллельного доступа и стратегии буферизации записи при интенсивных сериях оптимизации.
Автоматизация торговых стратегий на MQL5 (Часть 39): Стратегия статистического возврата к среднему с доверительными интервалами и информационной панелью
В этой статье мы разработаем советник на MQL5 для торговли по стратегии статистического возврата к среднему. Советник рассчитывает среднее, дисперсию, асимметрию, эксцесс и статистику Харке-Бера за заданный период, выявляет ненормальные распределения и формирует сигналы на покупку и продажу по доверительным интервалам с адаптивными порогами.
Создание пользовательских индикаторов в MQL5 (Часть 10): Дополнение футпринт-графика информационным блоком настроений по объёму по каждому бару
В статье показано, как улучшить MQL5-индикатор футпринта: над каждой свечой добавляется компактный информационный блок, отражающий настроения по объёму и в котором отображаются чистая дельта, общий объём и процентное соотношение покупок и продаж. Мы реализуем сглаженную отрисовку с суперсэмплингом, скруглённые углы с помощью растеризации дуг и четырёхугольных примитивов, а также попиксельное альфа-смешивание. Вспомогательные инструменты включают преобразование цветов в ARGB, сканлайновую растеризацию и понижающую дискретизацию бокс-фильтром. Блок позволяет быстро оценивать настроения по объёму и остаётся разборчивым при разных уровнях масштаба.
Знакомство с языком MQL5 (Часть 42): Руководство для начинающих по работе с файлами в MQL5 (IV)
В этой статье показано, как создать индикатор на языке MQL5, который считывает торговую историю из CSV, извлекает значения из столбца Profit($) и общее число сделок, а затем рассчитывает накопительную кривую баланса. Мы строим кривую в отдельном окне индикатора, автоматически масштабируем ось Y и рисуем горизонтальную и вертикальную оси для выравнивания. Индикатор обновляется по таймеру и перерисовывается только при появлении новых сделок. Необязательные метки показывают прибыль или убыток по каждой сделке, помогая прямо на графике оценивать результаты торговли и просадки.
Алгоритм оптимизации на основе кровеносной системы — Circulatory System Based Optimization (CSBO)
CSBO — алгоритм, вдохновлённый кровеносной системой, рассматривается как разностно-ориентированный метод: венозное движение, систематический круг с кроссовером и лёгочная мутация. Приведена реализация в виде класса C_AO_CSBO для MQL5 с переводом в максимизацию, нормировкой шагов и двухфазными эпохами. Представлены итоги, исходники и практические настройки.
Репликация и моделирование рынка: Большой финал
Я знаю, что многие, возможно, думали, что я опубликую ещё несколько статей, чтобы объяснить другие аспекты этой системы. Недостающие элементы легко реализовать. Тем не менее, её разработка позволит вам проверить, насколько вы действительно готовы.
Торговые инструменты MQL5 (Часть 26): Интеграция частотного биннинга, энтропии и критерия хи-квадрат в визуальный анализатор
В этой статье мы разработаем инструмент частотного анализа на языке MQL5, который группирует данные о ценах в гистограммы, вычисляет энтропию для оценки информационного содержания и применяет тесты хи-квадрат для проверки соответствия распределения, а также интерактивные логи и статистические панели для более глубокого понимания рыночной структуры. Мы интегрируем режимы обновления по барам и по тикам, рендеринг с суперсэмплированием для плавной визуализации и перетаскиваемые/изменяемые по размеру объекты Canvas с автоматически прокручивающимися логами для повышения удобства использования при выполнении торгового анализа.
Разработка инструментария для анализа Price Action (Часть 65): Создание системы для мониторинга и анализа построенных вручную уровней Фибоначчи
Инструмент коррекции Фибоначчи – важный элемент анализа Price Action, указывающий ключевые уровни возможной рыночной реакции. Однако его эффективность часто ограничена необходимостью постоянного ручного наблюдения, из-за чего часть сетапов может быть пропущена. В этой части серии представлен инструмент, который с помощью MQL5 синхронизирует и активно отслеживает вручную построенные уровни Фибоначчи, сочетая дискреционный подход с автоматизированным контролем.
ARD-регрессия на MQL5: автоматический отбор признаков и случайные признаки Фурье
Статья посвящена ARD-регрессии как байесовскому методу отбора признаков и применению случайных признаков Фурье (Random Fourier Features) для учета нелинейностей в рамках линейной модели. К статье прилагаются классы ARDRegression и CRBFSampler. Проводится сравнительный анализ точности и производительности реализации на MQL5 с эталонным классом из библиотеки scikit-learn.
MetaTrader и Google Таблицы через PythonAnywhere: Руководство по безопасному потоку данных
В этой статье показан безопасный способ экспорта данных MetaTrader в Google Таблицы. Google Таблицы — очень ценное решение, поскольку оно работает в облаке, а сохраненные там данные доступны в любое время и из любого места. Поэтому трейдеры могут получать доступ к торговым и связанным с торговлей данным, экспортированным в Google Таблицы, и выполнять дальнейший анализ для будущей торговли в любое время, где бы они ни находились.
Торговые инструменты MQL5 (Часть 23): Трёхмерные графики с управляемой камерой и поддержкой DirectX для анализа распределений
В этой статье мы усовершенствовали инструмент построения графиков биномиального распределения в MQL5, интегрировав DirectX для 3D-визуализации, что позволило переключаться между 2D и 3D режимами с управляемым камерой поворотом, масштабированием и автоматическим подбором положения камеры для иммерсивного анализа. Мы визуализируем столбцы гистограммы в 3D, опорные плоскости и оси наряду с кривой функции вероятностной массы, сохраняя при этом 2D-элементы, такие как панели статистики, легенда и настраиваемые темы, градиенты и метки.
Двумерные копулы в MQL5: (Часть 3) Реализация и настройка смешанных моделей копул
В статье наш набор инструментов для работы с копулами расширяется смешанными копулами, реализованными непосредственно в MQL5. Мы строим смеси Клейтона–Франка–Гумбеля и Клейтона–Стьюдента-t–Гумбеля, оцениваем их с помощью EM и вводим управление разреженностью через SCAD с кросс-валидацией. Предоставленные скрипты настраивают гиперпараметры, сравнивают смеси с использованием информационных критериев и сохраняют обученные модели. Практики могут применять эти компоненты для учета асимметричной хвостовой зависимости и встраивать выбранную модель в индикаторы или советники.
Алгоритм оптимизации шимпанзе: от ChOA к BChimp
Алгоритм оптимизации шимпанзе (ChOA) подражает групповой охоте приматов с разделением ролей, а его бинарная ветвь BChimp переносит эту механику в задачи отбора признаков. Реализуем непрерывное ядро в C_AO, по пути находим и исправляем унаследованный дефект коэффициента — незаметный за бинаризацией, но разрушающий поиск в непрерывной области. Аннотация даёт готовую реализацию и практические выводы о качестве и устойчивости поиска.
Машинное обучение и Data Science (Часть 47): Прогнозирование рынка с помощью модели DeepAR на Python
В этой статье мы попробуем спрогнозировать движения рынка с помощью достаточно хорошей модели прогнозирования временных рядов под названием DeepAR. Модель представляет собой сочетание глубоких нейронных сетей и авторегрессионных свойств, характерных для таких моделей, как ARIMA и VAR (векторная авторегрессионная модель).
Торговые инструменты MQL5 (Часть 28): Полигональная заливка кривой-бабочки в MQL5
Мы расширяем возможности холста (canvas) для отображения кривой-бабочки в MetaTrader 5, добавляя многослойную заливку крыльев, жилки крыльев, точки текстуры чешуек и изображение всего тела (брюшко, торакс, голова, глаза, усики). В этой статье реализованы полигональные заливки с вертикальными и радиальными градиентами, а также залитые круги и эллипсы, все с использованием сглаживания методом суперсэмплинга. Вы также получите многоразовые вспомогательные функции MQL5 и порядок рендеринга, который преобразует простую кривую в настраиваемую, детализированную иллюстрацию на графике.
Анализ CSV-данных (Часть 1): Механизм экспорта CSV при многоядерной оптимизации в MQL5
При многоядерной оптимизации в MetaTrader 5 результаты могут незаметно теряться, когда параллельные агенты одновременно обращаются к одному CSV-файлу. Повторно используемый механизм экспорта MQL5 применяет итерационную спин-блокировку, чтобы надёжно открыть файл и добавлять строки без потерь. Он сохраняет пользовательские метрики, включая коэффициент Сортино, среднюю продолжительность сделки и показатели качества сигналов — запаздывание и частота ложных разворотов (whipsaws) — в сводном CSV-файле для последующей аналитической обработки.
Алгоритм оптимизации койотов — Coyote Optimization Algorithm (COA)
Представляем MQL5-реализацию Coyote Optimization Algorithm: стаи с локальными альфами, медианная тенденция и встроенный кроссовер обеспечивают параллельное исследование областей пространства и контроль преждевременной сходимости. Алгоритм встроен в C_AO и проверен на стандартном стенде и композитном античит-тесте. В статье — код, псевдокод и разбор операторов, позволяющие применить COA для оптимизации параметров торговой системы.
Торговые инструменты MQL5 (Часть 25): Расширяем поддержку нескольких распределений с интерактивным переключением
В этой статье мы расширим инструмент построения графиков на MQL5 для поддержки семнадцати статистических распределений с циклическим перебором распределений с помощью значка переключения в заголовке. Мы добавим загрузку данных для каждого типа, дискретное и непрерывное вычисление гистограмм и теоретические функции распределения вероятностей/плотности для каждой модели, а также динамические заголовки, метки осей и панели параметров, которые автоматически адаптируются. Результат позволяет накладывать кривые разных распределений на данные одной и той же выборки и сравнивать качество соответствия моделей из разных семейств распределений.
Торговые инструменты MQL5 (Часть 27): Отрисовка параметрической кривой-бабочки на холсте Canvas
В этой статье мы исследуем кривую-бабочку — математическую кривую, задаваемую параметрическим уравнением, и визуализируем ее на canvas в MQL5. Мы создаём интерактивное окно визуализации с перетаскиваемым окном canvas с изменяемым размером, рендерингом кривых с использованием технологии суперсэмплирования, градиентными фонами и легендой, сегментированной по цветам. В итоге у нас есть полнофункциональный визуальный инструмент, который отрисовывает кривую-бабочку непосредственно на графике MetaTrader 5.
Преодоление проблем доступности в торговых инструментах на MQL5 (Часть IV): Удаленная голосовая торговля
Узнайте о практическом способе выполнения сделок в MetaTrader 5 из голосовых сообщений Telegram с помощью промежуточного ПО на Python и советника MQL5, выступающего в качестве HTTP-клиента. В статье рассматриваются архитектура, опрос WebRequest, очереди в памяти, парсинг JSON с удалением нулевых символов-терминаторов и ограниченная грамматика команд с размером лота по умолчанию 0,001. Вы настроите среду и проверите задержку передачи данных, подходящую для мобильных интернет-соединений.
Моделирование рынка: Position View (X)
Нам необходим способ обработки создаваемых графических объектов. Предложение, представленное в предыдущей статье, отлично подходит для некоторых сценариев. В данном случае нам потребуется нечто более сложное, учитывая специфику рассматриваемой проблемы. Поэтому мы не будем пытаться заменить существующие в MetaTrader 5 механизмы управления ZOrder и, конечно же, проверять, какой объект находится на переднем плане или скрыт другим объектом. Мы сделаем нечто совершенно другое. Здесь я покажу, какие изменения необходимо внести в код, чтобы задействовать часть того, что MetaTrader 5 уже делает за нас.
Причинный граф как признак машинного обучения
В статье условный граф причинности Грейнджера по 10 валютным парам и трём таймфреймам преобразуется в числовые признаки для CatBoost и MQL5. Абляция сравнивает модели price-only, graph-only и price+graph: графовые признаки почти не работают самостоятельно, но в сочетании с ценой улучшают контекст, режимную фильтрацию и риск. На форварде совместная модель показала более высокий Profit Factor и меньшую просадку.
Индикатор Sigma Score для MetaTrader 5: Простой детектор статистических аномалий
Создайте практический индикатор Sigma Score для MetaTrader 5 с нуля и изучите, что он на самом деле измеряет – z-оценку логарифмических доходностей: на сколько стандартных отклонений последнее движение отличается от недавнего среднего. В статье рассматривается каждый блок кода в OnInit(), OnCalculate() и OnDeinit(), а также интерпретация пороговых значений, например ±2. Индикатор Sigma Score применяется как простой индикатор рыночного стресса для торговли на основе возврата к среднему и моментума.
Разработка инструментария для анализа Price Action (Часть 53): Тепловая карта плотности паттернов для выявления зон поддержки и сопротивления
В этой статье представлен советник Pattern Density Heatmap – инструмент картирования ценовой динамики, который преобразует повторяющиеся обнаружения свечных паттернов в статистически значимые зоны поддержки и сопротивления. Вместо того чтобы рассматривать каждый сигнал по отдельности, советник агрегирует обнаружения в фиксированные ценовые зоны (бины), оценивает их плотность с опциональным взвешиванием по давности и подтверждает уровни по данным старшего таймфрейма. Полученная тепловая карта показывает уровни, на которые рынок исторически реагировал, и помогает заранее выбирать момент входа, управлять риском и повышать уверенность в стратегии независимо от стиля торговли.
Моделирование рынка: Position View (IX)
В данной статье, которая станет поворотным моментом, мы начнем более глубоко изучать взаимодействие между разрабатываемыми нами приложениями для обеспечения полной поддержки системы повторов и симуляции. Здесь мы проанализируем проблему, которая, с одной стороны, довольно неприятна, но с другой — очень интересна для объяснения и решения. Проблема заключается в следующем: как вернуть линии тейк-профита и стоп-лосса после того, как они были удалены, и сделать это без использования терминала путем выполнения операции прямо на графике. На первый взгляд, это кажется простым. Однако, существуют несколько препятствий, которые необходимо преодолеть.
Моделирование рынка: Position View (XI)
В этой статье я покажу вам, уважаемый читатель, как можновыбирать объекты, которые мы создаём на графике модифицировать индикатор позиции, чтобы он мог выполнять гораздо больше функций, чем это было предусмотрено изначально. Мы рассмотрим, как реализовать возможность перемещения цен и создания ценовых линий непосредственно на графике. Многим это покажется сложным для решения. Однако вы увидите, что мы сделаем это с минимальными усилиями. Вам нужно всего лишь немного подумать.
Три фильтра MACD на US_TECH100: Тестирование на данных брокера за пять лет
В этой статье тестируются три распространенных фильтра для стандартного пересечения MACD на US_TECH100 H1 с использованием нативных данных брокера за пять лет. Фильтры добавляются поэтапно: фильтр рыночного режима, согласование со старшим таймфреймом (HTF) и время американской сессии. Это позволяет изолировать добавочный эффект каждого фильтра. Результаты показывают, что выбор часов торговли дает гораздо больший эффект, чем доработки индикатора, тогда как рыночный режим и HTF сами по себе дают мало. Статья включает воспроизводимый классификатор рыночного режима на MQL5.
Моделирование рынка: Position View (XII)
В этой статье вы научитесь создавать визуальный сигнал на своей торговой платформе, чтобы прямо на графике определять, является ли позиция длинной или короткой, без необходимости обращаться к терминалу. Кроме того, в тексте рассматривается реализация функциональности, которая улучшает отображение при перемещении линий тейк-профита и стоп-лосса, скрывая горизонтальную линию, следующую за курсором мыши, во время перемещения этих линий во избежание путаницы. Чтение предлагает практические знания для настройки систем моделирования рынка.