Кто прав? Тестер и оптимизатор не могут придти к общему мнению... / Who is right? Tester and Optimizer can't reach a consensus... - страница 3

 

Ну, что ж, если предположений больше нет, тогда остается произнести крылатую фразу Семен Семеныча из к/ф "Бриллиантовая рука":

— Нет? Будем искать.

 
myzrov:

Нет, только анализ цен нескольких последних свечей, типа High[1], Low[2] и т.п., в этом советнике я не использую никаких индикаторов. Графика работает только на выход, хотя, если более точно отвечать на вопрос, то процедура ManualTrailingStopLossLines() принимает на вход текущие координаты линий стоп-лоссов на покупку и продажу и модифицирует по ним ордера. Т.е. получается, что советник может принимать решение в зависимости от графики! Но во время оптимизации и тестирования естественно нет и не может быть никакого ручного вмешательства! Ручное вмешательство возможно только в реале.


Похоже проблема тут. При оптимизации все лишнее опускается - sleep не выполняется, ничего не рисуется и т.д. Конечно, координаты объектов запоминаются, но код уже другой - и наверно не тестирован. IMHO похоже на баг терминала. Стучите на сервисдеск.
 
Itso:

Похоже проблема тут. При оптимизации все лишнее опускается - sleep не выполняется, ничего не рисуется и т.д. Конечно, координаты объектов запоминаются, но код уже другой - и наверно не тестирован. IMHO похоже на баг терминала. Стучите на сервисдеск.
Дело в том, что с предыдущими версиями этого советников такого не наблюдалось, они и сейчас показывают согласованные результаты тестера и оптимизатора. Хотя... может причина действительно как-то связана во взаимодействии с графикой, т.к. процедуру ручного подтягивания стоп-лоссов ManualTrailingStopLossLines() я включил только в эту последнюю версии советника. Но повторяю, что во время оптимизации и тестирования нет (и не может быть!) никакого ручного вмешательства, никто же не перемещает линии на графике во время тестирования или оптимизации. Ручное вмешательство возможно только в онлайн торговле - на реале или на демо, не важно.

Функцию sleep() не использую, а вот насчет того, что ничего не рисуется, то во время оптимизации - да, но при тестировании - я включаю визуализацию, и тестер прекрасно рисует и стрелочки и линии, а также перемещает их на графике согласно указанию советника... Попробую-ка я сначала отключить процедуру ручного подтягивания стоп-лоссов ManualTrailingStopLossLines() и посмотрю, что получиться. Если и это не поможет, то тогда уж буду стучаться в сервисдеск.

 
myzrov:
Но повторяю, что во время оптимизации и тестирования нет (и не может быть!) никакого ручного вмешательства
Да, уже все поняли :), но логика может быть построена таким образом, что считает отсутствие графики критической ошибкой и тупо затыкается -- как вариант.
 
myzrov:

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

...при тестировании - я включаю визуализацию, и тестер прекрасно рисует и стрелочки и линии, а также перемещает их на графике согласно указанию советника...

Попробую-ка я сначала отключить процедуру ручного подтягивания стоп-лоссов ManualTrailingStopLossLines() и посмотрю, что получиться. Если и это не поможет, то тогда уж буду стучаться в сервисдеск.

Логика уже появилась. Можно еще вопрос: есть разница между ручными прогонами с визуализацией и без?
 
granit77:
Логика уже появилась. Можно еще вопрос: есть разница между ручными прогонами с визуализацией и без?

Нет, визуализация не влияет на результаты тестирования.
 

Проблема рассогласования результатов тестера и оптимизатора исчезла после того как я по совету TheXpert отключил графику, а точнее убрал обращения к процедуре ручного подтягивания стоп-лоссов ManualTrailingStopLossLines(), если эксперт работает в режиме тестирования или оптимизации тестирования.

Технически это выгладит так:

// Отработать ручное вмешательство в трейлинг стоп-лоссов (перетаскивание линий стоп-лоссов на графике),
// если эксперт работает не в режиме тестирования или оптимизации тестирования
if (!IsTesting() && !IsOptimization()) ManualTrailingStopLossLines();

Похоже, что тестер вообще не интересуется координатами графических объектов в режиме оптимизации тестирования, и не сопровождает их. В общем-то и правильно делает, все равно эти объекты во время оптимизации никто не видит и уж тем более не перемещает :), а добавить условие к вызову процедуры - от разработчика не убудет!

Так что, тему закрываю. Всем откликнувшимся - спасибо и профитов!

Причина обращения: