Невизуальный режим тестирования vs визуальный

 

Доброго времени суток.

Имеется самописный индикатор, который методом DRAW_FILLING по определенным правилам рисует независимые зоны на покупку и продажу.

Написал простого эксперта, который получает данные от указанного индикатора и, если началась зона на покупку - открывает покупку (для зоны продажи аналогично). Т.е. в начале каждой зоны должен открываться ордер.

В режиме НЕвизуального тестирования в результате прогона эксперта визуально вижу, что в большинстве случаев работает как надо, НО:

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

2) в началах многих зон ордера не открываются, хотя должны

В то же время, в режиме ВИЗУАЛЬНОГО тестирования все отрабатывает четко, как и должно быть (ордера открываются в начале каждой зоны, никаких лишних ордеров нет).

Кто-нибудь сталкивался с таким? С чем это может быть связано?

 
satorifx:

Доброго времени суток.

Имеется самописный индикатор, который методом DRAW_FILLING по определенным правилам рисует независимые зоны на покупку и продажу.

Написал простого эксперта, который получает данные от указанного индикатора и, если началась зона на покупку - открывает покупку (для зоны продажи аналогично). Т.е. в начале каждой зоны должен открываться ордер.

В режиме НЕвизуального тестирования в результате прогона эксперта визуально вижу, что в большинстве случаев работает как надо, НО:

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

2) в началах многих зон ордера не открываются, хотя должны

В то же время, в режиме ВИЗУАЛЬНОГО тестирования все отрабатывает четко, как и должно быть (ордера открываются в начале каждой зоны, никаких лишних ордеров нет).

Кто-нибудь сталкивался с таким? С чем это может быть связано?

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

Если советник использует iCustom(), то попробуйте 

#property tester_everytick_calculate

если не помогает, то вызывайте CopyBuffer() вашего индикатора на каждом тике.


Так же возможно причина в этом:

Во время тестирования/оптимизации не осуществляется построение графических объектов. Таким образом, при обращении к свойствам созданного объекта во время тестирования/оптимизации эксперт получит нулевые значения.

Данное ограничение не распространяется на тестирование в визуальном режиме.

 
Aleksandr Slavskii #:

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

Если советник использует iCustom(), то попробуйте 

если не помогает, то вызывайте CopyBuffer() вашего индикатора на каждом тике.


Так же возможно причина в этом:

Во время тестирования/оптимизации не осуществляется построение графических объектов. Таким образом, при обращении к свойствам созданного объекта во время тестирования/оптимизации эксперт получит нулевые значения.

Данное ограничение не распространяется на тестирование в визуальном режиме.

Спасибо за информацию.

Но если честно, все равно не могу свести концы с концами. Хоть как-то изменить открываемые ордера удалось только после использования  CopyBuffer() на каждом тике и выборе в настройках прогона эксперта в опции "Моделирование" значения "Все тики". При этом некоторые места с неверными открытиями ордеров пофиксились, но такие же ошибочные открытия (или неоткрытия) появились в других местах.

Кстати, в коде эксперта я явно использую контроль открытия нового бара, т.е. вся обработка идет только по приходу нового бара. Вынес  CopyBuffer() индикатора за код, который контролирует открытие бара, т.е.  CopyBuffer() срабатывает якобы на каждом тике, но при этом, если в настройках прогона эксперта выбрать "Только цены открытия" - сам по себе метод OnTick эксперта срабатывает только по приходу нового бара. И вот здесь вопрос: если включить в код робота 

#property tester_everytick_calculate

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

 

Вопрос закрыт.

Изначальную проблему с синхронизацией сделок в визуальном и невизуальном режиме тестирования решил неожиданно: в индикаторе, от которого эксперт получает данные по зонам, отключил расчет на 0-м (текущем) баре. И сразу все выровнялось.

Не знаю, связано ли это конкретно с индикаторами, рисующими методом  DRAW_FILLING, или так со всеми, но пока так...