Статьи о тестировании стратегий на языке MQL5

icon

Как разработать, написать и протестировать торговую стратегию, как найти оптимальные параметры системы и как анализировать полученные результаты? Платформа MetaTrader предлагает разработчикам торговых роботов широкие возможности для быстрой и точной проверки торговых идей.  Узнайте с помощью этих статей, как тестировать мультивалютных роботов и как использовать для оптимизации возможности MQL5 Cloud Network.

Разработчикам автоматических торговых систем рекомендуется начать с изучения основ тестирования и алгоритмов генерации тиков в тестере стратегий.

Новая статья
последние | лучшие
preview
Стресс-тестирование последовательностей сделок методом Монте-Карло в MQL5

Стресс-тестирование последовательностей сделок методом Монте-Карло в MQL5

Бэктест показывает лишь одну траекторию из множества возможных исходов. Данный MQL5-скрипт выполняет 1000 бутстрап-передискретизаций Монте-Карло для ряда P&L по сделкам, строит на графике веерную диаграмму процентилей с помощью CCanvas и выводит вероятность разорения, Value at Risk (VaR) и наихудшую просадку на уровне 95-го процентиля. В результате получается практический взгляд на траекторный риск и подверженность просадкам, выходящий за рамки одной кривой эквити.
preview
Моделирование рынка: Position View (XIII)

Моделирование рынка: Position View (XIII)

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

Свинговые экстремумы и откаты в MQL5 (Часть 3): Определение структурной валидности за рамками простых максимумов и минимумов

В статье представлен советник MQL5, который переводит первичное обнаружение свингов на уровень основанного на правилах модуля структурной валидации. Свинги подтверждаются сломом структуры (break of structure), импульсным смещением, снятием ликвидности или удержанием уровня во времени (time-based respect), после чего связываются с картой ликвидности (liquidity map) и структурной машиной состояний (structural state machine). В результате получаются учитывающие контекст точки входа и стопы, привязанные к подтверждённым уровням, что помогает фильтровать шум и систематизировать исполнение сделок.
preview
Изучение стандартной библиотеки MQL5 (Часть 13): Применение библиотеки математических решателей в торговле

Изучение стандартной библиотеки MQL5 (Часть 13): Применение библиотеки математических решателей в торговле

Мы представляем полный рабочий процесс для адаптивной фильтрации в MQL5 с использованием решателя CNlEq, подобного алгоритму Левенберга — Марквардта. Советник подбирает параметры модели VAMAC — две экспоненциальные скользящие средние (EWMA) с масштабированием на основе ATR — путем передачи остатков и Якобиана через цикл механизма обратного обмена с решателем CNlEq, с возможностью использования численных или аналитических производных. Код, инструкции по настройке и тесты по паре GBPUSD на таймфрейме H1 показывают, как заменить статические пороги динамической переоценкой на закрытии каждого бара.
preview
Реализация алгоритма усечённого метода Ньютона с сопряжёнными градиентами в MQL5

Реализация алгоритма усечённого метода Ньютона с сопряжёнными градиентами в MQL5

В статье реализован оптимизатор на основе усечённого метода Ньютона с сопряжёнными градиентами (TNC) с покомпонентными ограничениями на переменные, а также подробно описаны его основные компоненты: масштабирование, проекция на границы, поиск по направлению и произведения матрицы Гессе на вектор с помощью конечных разностей. Она предоставляет обёртку целевой функции, поддерживающую аналитические или численные производные, и проверяет работоспособность решателя на тестовой функции Розенброка. Пример логистической регрессии демонстрирует, как использовать TNC в качестве непосредственной замены LBFGS.
preview
Создание HTML-дашборда для Тестера стратегий и анализа проп-фирменных испытаний в MQL5

Создание HTML-дашборда для Тестера стратегий и анализа проп-фирменных испытаний в MQL5

В этой статье показано, как создать многоразовый модуль оценки проп-фирм для советников MQL5 и экспортировать результаты на HTML-дашборд. Модуль отслеживает баланс и капитал во время тестирования стратегий на исторических данных, имитирует одиночные или скользящие серии испытаний, проверяет целевую прибыль, дневную и общую просадку, а также минимальное количество торговых дней, после чего выводит как итоговый отчет, так и отчет в HTML-формате, который можно открыть в браузере.
preview
Моделирование рынка: Position View (XV)

Моделирование рынка: Position View (XV)

В этой статье я постараюсь как можно проще объяснить, как можно использовать обмен сообщениями между приложениям. Цель в том, чтобы вы могли создать что-то работоспособное максимально простым и эффективным способом, когда это возможно. Не знаю, удастся ли мне донести идею, лежащую в основе этой концепции, поскольку тому, кто сталкивается с ней впервые, её не так-то просто понять. Кроме того, я воспользуюсь случаем, чтобы показать вам, как изменить систему репликации/моделирования, чтобы вы могли отлаживать советник или любой другой код, который разрабатываете. И всё это — столь же просто и прямо.
preview
Моделирование рынка: Position View (XVII)

Моделирование рынка: Position View (XVII)

В предыдущей статье мы сделали так, чтобы индикатор отображал финансовый результат. Однако не всем нравится использовать этот режим отображения. Причины могут различаться от трейдера к трейдеру, хотя в некоторых случаях они кажутся мне вполне разумными и оправданными. Адаптировать код, чтобы предоставить такую возможность, — отнюдь не одна из самых сложных задач. На самом деле это довольно просто. В этой статье мы рассмотрим, как это сделать.
preview
Моделирование рынка: Position View (XVIII)

Моделирование рынка: Position View (XVIII)

В этой статье я показал, в максимально доступной форме, как можно модифицировать и доработать код, способный решать определённые задачи, при этом минимально изменяя уже существующий код. Мы добавим индикатор объема и одновременно не позволим пользователю или трейдеру удалять объекты, создаваемые индикатором позиции.
preview
Моделирование рынка: В единстве — сила (I)

Моделирование рынка: В единстве — сила (I)

Мы подходим к финишной прямой. Разработка системы репликации/моделирования почти завершена. Конечно, нам ещё предстоит доделать кое-что, но по сравнению со всем, что мы уже сделали, реализовать оставшееся будет несложно. Однако всё, что будет показано в этой статье, необходимо как следует усвоить и понять. Поэтому я желаю вам приятного чтения и, прежде всего, получить удовольствие от этого последнего этапа пути.
preview
Моделирование рынка: В единстве — сила (II)

Моделирование рынка: В единстве — сила (II)

До сих пор приложение, разрабатываемое в рамках этой серии статей, было сосредоточено исключительно на моделировании графической части. Однако, чтобы получить более полную систему, в которой мы сможем протестировать советник в рамках сервиса репликации/моделирования, нам также необходимо смоделировать торговый сервер. Вы заметите, что это моделирование будет включать только самые необходимые элементы. Тем не менее вы, уважаемый читатель, сможете дополнить недостающие части. Поскольку эти дополнительные компоненты не влияют на то, что я хочу показать, у нас уже более чем достаточно для реализации задуманного.
preview
Создание индикатора для моделирования будущих свечей после пересечения EMA в MQL5

Создание индикатора для моделирования будущих свечей после пересечения EMA в MQL5

Пользовательский модуль моделирования будущих свечей обнаруживает пересечения быстрой и медленной EMA и сразу же строит проекцию синтетических свечей после сигнального бара. Он формирует тела и тени свечей по заданным правилам, отрисовывает их с помощью графических объектов и обновляется при каждом новом сигнале или изменении точки привязки. Вы получаете наглядное представление о возможном дальнейшем движении, позволяющее проверять выбранный момент для совершения сделки, визуализировать сценарии и отслеживать отмену сценария прямо на графике.
preview
Моделирование рынка: Position View (XIX)

Моделирование рынка: Position View (XIX)

Один из вопросов, который доставлял мне наибольший дискомфорт, заключается в том, что класс C_ElementsTrade содержит код для обращения к позициям. Не воспринимайте это как ошибку, потому что на самом деле это не так. Однако из-за этого некоторые задачи, которые нам предстоит выполнить позже, становятся более рискованными с точки зрения ошибок. Вся работа по реализации индикатора позиции велась с расчетом на его использование в сервисе репликации/моделирования. Однако при запуске в этой среде у нас не будет никакого доступа к реальной позиции. Следовательно, любой вызов библиотеки MQL5, предназначенный для получения данных о позиции, не окажет никакого влияния на код.
preview
Renko внутри советника: построение по тикам без offline-графика

Renko внутри советника: построение по тикам без offline-графика

Покажу, как строить Renko прямо внутри советника на MQL5 — без offline-графиков и пользовательских символов. Разберём развороты на один и два кирпича, обработку нескольких кирпичей за тик и типичные ошибки. Проверим повторяемость построения и выгрузим результат в CSV. К статье приложены класс CRenkoBuilder и демонстрационный советник.
preview
Использование Экономического календаря MQL5 для фильтрации новостей (Часть 4): Точное тестирование на истории со статическими данными

Использование Экономического календаря MQL5 для фильтрации новостей (Часть 4): Точное тестирование на истории со статическими данными

В этой статье реализован статический источник новостей на основе CSV для Тестера стратегий, позволяющий предварительно загружать и запрашивать исторические экономические события при тестировании на исторических данных. Он заменяет вызовы календаря в реальном времени в режиме тестера быстрым поиском в памяти, при этом логика работы в реальной торговле остается прежней и обеспечивает детерминированные, воспроизводимые результаты с явным контролем над тем, какие события включаются. Это позволяет надежно проверять новостные фильтры, временное удаление стопов и правила блокировки новых сделок.
preview
MQL5 Bootstrap (III): Упрощенные средства работы с новостями

MQL5 Bootstrap (III): Упрощенные средства работы с новостями

В этой статье представлены унифицированная модель новостей и набор переиспользуемых классов MQL5 для работы с Экономическим календарем MetaTrader 5. Вы сможете получать, фильтровать и кэшировать события по времени, валюте, стране и важности с помощью единого интерфейса для трех провайдеров: встроенного календаря, CSV и SQLite. Фреймворк поддерживает экспорт и импорт, поиск следующего и предыдущего событий, а также надежное тестирование на истории в Тестере стратегий без изменения торговой логики.
preview
От новичка до эксперта: Расширение стратегии на основе ликвидности с помощью трендовых фильтров

От новичка до эксперта: Расширение стратегии на основе ликвидности с помощью трендовых фильтров

В статье стратегия на основе ликвидности дополняется простым трендовым фильтром: торговать от зон ликвидности только в направлении тренда, определяемого EMA(50). В ней объясняются правила фильтрации, представлен пригодный для повторного использования класс TrendFilter.mqh и показана его интеграция в советник на языке MQL5, а также сравниваются результаты тестирования исходной стратегии и стратегии с фильтром. Читатели получают четкий ориентир по направлению торговли, возможность сократить избыточную торговлю в контртрендовых фазах и готовые к использованию файлы исходного кода.
preview
Разработка динамического мультивалютного советника (Часть 9): Фильтрация шума исполнения с учетом микроструктуры рынка

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

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

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

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

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

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

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

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

Интерактивное управление зонами спроса и предложения на MQL5 (Часть IV): Tорговля в зонах спроса и предложения

Мы расширяем фреймворк зон спроса и предложения, добавляя уровень стратегии, который преобразует взаимодействия цены с зонами в решения. Зоны, прошедшие проверку пригодности, последовательно проверяются на близость цены к зоне, характер приближения цены к зоне, согласованность с условиями старшего таймфрейма и подтверждение по моделям Price Action, после чего исполнение передается специализированному менеджеру торговли. Эта архитектура повышает управляемость, упрощает сопровождение и дальнейшее расширение системы без изменения базового механизма обработки зон.