Ловим баги в тестере стратегий МТ4

Недавно мое внимание привлекли к багу в тестере МТ4. Баг состоит в том, что при оптимизации спред, который использует тестер, может отличаться от спреда при одиночном прогоне тестера и от того, что выставлено пользователем в настройках тестера. Баг актуален для текущей версии МТ4 1045

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

Как узнать какой спред советник использует во время оптимизации? Ведь вывод в журнал во время оптимизации не производится. С помощью глобальной переменной. Я написал простейший советник, который устанавливает глобальную переменную, которой присваивается значение спреда (можно скачать в конце статьи).

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

Давайте теперь сделаем прогон в тестере по тиковым котировкам, полученным как описано в недавней статье (https://www.argolab.net/o-testirovani.html). Выставляем спред в тестере, скажем, 75

делаем одиночный прогон и проверяем, что тестер действительно использовал тот спред, который мы установили

Хорошо. А теперь – не изменяя спред в настройках тестера — сделаем оптимизацию (в советнике для этой цели есть внешняя переменная, которая ни на что не влияет – только позволяет нам запустить оптимизацию).

И видим, что на этот раз тестер использовал значение спреда 35, хотя в настройках стоит 75

Откуда тестер взял значение 35? Из FXT файла. 35 – это значение спреда, зашитое при генерации FXT файла.

Да, нас не обманули, это баг.

Возникает ли он только при тестировании с качеством моделирования 99%? Не только.

Давайте выполним «обычное тестирование», с качеством моделирования 90%. Делаем одиночный прогон в тестере, проверяем спред – все нормально. Делаем оптимизацию, проверяем спред – все опять нормально. А теперь, внимание! Мы решаем повторить оптимизацию, но уже с другим спредом. И тут мы видим баг тестера. Тестер использует FXT файл, оставшийся от предыдущей оптимизации, в том FXT файле записано старое значение спреда и это старое значение спреда использовано в последней оптимизации. Что мы и видим на рисунке

Какие выводы?

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

Всем удачи и профитов!

Скачать check spread:

19.02.2017

Владимир aka loopsider

 

Метки: , ,
Опубликовано в Публикации




Советники ARGOLab
Последние статьи

Комментарии
E-Mail:
Форекс рейтинг . Форекс каталог