Тестирование и оптимизация советника на истории

    1. Откройте МТ4, перейдите в тестер стратегийtesterstart
    1. В строке «Советник» установите Ваш советник
    2. Выберите валютную пару, например, EURUSD
    3. Установите модель — все тики
    4. Установите метку «Использовать дату»
    5. Установите дату по Вашему усмотрению. Для избежание ошибок, проверьте архив котировок, при необходимости обновите Ваши котировки.
    6. Выставите период (таймфрейм).
    7. Для того, чтобы видеть ход работы советника, установите флаг «Визуализация»testerviz
  1. Нажмите Start и дождитесь окончания процесса тестирования
  2. Для просмотра результатов тестирования советника, перейдите в закладку «Отчет»

testerotc

Оптимизация советника

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

Для оптимизации параметров, установите метку «оптимизация». В свойствах эксперта установите пределы изменения тех параметров, которые Вы хотите подобрать и нажмите Start.

testeroptim

Результаты оптимизации.

После того как Вы запустите советник в тестере на оптимизацию, Вы получите огромное количество результатов. Теперь остается самое сложное – какой результат выбрать, какие параметры системы есть лишь подгонка под историю, а при каких параметрах система будет приносить прибыль на реальном рынке.
При оптимизации в МетаТрейдере удобно использовать Генетический Алгоритм, а в качестве оптимизируемого параметра выбирать баланс. Таким образом пытаться максимизировать прибыль системы. Но это не значит, что именно результаты с максимальной прибылью дадут нам систему, которая способна приносить прибыль на реальном рынке.
Во время оптимизации нужно не просто получить наилучший результат, а выбрать среди всех наиболее достоверный — тот, который в будущем принесет прибыль. Это будет легче сделать, если отсеять заведомо нерабочие результаты тестирования.
Для этого я предлагаю простые правила, которые помогут уменьшить количество результатов оптимизации системы.
1. Количество сделок должно быть не меньше 300. Лучше, чтобы было более 500.
2. Профит-фактор системы (отношение общей прибыли к общим убыткам) должен быть больше 1.5. – чем выше значение профит-фактора, тем лучше, но не забывайте об остальных пунктах.
3. При тестировании вне периода оптимизации, система должна показать результаты, соответствующие тем, что получены во время оптимизации. Первое на что следует обратить внимание — это просадка, она не должна быть больше, чем просадка за период оптимизации (об этом следующий пункт).
4. Просадка системы должна составлять такую величину, которую позволит терпеть депозит. Просадка системы – это наш проигрыш, который мы можем себе позволить, не останавливая торговлю. Если система на реале, допускает просадку больше той, что получена на тестах, такую систему следует снять с торгов и пересмотреть. Здесь можно долго спорить о величине допустимой просадки. Пусть каждый сам для себя решает, чем он может пожертвовать в случае неудачи.
5. Обратите внимание на сами параметры системы, которые оптимизировались. Значения переменных, полученные в результате оптимизации, должны находиться в разумных пределах, и соответствовать основной идее системы.
Эти простые правила позволяют отсеять заведомо нерабочие параметры системы, которые не будут работать на реале.

Почему при тестировании на одних и тех же параметрах результаты разные?
Есть несколько вариантов:
— Если Вы используете генетический алгоритм при оптимизации, то результаты будут почти всегда хоть немного но отличаться.
— Если тестер находится в онлайне, могут подкачиваться котировки, которые обновляют базу, тем самым меняя историю.
— Тестер берёт настройки того ДЦ (спред, своп, стоплевел  …), к счёту которого подключен в текущий момент терминал, например закачали котировки из дата центра MQ, а тестировали в момент подключения к другому ДЦ.

И еще несколько советов напоследок.
Никогда не проводите оптимизацию системы на всей доступной истории. Всегда оставляйте часть данных (примерно 10%) для тестирования out-of-sample. Это очень важный момент при проведении оптимизации. Если система, на этом промежутке ведет себя по-другому, нежели на периоде оптимизации, то смело отбрасывайте эти результаты оптимизации — это лишь подгонка под историю.
Всегда внимательно изучайте результаты оптимизации. Наблюдая то, как изменяется результат работы системы при изменении какого-либо параметра, можно сказать, как этот параметр влияет на систему. Может его вообще исключить из оптимизации.
Многие утверждают, что, проводя оптимизацию можно лишь подогнать систему на кривой истории, и она никогда не будет вести себя также как вела себя в тестере. Это не верно. Используя исторические данные, всегда можно грамотно протестировать систему и подобрать такие параметры, которые будут работать в будущем на реальном рынке. Это сложно и требует несколько больше времени, чем многие думают, но это возможно.
Чем больше и всесторонней Вы протестируете систему, тем больше Вы о ней узнаете и тем больше Вы сможете на ней заработать.