Тестер МТ4 - классический симулятор для индикаторов и автоматических торговых систем на валютном рынке форекс и не только. В его оболочку могут быть интегрированы другие тестеры-надстройки, дополняющие функционал. Статистика тестирования выгружается в дневники трейдера и редакторы для последующего анализа. В этом обзоре вы узнаете о том, как тестировать индикаторы и советники на исторических периодах, какие есть преимущества и недостатки тестера стратегий MT4, как анализировать бэктест, какие существуют проблемы оптимизации и тестирования советников.

Обзор тестера МТ4: тестирование, оптимизация индикаторов и торговых систем

Анализ эффективности торговых систем, ручных стратегий, индикаторов - обязательное условие, которое должно быть выполнено перед их запуском на реальном счете с реальными деньгами (и на демо-счете в том числе). Тестеры стратегий форекс могут быть отдельными программами или же выступать приложением к конкретным платформам. Также их можно разделить на те, которые предназначены исключительно для ручных стратегий (Forex Simulator, FX Blue Trading Simulator) или комбинированные, с возможностью тестирования советников. 

В этой статье мы разберем:


Я старался написать обзор как можно подробнее, как можно полнее, но простым языком. Если вы заметите в нем какие-либо неточности - смело пишите об этом в комментариях!

Тестер МТ4 - универсальный симулятор для советников и индикаторов

По методу тестирования тестеры делятся на два типа: 

  1. Цикличные тестеры. Они последовательно перебирают одну свечу за другой. Получая новое значение последней свечи, они в соответствии с формулой проводят вычисления, учитывая данные предыдущих свечей. При совпадении факторов, указанных в коде/параметрах, открывают и закрывают ордера. По итогу тестирования выдается статистика по сделкам. Недостаток тестеров: в результатах не учитывается реальный спред, проскальзывания, из-за чего итог тестирования бывает далек от того, что будет на реальном счете.
  2. Событийно-ориентированные тестеры. Максимально приближены к реалистичным событиям. Архитектура тестера «заточена» на то, чтобы с наступлением конкретного события генерировать новые ситуационные случайные события, влияющие на результат. Недостаток таких тестеров - сложный код и как следствие большая вероятность ошибок. Для разработки торговой системы под такой тестер нужно знание кода.

Тестер МТ4 относится к первой группе. 

Метатрейдер 4 постоянно дорабатывается, а вместе с ним дорабатывается и функционал тестирования. Например, в старых версиях (доступных несколько лет назад) не было предусмотрено тестирование отдельных индикаторов. Трейдеры изучали азы программирования, брали «пустой» советник (шаблон с заложенными параметрами риск-менеджмента, расчетом лота и т.д.) и добавляли в него код индикатора, немного его адаптируя. Сейчас тестер МТ4 - это мультифункциональная программа для базового тестирования, которая позволяет «прогнать» индикаторы и советники на любом временном интервале с последующей выгрузкой стейтмента в редакторы. 

1. Тестирование индикаторов и ручных стратегий в тестере Метатрейдер 4

Функция тестирования индикаторов в тестере МТ4 означает, что теперь трейдер может наблюдать за работой индикатора на историческом периоде в «реальном времени». То есть, выставив на графике начало периода и запустив тестирование с визуализацией, наблюдать, как отрисовываются линии индикатора.

Это позволяет:

  • Абстрагироваться от правой части графика. В режиме визуализации правая часть графика еще не нарисована, трейдер не знает, как поведет себя цена и принимает решение, исходя из информации, которая есть на текущий момент, «не подглядывая в будущее». 
  • Увидеть, есть ли перерисовка индикатора.

Особенности работы тестера МТ4 на историческом периоде:

  • Тестирование возможно только на одном инструменте, портфельного тестирования нет.
  • Размерность и кратность лотов, свопов, комиссий берутся из настроек текущего аккаунта.
  • Моделирование ведется максимально близко к рыночным условиям, но на кросс-курсах возможны значительные расхождения из-за отсутствия точных курсов в момент конвертации на каждом временном отрезке.
  • Режим открытия сделок на тестовом периоде - Instant Execution.
  • На нестандартных таймфреймах тестирование не проводится, даже если добавить их с помощью скрипта.

Любое тестирование независимо от того, идет ли речь о тестере МТ4 или другом симуляторе, начинается с подгрузки котировок. В МТ4 это делается следующим образом:

  • Заходим в «Сервис/Архив котировок».
  • Отмечаем нужную валютную пару, выбираем графики М1 (по ним будет наиболее точная история).
  • Загружаем котировки.

LiteFinance: Встроенный тестер индикаторов и советников Metatrader 4 | Litefinance

Загрузка происходит с сервера MetaQuotes. Котировки разработчика МТ4 могут отличаться от котировок брокера, о чем и предупреждает LiteFinance. Из-за разницы в котировках появляются расхождения в  статистике тестирования и качество котировок - первое, на что стоит обратить внимание перед тестированием.

Запускаем сам тестер: в панели инструментов есть соответствующий значок. Или же заходим в меню «Вид/Тестер стратегий». Открываем в графике валютную пару, по которой были загружены котировки, наносим индикатор. В тестере, открывшемся в нижней половине платформы, выбираем в окошке «Индикатор» и находим тот, который собираемся тестировать. В данном случае Alligator.

LiteFinance: Встроенный тестер индикаторов и советников Metatrader 4 | Litefinance

С правой стороны платформы расположено меню управления настройками индикатора (обведено зеленым прямоугольником).

1. Свойства индикатора. Здесь можно изменить настройки индикатора, которые будут запущены для тестирования. Замечу, что речь идет именно об индикаторе для тестирования.

LiteFinance: Встроенный тестер индикаторов и советников Metatrader 4 | Litefinance

Это окно настроек Аллигатора перед тестированием.

LiteFinance: Встроенный тестер индикаторов и советников Metatrader 4 | Litefinance

Это окно настроек Аллигатора на стандартном рабочем графике. Как видите, они разные. Является ли это недостатком, предлагаю обсудить в комментариях. 

2. Свойства символа. Окно информационное, в нем ничего изменить нельзя. Здесь указывается стартовый депозит, уровни стопов, спред и т.д. 

3. Открыть график. Данная функция не работает. При ее нажатии ничего не происходит и это явная недоработка МТ4. Об этой проблеме на форумах писали и раньше, но ничего не изменилось.

4. Изменить индикатор. Здесь простор для тех, кто владеет кодом и хочет внести изменения в саму суть тестируемого индикатора с помощью MetaEditor.

Теперь пройдусь по основному меню тестера.

LiteFinance: Встроенный тестер индикаторов и советников Metatrader 4 | Litefinance

В строке «Символ» выбираем инструмент, на котором проводится тестирование. В данном случае валютная пара USD/JPY, по которой закачивались котировки. В графе «Использовать дату» указываем временной участок, на котором будет запущен тестер. Окошко «Оптимизация» активно только для советников. В графе «Визуализация» есть ползунок, которым можно регулировать скорость движения графика (прогонки тестера). В прогонке есть баг: при перемещении скорости с 31 до максимальной 32 прогонка графика резко возрастает в несколько раз. 

В правой части окна можно установить таймфрейм, выставить текущий или фиксированный спред. Сделано это для удобства. Например, в ночное время спред обычно завышен, если стратегия предполагает использование индикатора ночью, то имеет смысл установить текущий спред.

  • Совет. Один из вариантов стресс-тестирования предусматривает установку заведомо худших параметров, чем условия реального рынка. Устойчивость торговой системы к форс-мажору - залог успеха в обычных условиях, потому стресс-тестирование предусматривает анализ работоспособности торговой системы (особенно это актуально для советников) при разных издержках (спреде, свопе и т.д.). МТ4 не позволяет выставлять какой угодно спред и здесь на помощь придет скрипт Spread Changer. Если не найдете обновленную (бесплатную) версию в интернете, пишите в комментариях адрес электронной почты, отправлю скрипт как можно скорее.

И теперь самое интересное окно - «Модель» тестирования. Здесь предлагается несколько режимов:

  • Все тики. Наиболее точный и долгий метод. Генерация тиков внутри свечи. Свечи формируют по наименьшему таймфрейму М1. Суть метода: бар формируется по схеме OHLCV (Open - High - Low - Close, Volume). Внутри самого бара цена может колебаться в ту или иную сторону несколько раз, что влияет на точность расчетов и нагружает тестер.

Схематически это можно показать так:

LiteFinance: Встроенный тестер индикаторов и советников Metatrader 4 | Litefinance

Цифрами обозначены опорные точки (вдаваться в подробности расчета не стоит). Проверка «По всем тикам» заставляет обращаться к тестеру в случае каждого изменения цены внутри бара. Наиболее точный метод тестирования, занимающий много времени.

  • Контрольные точки. Наиболее грубый метод, в соответствии с которым тестер берет данные из ближайшего меньшего таймфрейма, благодаря чему тестирование становится более быстрым, но менее точным. Например, для таймфрейма М5 берутся данные таймфрейма М1. Используется для создания общего представления о работоспособности индикатора, не более.
  • По ценам открытия. Наиболее быстрый метод. Советник анализирует рынок и открывает сделки в начале формирования новой свечи (цена открытия). Первый шаг - это формирование бара (Open = High = Low = Close, Volume = 1), следующий шаг - выдача полностью сформированного бара. На графике бары идут один за одним без внутренних колебаний, в формуле индикатора учитывается только единственная цена - цена открытия бара. Трейлинг внутри бара не двигается. Если тейк-профит и стоп-лосс попадутся внутри свечи, то тестер сначала запустит стоп, хотя могло бы быть наоборот. Потому по этой модели тестируют советники, где не предусматриваются стоп и тейк-профит ордера.

Чтобы глубоко не вдаваться в подробности методов построения графиков, рекомендую придерживаться следующего правила: запустите тестирование при одинаковых параметрах по всем трем методам. Если график и статистика почти одинаковые, советник оптимизирован. Если разница существенная, то грубую проверку стоит проводить по быстрому методу и оптимизировать стратегию по всем тикам. Это же правило касается и тестирования советников.

Все настройки выставлены - можно начинать тестирование стратегии, нажав кнопку «Старт». Замечу, что каждое ее нажатие открывает новый график и тестирование начинается заново. Чтобы поставить тестер на паузу для открытия ордера, нужно нажимать кнопку возле полосы прокрутки скорости. Вернуться назад и открыть сделку «задним числом» нельзя. Кнопка «Стоп» полностью останавливает тестирование и запустить его можно будет только заново. 

Если по каким-то причинам запуск тестирования не происходит (проблема с котировками и т.д.), перезапустите МТ4. 

Преимущества тестера МТ4:

  • Универсальность. Тестер позволяет тестировать любые отдельно взятые индикаторы и полноценные торговые системы (ручные стратегии и торговые советники). Любой уникальный индикатор, который по коду совместим с МТ4, может быть наложен на график и протестирован.
  • Программа позволяет совместное использование с другими симуляторами. Тестер МТ4 можно запускать как отдельно, так и в комбинации с другими аналогичными программами. Например, после установки FX Blue Trading Simulator, навигационные настройки задаются в окне тестера МТ4. Иными словами, FX Blue интегрируется в базовый симулятор платформы.

Недостатки тестера МТ4:

  • Не все функции в тестировании индикаторов работают корректно. Есть проблемы с переносом индикаторов (их добавлением) во время паузы, индикаторы не получают обновленную информацию с других таймфреймов, из-за чего искажается результат.
  • В процессе тестирования нет возможности менять периоды.
  • Нельзя открывать сделки. Можно добавлять во время паузы другие индикаторы, менять отображение «свечи/бары», убирать сетку, менять цветовую гамму, но не открывать ордера. Соответственно нельзя оценить доходность вашей стратегии и прочую статистику.

Последний недостаток сводит «на нет» все преимущества тестирования индикаторов. Трейдер только лишь может следить за тем, как прорисовывается график и работает индикатор, но не может выставлять ордера.

Выхода три:

  1. Устанавливать дополнительный тестер ручных стратегий, дополняющий функционал тестера МТ4.
  2. Разрабатывать на основе индикатора советник, добавив в код индикатора условия открытия/закрытия сделок.
  3. Визуально оценивать результативность индикатора. В момент, который кажется удачным, тестирование ставится на паузу, в потенциальной точке входа ставится стрелка или любой другой символ (Вставка/Значки). Трейдер может только визуально оценить успешность решения, так как открытия ордеров нет, а значит нет и статистики.

LiteFinance: Встроенный тестер индикаторов и советников Metatrader 4 | Litefinance

Важно! С тестированием встроенных индикаторов проблем нет, с добавленными - иногда встречаются. Функция тестирования индикаторов добавлена в МТ4 несколько лет назад. Если индикатор написан до того, как эта функция была добавлена, то он может в тестере не запускаться.

2. Тестирование автоматических торговых систем в тестере Метатрейдер 4

Суть тестирования советника почти аналогичная. МТ4 имеет встроенный редактор MetaEditor, где можно написать код робота, который будет точно синхронизирован с платформой. Тестирование здесь также начинается с загрузки котировок.

Это могут быть:

  • Котировки MetaQuotes - как их закачивать, рассказано в предыдущем разделе. К их качеству часто выставляются претензии, но для тренировки подойдет.
  • Котировки брокера, которые должны быть в платформе, скачанной непосредственно с его сайта.

Заходим в «Сервис/Настройки», открываем меню «Графики» и из окна «Макс. баров истории» копируем цифру в окно «Макс. баров в окне» (по умолчанию 65 000).

Открываем тестер и в его окне там, где раньше указывалось «Индикатор», ставим «Советник». Все остальные настройки аналогичны тестированию индикатора, кроме «Настройки эксперта».

LiteFinance: Встроенный тестер индикаторов и советников Metatrader 4 | Litefinance

В меню «Настройки эксперта» доступны три вкладки:

  1. Тестирование. Здесь задается начальный депозит, есть возможность выбора направления сделок (например, открытие только длинных или только коротких позиций). 
  2. Входные параметры. Здесь можно выставить объем лота, максимальный риск на сделку, параметры советника. Колонки «Старт», «Шаг» и «Стоп» нужны для оптимизации советника. Галочки в окне переменных не ставятся.
  3. Оптимизация. Эта вкладка нужна уже после того, как советник будет протестирован и понадобится его оптимизация. Ей я уделю внимание ниже в отдельном разделе.

Во «Входных параметрах» есть кнопка «Загрузить», она нужна для упрощения задачи установки параметров. Когда тестируется только один советник на одной паре и у него 4-5 основных настроек, их можно выставить руками. Но когда речь идет о роботе с 10-ю и более настройками (тем более о мультивалютных советниках) и о тестировании на десятке активах, легко запутаться. Потому с роботами обычно идут файлы с расширением .set, в которых уже заложены базовые настройки для каждой валютной пары. Эти настройки остается только подгрузить.

Опция «Оптимизация» в момент первого запуска тестера советника отключена.

Нажимаем кнопку «Старт» и наблюдаем за графиком. Уточню: если при тестировании индикатора ордера на историческом периоде не открываются, то здесь ордера ставит сам советник. Визуальный контроль профессиональные тестеры, полагаясь на статистику, пропускают. Если интересен принцип работы советника, я бы советовал наблюдать за графиком визуально, это относительно недолго. Но можно визуализацию и пропустить: в графе «Пропустить до» рядом с полосой скорости прокрутки графика ставим нужную дату. До нее тестирование пройдет без визуализации (без графика), но в отчет сделки будут включены.

3. Анализ статистики и проблемы оценки бэктеста

В самом низу окна платформы (и тестера тоже) есть меню просмотра статистики, которое я выделил на скрине ниже красным прямоугольником. Также хотел бы обратить внимание на то, что на этом скрине сейчас видно тестирование советника, работающего на основе средних скользящих. На графике видно открытие ордеров, их закрытие, котировки и причина закрытия. Поле, которое находится над тестером, где отражается сумма баланса - это поле текущих сделок, которые трейдер может параллельно с тестированием проводить в соседней вкладке. Значение Баланса над тестером к тестированию отношения не имеет!

LiteFinance: Встроенный тестер индикаторов и советников Metatrader 4 | Litefinance

Советую начинать анализ со вкладки «График». Если кривая эквити (кривая депозита) здесь определенно спадающая, с резкими перепадами и глубокими просадками, возвращаемся к настройкам советника и вносим корректировки в параметры. Если советник не совершил ни одной сделки, где-то ошибка. Код ошибки ищем в журнале статистики, расшифровка есть на сайте mql4.com в разделе «Документация» (Справочник).

Во вкладке «Результаты» список всех сделок с указанием даты, направления, цены открытия/закрытия (в том числе по стопу или тейк-профиту), прибыли и итогового промежуточного баланса.

LiteFinance: Встроенный тестер индикаторов и советников Metatrader 4 | Litefinance

Вкладку «Отчет» рассмотрю подробнее.

LiteFinance: Встроенный тестер индикаторов и советников Metatrader 4 | Litefinance

1. Количество баров в истории. Это количество баров (свечей), на которых проводилось тестирование.

2. Смоделировано тиков. Показывает размер смоделированной последовательности. Каждая запись последовательности является состоянием бара в фиксированный момент времени. Речь идет о том, что бар - это законченное состояние последовательности расположения цены OHLCV (Open - High - Low - Close, Volume). Количество состояний бара может отличаться в зависимости от таймфрейма, качества котировок. Теоретически, чем больше тиков, тем более точное тестирование и тем оно дольше происходит. На практике есть ситуации, когда детальная прогонка - это потеря времени, так как результаты не будут отличаться от более быстрого тестирования.

3. Качество моделирования. В МТ4 значение этого параметра не поднимается выше 90%, то есть 90% - это лучший результат. Если значение меньше, нужно искать причину в качестве котировок, советник запускать на реальном счете нежелательно.

LiteFinance: Встроенный тестер индикаторов и советников Metatrader 4 | Litefinance

  • HistoryTotal - количество баров всего исторического периода тестирования.
  • StartBar - номер бара, с которого начато тестирование.
  • StartGen - номер бара, с которого началось моделирование на основе данных истории ближайшего таймфрейма (более нижнего).
  • StartGenM1 - номер бара, с которого начато моделирование на основе минутного таймфрейма.
  • 0,25, 0,5 и 0,9 - весовые коэффициенты.

Если в методах моделирования выбран способ «по ценам открытия» (самый быстрый способ), то значение параметра будет n/a с отметкой, что моделирование не проводилось.

На форумах можно встретить мнение, что точность 90% - это заведомо провал торговли на реальном рынке. Для повышения точности до 97-99% можно использовать бесплатную программу Tickstory Lite, обзор которой - это тема отдельной статьи. Если будет интересно узнать, как с ее помощью поднять качество моделирования, пишите об этом в комментариях.

4. Ошибки рассогласования. Ошибки, возникающие при моделировании тиков на разных таймфреймах. Наиболее частая причина их появления - разница между котировками из архива и котировками, предоставленными непосредственно брокером.

Расшифровка цветов полосы ошибок рассогласования и качества моделирования:

  • Светло-зеленый. Моделирование на минутном таймфрейме.
  • Темные оттенки зеленого. Моделирование на старших таймфреймах (от М5 до Н4).
  • Розовый оттенок. Чистое фрактальное моделирование без данных меньшего таймфрейма.
  • Серый оттенок. Моделирование не проводилось.

Чем более яркий зеленый цвет полосы, тем более доступны котировки младших таймфреймов (что и нужно для точного тестирования). Если какой-то участок индикаторной полосы имеет серый цвет (котировки отсутствуют), полностью перегружаем историю котировок:

  • Нажимаем в основном меню «Файл/Открыть каталог данных». 
  • Заходим в папку History, где находим папку с названием своего торгового сервера.
  • В папке удаляем все файлы по тестируемой валютной паре. Загружаем котировки еще раз.

Остальные параметры - это статистика торговли, как анализировать которую, описано в этой статье. Добавлю только лишь некоторые нюансы, которые в ней не указаны:

  • Количество сделок - не менее 150 для любого таймфрейма. 
  • Математическое ожидание - это чистая прибыль, деленная на количество сделок. Измеряется в валюте депозита, но кому удобнее, может переводить ее вручную в пункты. Низкое значение матожидания (менее 10 пунктов) может говорить о том, что советник быстро закрывает прибыльные сделки (то есть урезает потенциальную прибыль).
  • Абсолютная просадка - это разность между стартовой суммой депозита и наименьшим его значением за весь период тестирования. Максимальная просадка - это разность между наибольшим и наименьшим значением депозита.

Для сохранения отчета в формате HTML щелкаем правой кнопкой мыши на результатах тестирования.

LiteFinance: Встроенный тестер индикаторов и советников Metatrader 4 | Litefinance

Бэктест можно выгрузить не только в формате HTM, но и в Excel или другие программы, которые могут автоматически сгруппировать данные по заданному алгоритму и вывести статистику в удобную форму. Например, в виде диаграмм и графиков. Это удобно при сравнении одновременно нескольких торговых систем или нескольких комбинаций параметров одной системы. Также выгрузку данных в редакторы используют мошенники.

Кроме того, бэктест используется в личных целях, он может быть примером результативности торговли при продаже советника или привлечения денег в доверительное управление. Признаки подделки бэктеста:

  • Формат HTML. При сохранении бэктеста МТ4 предлагает формат HTM, но HTML - более привычное (на слуху) расширение, потому те, кто подделывает бэктест, автоматически ставят именно его. Несмотря на то, что при выгрузке формат HTML можно прописать вручную, смысла в этом нет. Потому HTML - первый признак того, что бэктест - подделка.

LiteFinance: Встроенный тестер индикаторов и советников Metatrader 4 | Litefinance

  • Пробелы или пропуск строк. МТ4 выгружает отчет сплошным текстом, наличие пробелов говорит о том, что бэктест корректировался вручную или предварительно загружался в какой-то редактор.
  • Лишние символы (точки, запятые). Проще всего сгенерировать любой отчет на МТ4 и визуально сравнить выдачу статистики со своим и чужим бэктестом.
  • Отсутствие комиссий, неактуальные котировки, ошибки в спреде. Отсутствие комиссий - явный признак того, что тестирование проводилось на демо-счете. Можно выгрузить данные в Excel и парой формул проверить соответствие комиссий, цен открытия/закрытия, суммы дохода и баланса между собой. Если убыточные сделки были удалены или заменены цифры, Excel покажет расхождение.
  • Одинаковые тикеты, несоответствие очередности тикетов и времени открытия сделок.

Совет. Если вам посторонний человек предлагает инвестировать в торговую систему и в качестве доказательства предоставляет бэктест, просите инвесторский пароль.

4. Оптимизация советников на историческом периоде

Оптимизация советника в тестере Метатрейдер 4 - это процесс перебора массива параметров робота в заданном диапазоне с шагом, который позволяет найти оптимальное их сочетание, дающее наилучший результат. Оптимизация нужна в 2-х случаях:

  1. Необходимость оптимизации только что созданного советника на других временных периодах или других инструментах.
  2. Изменение рыночной ситуации. Рынок волатилен, динамика движения котировок изменчива, потому любые торговые системы со временем нужно заново подстраивать. Перебор параметров происходит в тестере автоматически.

Перед началом оптимизации ставим в основном окне тестера галочку в окошке с соответствующим названием. Визуализацию можно отключить. Оптимизация проводится на модели «Все тики» (запустите тестер на всех 3-х моделях и сравните точность результатов).

LiteFinance: Встроенный тестер индикаторов и советников Metatrader 4 | Litefinance

4.1. Тестирование. Открываем вкладку «Свойства эксперта/Тестирование».

В разделе «Оптимизация» выбирается основной параметр, по которому будет проводиться оценка каждого прогона тестера по историческому периоду:

  • Balance. Тестер отбирает лучший прогон по итоговому значению баланса депозита. Набор лучших настроек будет соответствовать той версии прогона, на которой будет показана максимальная прибыль.
  • Profit Factor. Ключевым параметром будет соотношение прибыльных и убыточных сделок. Если значение будет равно 1 или меньше по всем вариантам прогона, советник к торговле не допускается. Оптимальной будет та версия, где соотношение будет максимальным в пользу прибыльных сделок.
  • Expected Payoff. Ключевой параметр, на который ориентируется тестер - математическое ожидание, которое должно быть не менее размера спреда.
  • Maximal Drawdown. Ориентир - максимальная просадка, являющаяся показателем уровня реального риска. В теории не должна быть больше, чем сумма стартового депозита.
  • Drawdown Percent. Ориентир - относительная просадка.
  • Custom. Показателем оптимизации будет критерий, указанный в функции советника OnTester(), где пользователь может добавить любой свой показатель оптимизации. По отзывам трейдеров, данный пункт не работает.

Если убрать галочку с «Генетического алгоритма», тестер прогонит все существующие комбинации параметров под заданные критерии. Учитывая, сколько это может занять времени, снимать ее не рекомендую.

4.2. Входные параметры. Здесь указываются параметры риск-менеджмента. Галочкой отмечаются те переменные, которые участвуют в оптимизации.

LiteFinance: Встроенный тестер индикаторов и советников Metatrader 4 | Litefinance

Если отметки напротив параметра нет, то он в оптимизации участия не принимает. У каждого параметра есть четыре значения:

  • Значение - текущее значение параметра.
  • Старт - первоначальное значение.
  • Шаг - шаг увеличения первоначального значения.
  • Стоп - конечное значение.

Например, трейдер хочет подобрать оптимальное значение стопа. Он понимает, что во внутридневной торговле ставить стоп больше 50 пунктов ему нет смысла, но в то же время и менее 10-ти ставить было бы некорректно. Эти ограничения он и выставляет в окне для того, чтобы тестер не перебирал параметры, точно не подходящие под стратегию. То есть сэкономил время. Шаг можно выставить и минимальный, но есть ли в этом смысл? Будет ли стоп 11 пунктов или 12 - не так принципиально, а времени на тестирование уйдет больше.

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

4.3. Оптимизация. Здесь также указываются параметры, которые позволяют экономить время, урезая ненужные комбинации цифр.

LiteFinance: Встроенный тестер индикаторов и советников Metatrader 4 | Litefinance

Например, трейдер может указать минимальный уровень депозита (то есть тот уровень, ниже которого тестировать советник уже нет смысла, так как он неработоспособен), после которого оптимизация останавливается. Аналогично и с другими критериями.

Варианты методик оптимизации:

  • Тестирование на 2-х равных участках. Оптимизация проходит на обоих, сохраняются до 10-ти оптимальных вариантов параметров на каждом из участков. За основу берется тот вариант прогона, где на обоих участках параметры приблизительно одинаковы.
  • Форвард-тестирование. Участок делится на 3 части: первые 2 - период тестирования и оптимизации, последний - участок форвард-тестирования, на котором отбирают лучшие результаты.
  • Бэкворд и форвард тестирование. Участок делится на 3 части: на более раннем участке проводится первичное тестирование на среднем участке, на нем же проводится оптимизация. Выбранные несколько вариантов параметров прогоняются на последнем форвард-участке. Лучший вариант тестируется на первом участке (бэкворд-тест), а затем на всем историческом отрезке. На всех участках результаты (статистика и вид кривой депозита) должны быть сравнительно одинаковы.

Лучший набор параметров запускается на демо-счете. Чтобы понять, насколько статистика торговли будет совпадать с результатами оптимизации, достаточно в среднем около 30-50 сделок.

5. Проблемы использования оптимизированных советников на реальном счете

Тестер МТ4 не идеален и наиболее часто встречающиеся претензии к нему трейдеров касаются работы именно с тестированием советников. Правда, отчасти в этом вина и самих трейдеров. Тестирование не дает 100% гарантии того, что и в реальной торговле будет аналогичный результат. Какой бы сложной и оптимизированной не была торговая система, итоги тестирования всегда будут содержать неточности, о которых трейдеры почему-то забывают. 

Заблуждения трейдеров, полностью доверяющих тестеру и советникам:

1. Тестирование и оптимизация только на In-Sample выборке. Представляет собой тестирование на отдельно взятых базовых данных фиксированного периода. Тем самым трейдер просто подгоняет результаты тестирования под подходящую ему кривую депозита и результаты на реальном счете оказываются далекими от итогов теста. Наиболее частая ошибка начинающих трейдеров, которые не хотят знакомиться с понятиями матожидания и статистики, применяемых в Out-of-Sample (параметры вне выборки). 

В упрощенной форме порядок оптимизации должен быть приблизительно следующим:

  • Для тестирования берется исторический период не менее 5 лет. Участок разбивается на 3 части.
  • Отрезок длиной первые 2/3 участка - это данные в выборке, на которых будет проводиться подгонка параметров советника.
  • Оптимизированная система тестируется на последнем 1/3 участка. Если результаты имеют низкую корреляцию (сильно отличаются), на реальном рынке система окажется нерабочей. Это так называемое форвардное тестирование, проводимое в ручном режиме.

Для автоматизации форвардного тестирования, которое в МТ4 было недоступно, относительно недавно в Маркете стала доступна библиотека Walk-Forward Optimization (WFO) и скрипт Walk-Forward Reporter  - инструменты пошаговой форвард-оптимизации, повторяющейся много раз со сдвигом окна в будущее.

LiteFinance: Встроенный тестер индикаторов и советников Metatrader 4 | Litefinance

Методы тестирования и оптимизации достаточно подробно расписаны на форуме сайта mql4.com. Если кому-то будет интересно, как установить библиотеку, прописать код и вообще будет интересна инструкция по работе с этими инструментами детальной оптимизации, пишите в комментариях, я дам на них ссылку.

Можно также встретить частные варианты тестирования по методу «в выборке» и «вне выборки»: оптимизация советника на самом неудачном (убыточном) участке с последующим запуском на всем периоде. Или оптимизация на участке 1 год, после чего проводится прогонка на участках «1 год + 3 месяца», «1 год + 6 месяцев» и т.д. с последующим сравнением результатов. 

2. Смена рыночного цикла. Чем больший период пытается охватить при тестировании трейдер, тем меньше вероятность, что он получит неработающую систему, даже если сможет подобрать оптимальные параметры. Рынок цикличен и на разных его циклах советник будет показывать разные результаты. Потому у трейдера есть два варианта:

  1. Подобрать универсальные параметры советника для длинного периода, но иметь в виду, что на реальном счете результат может оказаться худшим.
  2. Разбить интервал на участки и определить, на каких именно (флет, фундаментальный всплеск, конец или начало года, европейская или азиатская сессии и т.д.) советник работает лучше всего. Подгонять параметры и тестировать советник на отдельных участках, для которых он предназначен. 

3. Комиссионные расходы. В тестере их нужно выставлять вручную:

  • Спред. Часто трейдеры ставят заниженный спред, который может в 2-4 раза отличаться от реального рыночного. Если брокер указал спред по определенной валютной паре 0,7 пункта (например), это не означает, что это так и есть. В оферте и в торговых условиях (которые часто полностью не читают) могут указываться по отдельным типам счетов дополнительные комиссии.
  • Своп. Существенно снижает потенциальную прибыль.
  • Проскальзывания. Зависят от брокера и рыночной ситуации. Не учитываются при тестировании, потому искажают результаты на реальном счете.

Кто-то и вовсе игнорирует транзакционные расходы в оптимизации.

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

5. Качество котировок. Качество котировок брокеров не всегда высокое. На коротких таймфреймах можно найти недостающие куски. Какой бы источник котировок посоветовали вы? Будет интересно прочесть мнение читателей блога LiteFinance!

6. Низкая устойчивость к изменению параметров. Еще одна классическая ошибка трейдеров при оптимизации. Предположим, что путем серии подборов параметров все-таки удалось достичь на длинном историческом периоде лучших результатов. Можно ли такую систему запускать на реальном счете? Нет. Если на тестовом периоде при незначительном изменении параметров результаты резко ухудшаются (например, изменение параметра индикатора с 8 на 9), система не является рабочей.

7. Полное доверие к советнику. Разработчики советников утверждают, что при автоматическом трейдинге можно забыть о психологии, так как робот действует по заданному алгоритму, отточенному на историческом периоде. Как я уже писал выше, идеальных советников нет. Потому успех трейдера в алгоритмической торговле в том, чтобы вовремя переходить на ручной метод торговли и постоянно подстраивать его под реалии рынка.

Советы по оптимизации:

  • Период оптимизации - для дневного таймфрейма не менее 3-х лет. Следовательно весь период отработки торговой системы - 4-5 лет и более.
  • Не нужно оптимизировать одновременно много параметров. Это искусственно подгонит результат под историю и на реальном счете система даст сбой.
  • Для уменьшения времени оптимизации увеличьте в настройках шаг. Участок с лучшими результатами все равно будет виден, зато снизится нагрузка на тестер. Лучший участок потом можно будет прогнать еще раз более детально.
  • Не пытайтесь максимально оптимизировать систему, тратя на это часы и дни. Все равно через время ее снова придется оптимизировать. Не получается оптимизация - модернизируйте алгоритм советника.

Что проще: создать собственный торговый советники и оптимизировать его или купить работающую систему, проанализировав бэктест? Вопрос риторический. Создание собственной системы - это рутинная работа, забирающая дни и недели, не всегда приводящая к положительному результату. 

Сам принцип работы с тестером МТ4 несложный, сложный процесс оптимизации и подбора параметров. Но и покупка готовых систем - не панацея. Бэктесты подделываются, гарантии работоспособности системы нет. Например, еще несколько лет назад в Маркете (раздел mql4) были популярны советники, «подглядывающие в будущее». Их код позволял ориентироваться на котировки будущих периодов, тем самым выдавая желаемое за действительное. На реальном рынке они почти не работали. 

6. Где тестировать стратегии: на МТ4 или МТ5?

Несмотря на то, что МТ5 не пользуется у трейдеров популярностью, именно о тестере этой платформы отзывы куда более положительные, чем о тестере МТ4. Главным образом из-за точности результатов. Так это или нет, предложу оценить читателям обзора самостоятельно. Акцентирую только лишь на основных моментах:

  • Индикаторы и советники, написанные под МТ4, на МТ5 работать не будут.
  • У обоих тестеров закрытый способ оптимизации. Оптимизация проводится только по тем параметрам, которые входят в МТ4. Путем добавления строк кода трейдер может добавить в тестер пользовательские параметры. Во время оптимизации пользовательский параметр будет рассчитываться, но оптимизировать советник по нему невозможно. Например, в статистику можно добавить коэффициент восстановления (прибыль/просадка), но в «Настройки эксперта» он не попадет.
  • В МТ5 только один режим моделирования цены - генерация тиков по историческим данным минутного таймфрейма.
  • В МТ5 используется потенциал многоядерных систем, у МТ4 - только одно процессорное ядро. Прежде всего это влияет на скорость подбора параметров при оптимизации.
  • В МТ5 возможно тестирование по нескольким инструментам одновременно (важно для мультивалютных стратегий). В МТ4 - только по одному.

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

Вывод

В статье сделан только лишь общий ознакомительный обзор по работе с тестером МТ4. Более глубоко методы тестирования и оптимизации с использованием разных моделей и принципов подгонки результата на отдельных участках исторического периода можно прочесть на профильных форумах, в том числе и mql4.com. Оптимизация советника - это долгая рутинная работа, порой не приносящая результатов. Она может быть интересна тем, кто:

  1. Профессионально занимается разработкой торговых советников, в том числе и для продажи.
  2. Азартен и получает удовольствие от самого процесса тестирования, оптимизации и разработки кода.

Оптимальным вариантом пока что остается ручное тестирование, не требующее столь глубоких знаний принципов работы тестера, но в то же время позволяющее оценить работоспособность стратегии.

Приглашаю каждого читателя блога присоединиться к обсуждению вопросов тестирования и оптимизации торговых стратегий. Поделитесь вашим опытом и методами тестирования или задавайте вопросы опытным трейдерам LiteFinance!


P.S. Понравилась моя статья? Поделись ей в соцсетях, это лучшее спасибо :)

Задавайте мне вопросы и комментируйте материал ниже. С удовольствием отвечу и дам необходимые пояснения.

Полезные ссылки:

  • Торговлю с проверенным брокером рекомендую попробовать тут. Система позволяет торговать самостоятельно или копировать сделки успешных трейдеров со всего мира.
  • Воспользуйтесь моим промокодом BLOG для получения бонуса 50% на депозит от LiteFinance. Промокод нужно просто ввести в соответствующее поле при пополнении счета в платформе LiteFinance и бонус зачислится одновременно с депозитом.
  • Чат трейдеров в телеграм: https://t.me/marketanalysischat. Делимся сигналами и опытом.
  • Канал в телеграм с отличной аналитикой, форекс обзорами, обучающими статьями и прочими полезностями для трейдеров: https://t.me/forexandcryptoanalysis

График цены USDJPY в реальном времени

Тестер стратегий МТ4

Содержание данной статьи является исключительно частным мнением автора и может не совпадать с официальной позицией LiteFinance. Материалы, публикуемые на данной странице, предоставлены исключительно в информационных целях и не могут рассматриваться как инвестиционный совет или консультация для целей Директивы 2004/39 /EC.

Оцените данную статью:
{{value}} ( {{count}} {{title}} )
Появились вопросы к автору? Вы можете обсудить их в комментариях .
Начать торговать
Мы в социальных сетях
Live-Чат
Оставить отзыв
Live Chat