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

icon

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

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

Новая статья
последние | лучшие
preview
Разработка системы репликации (Часть 65): Нажатие кнопки воспроизведения в сервисе (VI)

Разработка системы репликации (Часть 65): Нажатие кнопки воспроизведения в сервисе (VI)

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

Трейдинг с экономическим календарем MQL5 (Часть 7): Подготовка к тестированию стратегий с анализом новостей

В этой статье мы подготовим нашу торговую систему на MQL5 для тестирования стратегий, используя данные экономического календаря в качестве ресурса для анализа вне реального времени. Мы реализуем загрузку и фильтрацию событий по времени, валюте и значимости, а затем проверим все в тестере стратегий. Так мы сможем тестировать на истории стратегии, работающие по экономическим новостям.
preview
Разработка системы репликации (Часть 66): Нажатие кнопки воспроизведения в сервисе (VII)

Разработка системы репликации (Часть 66): Нажатие кнопки воспроизведения в сервисе (VII)

В этой статье мы реализуем первое решение, которое позволит нам определить когда на графике может появиться новый бар. Данное решение применимо в самых разных ситуациях. Понимание его развития поможет вам разобраться в нескольких аспектах. Представленные здесь материалы предназначены только для обучения. Ни в коем случае нельзя рассматривать это приложение как окончательное, цели которого будут иные, кроме изучения представленных концепций.
preview
Разработка системы репликации (Часть 59): Новое будущее

Разработка системы репликации (Часть 59): Новое будущее

Правильное понимание разных идей позволяет нам делать больше с наименьшими усилиями. В этой статье мы рассмотрим, почему необходимо настроить применение шаблона до того, как сервис начнет взаимодействовать с графиком. И что, если мы улучшим указатель мыши, чтобы иметь возможность делать больше вещей с его помощью?
preview
Разработка системы репликации (Часть 72): Неожиданный способ оповещений (I)

Разработка системы репликации (Часть 72): Неожиданный способ оповещений (I)

То, что мы создадим сегодня, будет сложным для понимания. Поэтому в данной статье я расскажу только о начальном этапе. Внимательно прочитайте содержание данной статьи, это важно для того, чтобы перейти к следующему шагу. Цель данного материала - исключительно дидактическая, только для изучения и освоения представленных концепций, без практического применения.
preview
Разрабатываем мультивалютный советник (Часть 31): Секреты шага создания проекта оптимизации (I)

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

В статье разбираются два практических аспекта работы конвейера оптимизации на базе Adwizard: диагностика и восстановление после сбоев генерации базы итогового советника, а также предварительный подбор диапазонов параметров стратегии до создания проекта. Показано, как анализ таблиц stages/jobs/tasks в SQLite и перезапуск этапов по статусам помогают восстановить процесс, а пробная оптимизация сужает пространство поиска, исключает избыточные параметры и снижает риск застревания в локальных максимумах.
preview
Разрабатываем мультивалютный советник (Часть 32): Секреты шага создания проекта оптимизации (II)

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

В статье рассматриваются параметры второго этапа конвейера автоматической оптимизации мультивалютного советника. Мы анализируем критерии фильтрации проходов первого этапа и правила формирования групп торговых стратегий. Демонстрируется влияние настроек на результаты оптимизации, обсуждаются аспекты надёжности процесса и баланс между строгостью отбора и достаточностью кандидатов для алгоритма.
preview
Разработка системы репликации (Часть 62): Нажатие кнопки воспроизведения в сервисе (III)

Разработка системы репликации (Часть 62): Нажатие кнопки воспроизведения в сервисе (III)

В данной статье мы начнем решать проблему переизбытка тиков, которые могут влиять на работу приложения при использовании реальных данных. Данный переизбыток часто мешает правильному отсчету времени, необходимому для построения минутного бара в соответствующем окне.
preview
Моделирование рынка (Часть 18): Первые шаги на SQL (I)

Моделирование рынка (Часть 18): Первые шаги на SQL (I)

Неважно, какую программу SQL мы будем использовать: MySQL, SQL Server, SQLite, OpenSQL или другую. У всех есть что-то общее, а этот общий элемент — язык SQL. Даже если мы не собираемся использовать WorkBench, можно манипулировать или работать с базой данных непосредственно в MetaEditor или через MQL5 для выполнения действий в MetaTrader 5, но для этого вам понадобятся знания SQL. Итак, здесь мы выучим, как минимум, основы.
preview
От "лучшего прохода" к устойчивым решениям: исследование поверхности оптимизации в MetaTrader 5

От "лучшего прохода" к устойчивым решениям: исследование поверхности оптимизации в MetaTrader 5

В статье рассмотрен инженерный подход к оптимизации советника в MetaTrader 5: от сбора пользовательских метрик через Optimization Frames до анализа поверхности параметров. На простой событийной EMA/RSI‑модели показаны экспорт в CSV, сглаживание и оценка локальной стабильности в Python. Цель — находить устойчивые области конфигураций и подтверждать их форвард‑оптимизацией для надёжного внедрения.
preview
Моделирование рынка (Часть 05): Создание класса C_Orders (II)

Моделирование рынка (Часть 05): Создание класса C_Orders (II)

В данной статье я расскажу, как Chart Trade вместе с советником будет обрабатывать запрос на закрытие всех открытых позиций пользователя. Звучит просто, но есть несколько осложняющих моментов, и нужно знать, как управлять ими.
preview
Разработка системы репликации (Часть 61): Нажатие кнопки воспроизведения в сервисе (II)

Разработка системы репликации (Часть 61): Нажатие кнопки воспроизведения в сервисе (II)

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

Разработка системы репликации (Часть 58): Возвращаемся к работе над сервисом

После перерыва в разработке и улучшении сервиса, используемого для репликации/моделирования, сегодня мы возобновляем над ним работу. Теперь, когда мы отказались от использования таких ресурсов, как глобальные переменные терминала, нам придется полностью реструктурировать некоторые его части. Не волнуйтесь, этот процесс будет подробно объяснен, чтобы каждый мог следить за разработкой нашего сервиса.
preview
Разработка системы репликации (Часть 63): Нажатие кнопки воспроизведения в сервисе (IV)

Разработка системы репликации (Часть 63): Нажатие кнопки воспроизведения в сервисе (IV)

В этой статье мы наконец решим проблемы моделирования тиков на одноминутном баре, чтобы те могли сосуществовать с реальными тиками. Таким образом, мы избежим возникновения проблем в будущем. Представленный здесь контент предназначен только для образовательных целей. Ни в коем случае его не следует рассматривать как приложение, предназначенное для чего-то иного, кроме изучения и освоения представленных концепций.
preview
Разрабатываем пользовательский индикатор рыночных настроений

Разрабатываем пользовательский индикатор рыночных настроений

В этой статье мы разрабатываем пользовательский индикатор рыночных настроений, который классифицирует рыночные настроения как бычьи, медвежьи, в режиме risk-on, в режиме risk-off или нейтральные. Благодаря анализу нескольких таймфреймов индикатор дает трейдерам более ясное представление об общем рыночном уклоне и краткосрочных подтверждениях.
preview
Моделирование рынка (Часть 20): Первые шаги на SQL (III)

Моделирование рынка (Часть 20): Первые шаги на SQL (III)

Хотя мы можем выполнять операции с базой данных, содержащей около 10 записей, но материал усваивается гораздо лучше, когда мы работаем с файлом, который содержит более 15 тысяч записей. То есть, если бы мы попытались создать такое вручную, то эта задача была бы огромной. Однако трудно найти такую базу данных, даже для учебных целей, доступную для скачивания. Но на самом деле нам не нужно к этому прибегать, мы можем использовать MetaTrader 5 для создания базы данных для себя. В сегодняшней статье мы рассмотрим, как это сделать.
preview
Моделирование рынка (Часть 19): Первые шаги на SQL (II)

Моделирование рынка (Часть 19): Первые шаги на SQL (II)

Как мы объясняли в первой статье о SQL, нет смысла тратить время на программирование процедур для выполнения того, что уже включено в SQL. Однако, если не знать самых основ, вы не сможете ничего сделать с помощью SQL, чтобы воспользоваться всеми преимуществами, которые предлагает этот инструмент. Поэтому в данной статье мы рассмотрим, как выполнять основные задачи в базах данных.
preview
Моделирование рынка: Первые шаги на SQL в MQL5 (I)

Моделирование рынка: Первые шаги на SQL в MQL5 (I)

В сегодняшней статье мы начнём изучать использование SQL в коде MQL5. Мы также рассмотрим, как можно создать базу данных. Или, точнее, как создать файл базы данных в SQLite, используя ресурсы или процедуры, включенные в язык MQL5. Мы также увидим, как создать таблицу, а затем как установить связь между таблицами с помощью первичного и внешнего ключей. Всё это, опять же, с использованием MQL5. Мы увидим, как легко создать код, который в будущем можно будет перенести в другие реализации SQL, используя класс, помогающий скрыть созданную реализацию. И, что самое важное, мы увидим, что в разные моменты мы можем столкнуться с риском того, что при использовании SQL что-то пойдет не так. Это происходит так, потому что в коде MQL5 SQL-код всегда будет помещаться внутри строки.
preview
Моделирование рынка (Часть 17): Сокеты (XI)

Моделирование рынка (Часть 17): Сокеты (XI)

Реализация той части кода, которая будет работать в MetaTrader 5, не представляет сложности. Однако есть несколько моментов, которые нужно учитывать. Это необходимо для того, чтобы вы смогли заставить систему работать. Запомните одну важную вещь: будет запущена не одна программа. В реальности нам придётся запускать три программы одновременно. Важно реализовать и построить каждую из них так, чтобы они могли взаимодействовать и общаться одна с другой, и чтобы каждая из них понимала, что пытается или хочет сделать другая.
preview
Тестер стратегий для Python и MetaTrader 5 (Часть 02): Работа с барами, тиками и реализация встроенных функций в симуляторе

Тестер стратегий для Python и MetaTrader 5 (Часть 02): Работа с барами, тиками и реализация встроенных функций в симуляторе

В этой статье мы представим функции, аналогичные тем, которые предоставляет модуль Python–MetaTrader 5, предоставляя симулятору привычный интерфейс и собственный механизм внутренней обработки баров и тиков.
preview
Моделирование рынка (Часть 21): Первые шаги на SQL (IV)

Моделирование рынка (Часть 21): Первые шаги на SQL (IV)

Многие из вас, возможно, обладают гораздо большим опытом в области работы с базами данных, чем я, и, следовательно, имеют другое мнение. Поскольку было необходимо дать объяснение, почему базы данных создаются именно так, как они создаются, и нужно объяснить, почему SQL имеет именно такой формат и, прежде всего, почему появились первичные ключи и внешние ключи, поэтому пришлось оставить некоторые вещи немного абстрактными.
preview
Разработка инструментария для анализа Price Action (Часть 54): Фильтрация трендов с помощью EMA и сглаженных ценовых данных

Разработка инструментария для анализа Price Action (Часть 54): Фильтрация трендов с помощью EMA и сглаженных ценовых данных

В этой статье рассматривается метод, сочетающий сглаживание Heikin-Ashi с границами EMA20 по максимумам и минимумам, а также фильтром тренда EMA50, чтобы сделать сигналы понятнее, а входы точнее. Статья показывает, как эти инструменты помогают трейдерам выявлять реальный импульс, отсекать шум и увереннее работать на волатильном или трендовом рынке.
preview
Моделирование рынка (Часть 24): Первые шаги на SQL (VII)

Моделирование рынка (Часть 24): Первые шаги на SQL (VII)

В предыдущей статье мы завершили необходимое введение в тему SQL. И то, что мы хотели показать и объяснить о SQL, на мой взгляд, мы разъяснили должным образом. Так было сделано для того, чтобы каждый, кто придет посмотреть на строящуюся систему репликации/моделирования, мог хотя бы получить представление о том, что там может происходить. Дело в том, что нет смысла программировать вещи, с которыми SQL справляется идеально.
preview
Моделирование рынка (Часть 22): Первые шаги на SQL (V)

Моделирование рынка (Часть 22): Первые шаги на SQL (V)

Прежде, чем вы сдадитесь и решите отказаться от изучения SQL, позвольте мне напомнить вам, уважаемые читатели, что здесь мы всё ещё используем только самые базовые элементы. Мы ещё не рассмотрели некоторые возможности SQL. Как только вы их усвоите, вы увидите, что SQL гораздо практичнее, чем кажется. Хотя, скорее всего, мы в конечном итоге изменим направление того, что мы создаем, потому, что процесс создания является динамичным. Мы покажем немного больше о создании разных вещей в SQL, ведь это по настоящему важно и нужно вам. Просто думать, что вы более способны, чем целое сообщество программистов и разработчиков, приведет только к потере времени и возможностей. Не переживайте, потому что дальше будет ещё интереснее.
preview
Моделирование рынка (Часть 23): Первые шаги на SQL (VI)

Моделирование рынка (Часть 23): Первые шаги на SQL (VI)

В этой статье мы рассмотрим, как выполнить визуализацию и, следовательно, поймем, как структурирована база данных. Это было сделано с помощью анализа внутренней структуры базы данных. Хотя подобные вещи могут показаться излишними, они вполне оправданы, если мы действительно намерены стать администраторами баз данных. Да, есть люди, которые зарабатывают на жизнь, поддерживая и создавая базы данных.
preview
Кодекс рыночных состояний в MQL5 (Часть 1): Побитовое обучение на примере Nvidia

Кодекс рыночных состояний в MQL5 (Часть 1): Побитовое обучение на примере Nvidia

Мы начинаем новую серию статей, которая развивает наши предыдущие наработки, изложенные в серии о MQL5 Wizard, и продвигает их дальше по мере усиления нашего подхода к системной торговле и тестированию стратегий. В этой новой серии мы сосредоточимся на советниках, запрограммированных на удержание только одного типа позиций — преимущественно длинных. Сосредоточение на одном направлении торговли может упростить анализ, снизить сложность стратегии и дать важные наблюдения, особенно при работе с активами за пределами Forex. Поэтому в этой серии мы исследуем, эффективен ли такой подход для акций и других невалютных активов, где long-only-системы часто хорошо согласуются с подходом smart money и стратегиями институциональных участников.
preview
Разработка инструментария для анализа Price Action (Часть 58): Модуль анализа сжатия диапазона и классификации зрелости

Разработка инструментария для анализа Price Action (Часть 58): Модуль анализа сжатия диапазона и классификации зрелости

В продолжение предыдущей статьи, где был представлен модуль классификации состояния рынка, в этой части мы сосредоточимся на реализации основной логики выявления и оценки зон сжатия. В статье представлена система обнаружения сжатия диапазона и оценки зрелости на языке MQL5, которая анализирует зоны рыночной консолидации, опираясь только на динамику цены.
preview
Моделирование рынка: Первые шаги на SQL в MQL5 (V)

Моделирование рынка: Первые шаги на SQL в MQL5 (V)

В предыдущей статье я показал, как следовало действовать для добавления механизма запросов. Это было нужно для того, чтобы внутри кода MQL5 вы могли полноценно использовать SQL и получать результаты при выполнении команды SQL SELECT FROM. Но осталось рассказать последнюю функцию, которую нам необходимо реализовать. Это функция DatabaseReadBind. И, поскольку для правильного понимания требуется чуть более развернутое объяснение, было решено сделать это не в той предыдущей статье, а в сегодняшней. Итак, поскольку тема будет довольно объемной, перейдём сразу к следующему разделу.
preview
Двумерные копулы в MQL5 (Часть 1): Реализация гауссовой копулы и t-копулы Стьюдента для моделирования зависимостей

Двумерные копулы в MQL5 (Часть 1): Реализация гауссовой копулы и t-копулы Стьюдента для моделирования зависимостей

Это первая часть серии статей, посвящённых реализации двумерных копул в MQL5. В статье представлен код, реализующий гауссову копулу и t-копулу Стьюдента. Также рассматриваются основы статистических копул и связанные с ними темы. Код основан на Python-пакете ArbitrageLab от Hudson and Thames.
preview
Моделирование рынка: Position View (I)

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

Контент, который мы будем рассматривать с этого момента, гораздо сложнее с точки зрения теории и концепций. Я постараюсь сделать содержание как можно более простым. Сама программная часть довольно проста и понятна. Но если вы не понимаете стоящую за этим теорию, вы останетесь совершенно без ресурсов для доработки или даже адаптации системы репликации/моделирования под задачи, отличающиеся от тех, что я собираюсь показать. Я не хочу, чтобы вы просто компилировали и использовали код, который я показываю. Я хочу, чтобы вы учились, разбирались и, если возможно, могли создать что-то еще лучше.
preview
Кодекс рыночных состояний в MQL5 (Часть 2): Побитовое обучение и мультипаттерны на примере Nvidia

Кодекс рыночных состояний в MQL5 (Часть 2): Побитовое обучение и мультипаттерны на примере Nvidia

Мы продолжаем нашу новую серию о рыночном позиционировании, в которой изучаем отдельные активы с конкретными направлениями сделок на управляемых тестовых окнах. Мы начали её с рассмотрения акций Nvidia Corp в предыдущей статье, где разобрали 5 сигнальных паттернов, основанных на взаимодополняющем сочетании осцилляторов RSI и DeMarker. В этой статье мы рассмотрим оставшиеся 5 паттернов, а также мультипаттерн-варианты — от произвольных комбинаций всех десяти сигналов до более узкоспециализированных сочетаний.
preview
Моделирование рынка: Первые шаги на SQL в MQL5 (IV)

Моделирование рынка: Первые шаги на SQL в MQL5 (IV)

Многие люди склонны недооценивать SQL или даже вообще не использовать его, потому что не до конца понимают, как он на самом деле работает. При выполнении запросов к базе данных SQL мы не всегда ищем универсальный ответ, а в некоторых случаях нам нужен очень конкретный и практичный ответ. Если создать базу данных с надлежащей структурой и моделью данных, в неё можно будет интегрировать практически любые типы информации.
preview
Моделирование рынка: Первые шаги на SQL в MQL5 (III)

Моделирование рынка: Первые шаги на SQL в MQL5 (III)

В предыдущей статье мы рассмотрели пример реализации класса на MQL5 для обеспечения базовой поддержки. Его цель заключается именно в том, чтобы позволить хранить SQL-код в отдельном файле скрипта. Таким образом, нам не потребуется писать тот же SQL-код в виде строки внутри кода MQL5. Хотя данное решение функционально, в нём есть некоторые детали, которые мы можем и должны улучшить.
preview
Разработка инструментария для анализа Price Action (Часть 70): Автоматическое исполнение сделок по сигналам паттерна "флаг"

Разработка инструментария для анализа Price Action (Часть 70): Автоматическое исполнение сделок по сигналам паттерна "флаг"

В статье описаны буферная архитектура сигналов для пробоев паттерна "флаг" и советник, который ее использует. Стрелки пробоя и высота флагштока записываются в отдельные буферы только после подтверждения, что предотвращает перерисовку и неоднозначность. Советник считывает данные из буферов через CopyBuffer(), проверяет сигналы с помощью настраиваемых фильтров и исполняет сделки с фиксированными или динамическими уровнями SL/TP.
preview
Разработка инструментария для анализа Price Action (Часть 56): Анализ принятия и отвержения на границах сессии с помощью CP

Разработка инструментария для анализа Price Action (Часть 56): Анализ принятия и отвержения на границах сессии с помощью CP

В этой статье представлен сессионный аналитический подход, сочетающий рыночные сессии с заданными временными границами и индекс давления свечи (CPI), чтобы на основе закрытых свечей и четко определенных правил классифицировать принятие и отвержение на границах сессий.
preview
Разработка инструментария для анализа Price Action (Часть 57): Создание модуля классификации состояния рынка на MQL5

Разработка инструментария для анализа Price Action (Часть 57): Создание модуля классификации состояния рынка на MQL5

В этой статье представлен модуль классификации состояния рынка на MQL5, который интерпретирует поведение цены по данным закрытых свечей. Анализируя сжатие и расширение волатильности, а также согласованность структуры, инструмент классифицирует состояние рынка как сжатие, переходное состояние, расширение или тренд и тем самым формирует четкий контекст для анализа Price Action.
preview
Моделирование рынка: Первые шаги на SQL в MQL5 (II)

Моделирование рынка: Первые шаги на SQL в MQL5 (II)

Хотя многие считают, что мы можем без проблем встраивать SQL-код в другой код, обычно это не так. Причина заключается в том, что SQL-код включается в исполняемый файл в виде строки. И тот факт, что SQL-код внедряется в виде строки, хотя и не вызывает проблем в небольших фрагментах, в итоге это может создать нам немало головной боли.
preview
Моделирование рынка: Position View (IV)

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

Здесь мы начнем объединять различные компоненты или приложения, которые ранее были полностью изолированы друг от друга. Chart Trade, индикатор мыши и советник уже были связаны между собой, однако всё ещё отсутствовал способ прямой визуализации на графике открытых на торговом сервере позиций, которые зачастую обрабатывались через систему встречных ордеров. С этого момента это становится возможным, открывая путь для различных идей и будущих реализаций. Хотя мы только начинаем внедрять эти компоненты в работу, у нас уже появится направление для дальнейшего развития.
preview
Моделирование рынка: Position View (II)

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

В этой статье я покажу как максимально просто и практично использовать индикатор для отслеживания открытых позиций на торговом сервере. Я делаю это именно так, шаг за шагом, чтобы показать, что вам не обязательно переносить всё это в советник. Многие из вас, вероятно, уже привыкли к этому по той или иной причине. На самом деле это ерунда, так как по мере развития данной реализации станет ясно, что вы сможете создавать или реализовать различные типы индикаторов для этой цели.
preview
Моделирование рынка: Position View (V)

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

Несмотря на изложенное в предыдущей статье, это кажется чем-то простым. Там перед нами стоят различные проблемы и множество задач, которые нужно решить и выполнить. Вы, уважаемый читатель, можете представить, что всё легко и просто. По наивности вы просто принимаете то, что вам предлагают. И это ошибка, которой вам, уважаемый читатель, следует постараться избежать. Хуже простого принятия — непонимание и попытка использовать что-то без реального осознания того, что именно используется. Среди новичков часто встречается этап копирования и вставки кода. Если вы не хотите навсегда остаться на этом этапе, стоит научиться использовать определенные инструменты. Одним из наиболее часто используемых программистами инструментов является документация. Второй инструмент состоит из тестов и лог-файлов. Здесь мы увидим, как это сделать.