Справочник MQL4

Особенности работы программ в тестере стратегий

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

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

Ограничения работы функций в тестере торговых стратегий

Глобальные переменные клиентского терминала

Моделирование времени в тестере

Графические объекты при тестировании

Обработка событий в тестере

 

Ограничения работы функций в тестере торговых стратегий

Существуют ограничения работы некоторых функций в тестере стратегий клиентского терминала, их вызов приведет к ошибке 4059 (Функция не разрешена в тестовом режиме).

Функция Sleep()

Функция Sleep() в тестере стратегий не вызывает никаких задержек.

Функции Print() и PrintFormat()

Для увеличения быстродействия при оптимизации параметров советника функции Print() и PrintFormat() не выполняются. Исключением является использование этих функций внутри обработчика OnInit(). Это позволяет облегчить поиск причин ошибок при их возникновении.

Функции Alert(), MessageBox(), PlaySound(), SendFTP, SendMail(), SendNotification(), WebRequest()

Функции взаимодействия с "внешним миром" Alert(), MessageBox(), PlaySound(), SendFTP(), SendMail(), SendNotification() и WebRequest() в тестере стратегий не выполняются.

The OrderSend(), OrderModify(), OrderDelete(), OrderClose(), OrderCloseBy() Functions

Торговые операции по инструментам, отличным от тестируемого символа, не производятся.

 

Глобальные переменные клиентского терминала

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

 

Моделирование времени в тестере

При тестировании производится моделирование времени в соответствии с историческими данными. Локальное время TimeLocal() всегда равно серверному времени TimeCurrent(). В свою очередь, серверное время всегда равно времени, соответствующему времени GMT - TimeGMT(). Таким образом, все эти функции при тестировании выдают одно и то же время.

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

 

Графические объекты при тестировании

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

 

Обработка событий в тестере

В тестере стратегий реализована обработка следующих событий: инициализация советника перед одиночным прогоном OnInit(), деинициализация советника после одиночного прогона OnDeInit(), моделирование нового тика OnTick().

Кроме того, по окончании тестирования эксперта на исторических данных перед вызовом функции деинициализации OnDeInit() генерируется событие Tester, обработка которого осуществляется в функции OnTester(). Значение, возвращаемое данной функцией, используется в качестве критерия Custom max при оптимизации входных параметров.

Обработка событий Timer и ChartEvent в тестере стратегий не поддерживается.

 

Ограничения торговых операций

Торговые операции по инструментам, отличным от тестируемого символа, не производятся.