Тестирование и оптимизация советника на истории
- Откройте МТ4, перейдите в тестер стратегий
Посмотреть вложение 351542
Откроется окно тестера стратегий
Посмотреть вложение 351541
- В строке “Советник” установите Ваш советник EA_FractalCandle 1,1limit
- Выберите валютную пару, например, EURUSD
- Установите модель – все тики (для более быстрого тестирования можно на первом этапе ставить по ценам открытия)
- Установите метку “Использовать дату”
- Установите дату по Вашему усмотрению. Для избежание ошибок, проверьте архив котировок, при необходимости обновите Ваши котировки.(F2)
- Выставите период (таймфрейм). Na должен стоять меньше или тот же что указан в самих параметрах советника.
- Для того, чтобы видеть ход работы советника, установите флаг “Визуализация” (в режиме оптимизации его нужно отключить)
- Нажмите Start и дождитесь окончания процесса тестирования
- Для просмотра результатов тестирования советника, перейдите в закладку “Отчет”
Оптимизация советника
Оптимизация представляет собой последовательные прогоны одного и того же советника с различными входными параметрами на одних и тех же данных. При этом можно подобрать такие параметры, при которых эффективность советника будет максимальной. Терминал MT4 обладает встроенными средствами, позволяющими автоматизировать этот процесс.
Для оптимизации параметров, установите метку “оптимизация”. В свойствах эксперта установите пределы изменения тех параметров, которые Вы хотите подобрать и нажмите Start.
Посмотреть вложение 351546
Галочкой отмечены те, которые будут перебираться при оптимизации. Старт - начальное значение,Стоп - конечное значение. Я Выставил примерные значения в файле set который приложен в первом посту.
Посмотреть вложение 351550
Результаты оптимизации.
После того как Вы запустите советник в тестере на оптимизацию, Вы получите огромное количество результатов. Теперь остается самое сложное – какой результат выбрать, какие параметры системы есть лишь подгонка под историю, а при каких параметрах система будет приносить прибыль на реальном рынке.
При оптимизации в МетаТрейдере удобно использовать Генетический Алгоритм, а в качестве оптимизируемого параметра выбирать баланс. Таким образом пытаться максимизировать прибыль системы. Но это не значит, что именно результаты с максимальной прибылью дадут нам систему, которая способна приносить прибыль на реальном рынке.
Во время оптимизации нужно не просто получить наилучший результат, а выбрать среди всех наиболее достоверный – тот, который в будущем принесет прибыль. Это будет легче сделать, если отсеять заведомо нерабочие результаты тестирования.
Для этого я предлагаю простые правила, которые помогут уменьшить количество результатов оптимизации системы.
1. Количество сделок должно быть не меньше 300. Лучше, чтобы было более 500.
2. Профит-фактор системы (отношение общей прибыли к общим убыткам) должен быть больше 1.5. – чем выше значение профит-фактора, тем лучше, но не забывайте об остальных пунктах.
3. При тестировании вне периода оптимизации, система должна показать результаты, соответствующие тем, что получены во время оптимизации. Первое на что следует обратить внимание — это просадка, она не должна быть больше, чем просадка за период оптимизации (об этом следующий пункт).
4. Просадка системы должна составлять такую величину, которую позволит терпеть депозит. Просадка системы – это наш проигрыш, который мы можем себе позволить, не останавливая торговлю. Если система на реале, допускает просадку больше той, что получена на тестах, такую систему следует снять с торгов и пересмотреть. Здесь можно долго спорить о величине допустимой просадки. Пусть каждый сам для себя решает, чем он может пожертвовать в случае неудачи.
5. Обратите внимание на сами параметры системы, которые оптимизировались. Значения переменных, полученные в результате оптимизации, должны находиться в разумных пределах, и соответствовать основной идее системы.
Эти простые правила позволяют отсеять заведомо нерабочие параметры системы, которые не будут работать на реале.
Посмотреть вложение 351551
Почему при тестировании на одних и тех же параметрах результаты разные?
Есть несколько вариантов:
– Если Вы используете генетический алгоритм при оптимизации, то результаты будут почти всегда хоть немного но отличаться.
– Если тестер находится в онлайне, могут подкачиваться котировки, которые обновляют базу, тем самым меняя историю.
– Тестер берёт настройки того ДЦ (спред, своп, стоплевел …), к счёту которого подключен в текущий момент терминал, например закачали котировки из дата центра MQ, а тестировали в момент подключения к другому ДЦ.
И еще несколько советов напоследок.
Никогда не проводите оптимизацию системы на всей доступной истории. Всегда оставляйте часть данных (примерно 10%) для тестирования out-of-sample. Это очень важный момент при проведении оптимизации. Если система, на этом промежутке ведет себя по-другому, нежели на периоде оптимизации, то смело отбрасывайте эти результаты оптимизации – это лишь подгонка под историю.
Всегда внимательно изучайте результаты оптимизации. Наблюдая то, как изменяется результат работы системы при изменении какого-либо параметра, можно сказать, как этот параметр влияет на систему. Может его вообще исключить из оптимизации.
Многие утверждают, что, проводя оптимизацию можно лишь подогнать систему на кривой истории, и она никогда не будет вести себя также как вела себя в тестере. Это не верно. Используя исторические данные, всегда можно грамотно протестировать систему и подобрать такие параметры, которые будут работать в будущем на реальном рынке. Это сложно и требует несколько больше времени, чем многие думают, но это возможно.
Чем больше и всесторонней Вы протестируете систему, тем больше Вы о ней узнаете и тем больше Вы сможете на ней заработать.