MQL для тебя

MQL для чайников, программирование на MQL4, MQL5

Язык MQL — Урок 7 «тестирование и оптимизация в MT4»

Рекомендуемый ДЦ - Alpari !

На прошлом уроке Язык MQL — Урок 6 «эксперт Hedge Hog» мы написали советник Forex торгующий по стратегии Hedge Hog. Сегодня займемся его тестированием и оптимизацией в Metatrader.

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

Для этого необходимо выполнить следующие действия:
1. Проверить его на тестере стратегий MT4
2. Провести оптимизацию советника и проверить ее результат
3. Проверить, как работает советник форекс на демо-счете
4. Проверить советник на центовом счете форекс

Пункты 1,2,4 обязательны к выполнению! Пункт 3 желателен, но необязателен. Дело в том, что проверка на демо-счете и центовом счете занимают много времени. В отличии от тестера стратегий Metatrader 4 — торговля на них идет в реальном режиме времени. Поэтому один из этих этапов, начинающие трейдеры форекс частенько пропускают. Я настоятельно рекомендую НЕ пропускать 4 пункт - тестирование советника форекс на центовом счете. Советник может прекрасно работать на тестере и демо счете, а на реальном, как не странно, не торговать вовсе или «слить» ваш депозит. На реальном счете (центовый счет — это реальный счет с минимально разрешенными суммами депозита) присутствуют такие моменты, которых нет в тестере или на демо счете. Это отказы в обслуживании брокером форекс, проскальзывание цен и т.д.

Итак, начнем по порядку.

Запускаем тестер стратегий MT4 Запуск тестера , выбираем наш советник «expert1». Выбираем символ "EURUSD" как того требует стратегия Hedge Hog. Модель рекомендую выбрать "Все тики" как наиболее точный метод тестирования. Указываем интервал дат истории для тестирования. Я указал за декабрь месяц 2009 года. Выбираем Период на котором будет работать наш советник. Я выбрал часовой, хотя для нашего советника это не важно.

Настройки тестирования

Нажимаем кнопочку «Старт» и ждем окончания процесса тестирования советника.
У меня советник не совершил ни одной сделки. А в журнале появилось много ошибок. Дело в том что я использовал сервер Алпари для тестирования. У них 5 значные котировки, а стратегия «Hedge Hog» писалась для 4 значных котировок.

Это легко исправимо. Достаточно тейкпрофит увеличить в 10 раз (вместо 14 пунктов указать 140 пунктов). Нажимаем кнопочку «Свойства эксперта» и в появившемся окошке изменяем.

Свойства советника

Нажимаем «OK» и запускаем тестирование еще раз.
Теперь появились сделки. Открываем график:

График тестирования

Что-то не радует меня эта картинка. Да и какие-то странные ошибки в журнале еще до запуска тестирования советника. Что же не так? Ответ прост: в истории терминала Metatrader есть пропуски котировок. Терминал у меня запущен не постоянно, поэтому часть истории потерялась.

Необходимо подгрузить историю. Для этого нажимаем кнопочку F2. В открывшемся окне выбираем интересующую нас валюту:

Подгрузка котировок

И замечаем что в заголовке окна указана "USDCHF" и котировки явно не "EURUSD". Несколько раз щелкаем мышкой на таимфрейм «1 Минута» и высвечивается:

Котировки "EURUSD"

Вот теперь все нормально. Нажимаем кнопочку «Загрузить» и ждем пока подгрузится история. После подгрузки нажимаем еще раз «Загрузить»

Диалог пересчета котировок

Соглашаемся. После пересчета закрываем окно подгрузки истории и запускаем тестирование еще раз.

График тестирования

График не изменился. Значит проблема не в котировках. Ошибок в журнале тоже нет

Журнал тестирования

Проверим — а правильно ли открываются сделки в нашем советнике форекс:

Результаты тестирования

Видим что советник торгует строго по стратегии. Сделки открываются в 00:00, а убыточные закрываются через 48 часов. Лот тоже удваивается при убыточных сделках.

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

Параметры советника для оптимизации

Кроме этого указываем тестеру стратегий Metatrader 4 что мы хотим оптимизировать (галочка «Оптимизация»)

Включение оптимизации

Нажимаем кнопочку «Старт» еще раз. Оптимизация занимает много времени. Можно пока сходить выпить чашечку «кофе».

После завершения открываем результаты оптимизации и смотрим на результат:

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

Вот оно! При открытии ордеров в 18:00 получается минимальная просадка и максимальная прибыль. Проверим. Выделяем эту строчку, нажимаем на ней правую кнопочку мышки и говорим «установить входные параметры». Галочка «Оптимизация» у нас отключена. Запускаем тестирование с новыми параметрами.

И вот какого результата мы добились, благодаря оптимизации советника на тестере стратегий Metatrader 4:

График тестирования

Правда красиво?

Но как убедится что наш советник и дальше будет показывать такой же результат?

Я задавал интервал тестирования советника Hedge Hog — декабрь 2009. Попробуем теперь прогнать советник на будущих данных. Зададим интервал с 01.01.2010 по сегодняшний день.

Результат тестирования получается следующий:

Проверка оптимизации

Оказываются просадки при данных параметрах, которые мы подобрали,  могут быть достаточно большими — это называется мы попали в «ловушку оптимизации». И они бы случились с нашим депозитом на реальном счету...

Конечно можно проверить остальные результаты оптимизации. Можно оптимизировать тейк-профит и стоп-лосс. Можно протестировать советник на других валютах.

Рекомендую это сделать вам, в качестве домашнего задания, самостоятельно.

Вывод: Советник Hedge Hog — рабочий и потихоньку зарабатывает. Значит и стратегия Hedge Hog является прибыльной. Но такие просадки не каждый сможет перенести. Лично я не рискну бы торговать таким советником форекс на реальном счету. Необходимо придумать какие то фильтры для уменьшения просадок в данном советнике форекс !

Советы: Период для тестирования и оптимизации советника желательно (и даже необходимо) выбирать гараздо больше, чем мы выбрали (рекомендую — от одного года). Модель тестирования и оптимизации новичкам советую использовать "Все тики". После оптимизации советника форекс, обязательно проверяйте результат на будущих данных. Не забывайте подгружать историю котировок в терминал Metatrader 4.

Если Вы хотите изучать язык MQL или вам понравилась данная публикация - Вы можете подписаться на получение новых материалов сайта mql4you.ru по RSS или по e-mail:

30 комментариев на «Язык MQL — Урок 7 «тестирование и оптимизация в MT4»»

  1. Михаил 15.01.2010 в 0:05 1

    Подскажите, при тестировании советника у меня получается качество моделирования 52%, и появилось большое кол-во «ошибок рассогласования графика», которые на отчете показаны красным цветом.

    Правильно ли я провел тестирование советника?

    И в чем моя ошибка, если нет? Как добиться правильных результатов тестирования советника форекс?

  2. palt 15.01.2010 в 13:04 2

    Ответ на этот вопрос есть в статье. Вы забыли подгрузить историю котировок. «ошибок рассогласования графика» не должно быть. Качество моделирования 52% — плохой результат. После подгрузки истории качество моделирования должно быть 90%. Это будет вполне хороший результат.

  3. Язык MQL - Урок 8 “Работа с индикаторами” | MQL для тебя 16.01.2010 в 23:54 3

    [...] Все условия выполнены. Теперь остается протестировать и оптимизировать наш советник Forex. Это мы уже изучали на Урок 7 «тестирование и оптимизация в MT4». [...]

  4. Андрей 19.02.2010 в 1:45 4

    После обновления архива котировок, если будет такая необходимость из стереть, то как это лучше сделать?

  5. palt 19.02.2010 в 14:05 5

    Рекомендую почитать вот этот пост: Как уменьшить размер папки с терминалом?

  6. Вопрос №6 «Как уменьшить размер папки с терминалом MT4?» | MQL для тебя 21.02.2010 в 10:27 6

    [...] для Metatrader 4 и разумеется приходится их постоянно тестировать и оптимизировать, соответственно за неделю каталог с установленным у [...]

  7. Андрей 14.03.2010 в 20:16 7

    Подскажите, как узнать когда необходимо оптимизировать советник форекс, как часто это нужно делать?

    На какие параметры нужно обратить внимание при оптимизации и вообще получении отчета на какие параметры нужно обращать внимание.

  8. palt 16.03.2010 в 20:41 8

    Самый верный признак что нужна оптимизация: советник приносил прибыль, а с некоторого момента перестал или приносит убытки. Но ждать такого момента не советую. Лучше оптимизировать раз в 1−2 месяца.

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

  9. alfur 11.06.2010 в 23:25 9

    Подскажите как тестировать индикатор? Открываю тестер там папка советника,как проверить скрипт и индикатор,или их закидывать в папку советника,запишите уроки по тестированию скриптов

    и индикаторов.И какие параметры проверять,как проверять.Поподробнее.Или подскажите где прочитать.В справке этого нет.Что за стратегия Hedge Hog

  10. g2g 21.06.2010 в 17:42 10

    Тестер выдает кучу ошибок Order send error:130 и Order send error:4107. Какая может быт этого причина и как ее изправить?

  11. Форекс Видео “Оптимизация МТС” | ФОРЕКС видео / видео FOREX 19.08.2010 в 20:03 11

    [...] советник нужно не за 1−2 последних месяца (смотрите пример такой оптимизации советника), а за период как минимум 6−12 месяцев (а лучше от 12 [...]

  12. palt 20.08.2010 в 9:29 12

    alfur

    Тестер в Metatrader предназначен для тестирования только советников. Да и зачем нужен индикатор в тестере? Он же не открывает ордера, а только отображает информацию. Поэтому его можно просто наложить на рабочий график и посмотреть. Скрипт же выполняет какое то действие один раз. Их я обычно тестирую на демосчете просто запуская на графике. Про стратегию Hedge Hog можете почитать здесь.

  13. palt 20.08.2010 в 10:55 13

    g2g

    Посмотрите описание ошибок

  14. mazani 25.08.2010 в 9:49 14

    Добрый день. Написал эксперта, хотел прогнать на тестере но у меня появляются ошибки типа unmatched data error, а затем на определенном этапе тест вообще зависает. Обработчик ошибок пишет «нет ошибки но результат неизвестен». Все делаю как в статье, историю подгружаю.

    зы. другие эксперты тестируются нормально

  15. palt 25.08.2010 в 17:03 15

    mazani

    Добрый день!

    unmatched data error — означает что в котировках есть ошибки. Подгрузите минутные котировки еще раз и обратите внимание чтобы был произведен пересчет всех таймфреймов. Иногда бывает что терминал с первого раза подгружает не все котировки и их приходится подгружать по несколько раз.

  16. Владимир 14.09.2010 в 0:11 16

    Робота писал под РЕНКО.

    Возник вопрос с тестированием. Т.к. РЕНКО график является нестандартным, и создается отдельным экспертом, и по сути является офф-лайновым, но он обновляется с каждым тиком.

    Можно ли его как-то прокрутить через тестер стратегий, или придется смотреть за работой робота только в реал-тайме?

  17. palt 14.09.2010 в 11:07 17

    Владимир

    В тестере можно выбирать только стандартные таймфреймы. Но тестер можно обмануть. Смысл в том, чтобы подсунуть тестеру вместо стандартного таймфрейма необходимый нам. Для этого необходимо отключиться от интернета (чтобы терминал не подкачивал стандартные котировки), очистить папки C:\Program Files\\history\...\*.hst — истории котировок и положить вместо стандартных котировок (например для EURUSD часовик: EURUSD60.hst) наш нестандартный график переименовав его. После этого тестер будет использовать наш таймфрейм вместо стандартного.

  18. Ратмир 10.10.2010 в 23:05 18

    Всем привет!

    Недавно начал изучать MQL 🙂

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

    Например при тестировании на М1 некоторым индикаторам в советнике (например MACD и Awesome Oscillator) нужны данные со старших таймфреймов (H1, D1 и т.д.). Можно ли как-нибудь обойти этот недостаток?

  19. palt 12.10.2010 в 10:17 19

    Ратмир

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

  20. Ратмир 12.10.2010 в 18:15 20

    Понятно... Это если на реале или на демо... А при тестировании на истории в тестере стратегий это будет работать?

    Допустим мы тестируем эксперт в тестере на валюте «EURUSD» ТФ «М5». Индикатор с параметрами

    iAC(«EURGBP»,PERIOD_M1,1)

    сможет извлечь данные с исторического графика другого таймфрейма и совсем другой валютной пары?

  21. palt 16.10.2010 в 20:38 21

    Ратмир

    К сожалению тестер в MT4 не мультивалютный. Он может работать только с 1 валютой (которую ему указали). А вот значения может извлекать с любого таймфрейма (при модели тестирования «Все тики»).

  22. Ратмир 17.10.2010 в 1:25 22

    Александр, Спасибо, что ответили на мой глупый вопрос ))

    Не поверил на слово, сам только что еще раз проверил, оказывается так оно и есть ))

  23. Евгений 30.10.2010 в 21:10 23

    ...вы упоминали про то чтобы добавить фильтр, как это зделать и что за фильтр можно использовать?!

  24. palt 02.11.2010 в 16:03 24

    Евгений

    Фильтр — это дополнительное условие для открытия ордеров. А вот какой — это вопрос из вопросов. Если бы я знал на него ответ, то был бы уже милионером...

  25. Максим 16.06.2011 в 13:57 25

    Подскажите, почему при тестировании советника, даётся результат — 6 сделок и все с одной прибылью?

  26. Анатолий 01.07.2011 в 0:20 26

    Приветствую!

    Вы написали, что

    «А вот значения может извлекать с любого таймфрейма (при модели тестирования «Все тики»).»

    Разве при модели по ценам открытия или контрольные точки данные с других ТФ не извлекаются?

  27. Ratmir 24.07.2011 в 0:49 27

    Palt, не могли бы Вы подсказать, где можно было бы достать архивы котировок по фин. инструментам, скачивание которых не доступно с сервера метаквотс (через MT4). К примеру мне очень нужны минутки по Золоту с 2000-го года, а в терминале они только с 2010 года.

    P.S. Я как то писал вам по поводу систем управления капиталом в прошлом году, сейчас самостоятельно в том вопросе почти разобрался, не без вашей помощи конечно, спасибо Вам.

  28. palt 12.08.2011 в 9:50 28

    Максим

    Сложно сказать не зная что за советник и как он тестируется.

  29. palt 12.08.2011 в 9:59 29

    Анатолий

    Извлекаются. Только советнику передаваться будет не все, а в зависимости от модели тестирования.

  30. palt 12.08.2011 в 10:21 30

    Ratmir

    К сожалению не подскажу. Мне как то истории всегда хватало.

    P/S рад что смог помочь.


Оставьте отзыв


Другие публикации рубрики "MQL Школа":

  • В рубриках: MQL Школа

  • 
      Всего подписчиков:

    Рекомендуемый видеокурс форекс

    Рекомендуемые Советники Форекс для MetaTrader 4