ТЕСТЕР СТРАТЕГИЙ. Расхождение результатов тестирования и оптимизации при одних и тех же входных параметрах. - страница 2

 
stringo: Вы уже как-то поднимали аналогичную тему https://www.mql5.com/ru/forum/132734
Да, действительно, 4 года назад поднимал, спасибо за напоминание, освежил в памяти, но это немного не то.
Во всяком случае, работы с графикой в этом советнике нет.

stringo: Существует некоторая разница между тестированием и оптимизацией.
Вы читали статью "Особенности и ограничения тестирования торговых стратегий в MetaTrader4"?
Да, читал, но ответа не нашел.

Тем не менее, я последовал Вашему совету и установил фиксированный спред 30 пунктов и во время оптимизации и во время тестирования. К сожалению, это не помогло снять проблему. Результаты тестирования по-прежнему не совпадают с результатами оптимизации на одном и том же наборе входных параметров по всем показателям (прибыль, кол-во сделок, просадка и др.)

Вынужден еще раз приложить файлы журнала, результаты оптимизации, результаты тестирования и set-файл.
Прошу прокомментировать эту ситуацию.
Файлы:
 
myzrov:
Да, действительно, 4 года назад поднимал, спасибо за напоминание, освежил в памяти, но это немного не то.
Во всяком случае, работы с графикой в этом советнике нет.

Да, читал, но ответа не нашел.

Тем не менее, я последовал Вашему совету и установил фиксированный спред 30 пунктов и во время оптимизации и во время тестирования. К сожалению, это не помогло снять проблему. Результаты тестирования по-прежнему не совпадают с результатами оптимизации на одном и том же наборе входных параметров по всем показателям (прибыль, кол-во сделок, просадка и др.)

Вынужден еще раз приложить файлы журнала, результаты оптимизации, результаты тестирования и set-файл.
Прошу прокомментировать эту ситуацию.


Проводите тестирование и оптимизацию всегда на открытии баров на М1, соответственно, применяя iOpen() вместо Open[], тогда будет совпадение! Не совпадает, потому что на старших ТФ в МТ4 бары в тестере не моделируются строго на основе М1, как в МТ5!
 
borilunad:
Проводите тестирование и оптимизацию всегда на открытии баров на М1, соответственно, применяя iOpen() вместо Open[], тогда будет совпадение!
Не совпадает, потому что на старших ТФ в МТ4 бары в тестере не моделируются строго на основе М1, как в МТ5!
А почему Вы рекомендуете использовать ТФ=M1, когда оптимизация и тестирование проводились на D1 и использовалась модель "По ценам открытия"?
И советник в свою очередь использует явный контроль открытия баров и ему не требуется никакое моделирование на основе M1.
 
vm55:
А почему Вы рекомендуете использовать ТФ=M1, когда оптимизация и тестирование проводились на D1 и использовалась модель "По ценам открытия"?
И советник в свою очередь использует явный контроль открытия баров и ему не требуется никакое моделирование на основе M1.
На D1 на открытии баров получите только тестерный грааль, т.к. High и Low меньших ТФ не моделируются, и будет всё в ажуре! Тогда тестируйте на D1, но на всех тиках! Но будет гораздо дольше!
 
myzrov:


Вынужден еще раз приложить файлы журнала, результаты оптимизации, результаты тестирования и set-файл.
Прошу прокомментировать эту ситуацию.


Без эксперта всё равно разобраться невозможно.
 
stringo: Без эксперта всё равно разобраться невозможно.
Требуется исходный код или исполняемый?
 
myzrov:
Требуется исходный код или исполняемый?

Лучше исходный.

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

 
stringo: Лучше исходный. В крайнем случае и исполняемый подойдёт - но тут разбираловка будет по вторичным половым признакам, то есть, косвенная

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

Виной всему оказались перечисления! В советнике объявлено довольно много разных перечислений. Не буду объяснять как и почему я на них вышел - сам не знаю, но факт остается фактом. Если в оптимизации участвуют данные перечислимого типа enum с явно присвоенными конкретными значениями, то где-то здесь и возникает ошибка в оптимизаторе. Происходит путаница между порядковым номером перечисления из списка значений (где нумерация начинается с 0) и конкретным значением, явно присвоенным идентификатору именованной константе.

Поясню на конкретном примере. Одно из перечислений в советнике было объявлено так

//+--------------------------------------------------------------------------------+
//| Перечисления паттернов (свечных моделей)
//+--------------------------------------------------------------------------------+
enum ENUM_PATTERN {
          PATTERN_HARAMI=1,  //  [1]   «ХАРАМИ»
          PATTERN_ENGULF=2, //  [2]  «ПОГЛОЩЕНИЕ»
          PATTERN_DOJI=3,    //  [3]  «DOJI-bar»
          PATTERN_PIN=4     //  [4]  «PIN-bar»
};

Соответственно среди входных параметров есть подлежащая оптимизации переменная PATTERN типа  ENUM_PATTERN.

input ENUM_PATTERN   PATTERN= PATTERN_HARAMI;  // Паттерн (свечная модель)

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

//+--------------------------------------------------------------------------------+
//| Перечисления паттернов (свечных моделей)
//+--------------------------------------------------------------------------------+
enum ENUM_PATTERN {
          PATTERN_HARAMI,  //   [1]  «ХАРАМИ»
          PATTERN_ENGULF,  //  [2]  «ПОГЛОЩЕНИЕ»
          PATTERN_DOJI,    //  [3]  «DOJI-bar»
          PATTERN_PIN     //  [4]  «PIN-bar»
};

Еще раз повторю, что пока у меня нет 100% уверенности, что причина расхождения найдена, однако идет 2-ой день тестирования и оптимизации - полет нормальный! К тому же не может не радовать и то обстоятельство, что до передачи советника дело не дошло... :)

 

Очень интересное наблюдение.

Проверим. Спасибо.

 
stringo:Очень интересное наблюдение. Проверим. Спасибо.

Интересно, чем закончилась проверка? Подтвердилась или нет гипотеза о расхождении результатов оптимизации и тестирования, если среди входных параметрах встречаются параметры перечислимого типа enum с явно присвоенными значениями?