Вопросы по работе «MetaTrader 5 Strategy Tester» в режиме быстрой оптимизации (генетический алгоритм)

 

Почему при выборе быстрой оптимизации (генетический алгоритм) оптимизация продолжается и после достижения начальной поставленной цели в 10496 проходов? Это нормально? Следует ли прервать оптимизацию после выполнения прохода № 10496 или есть вероятность получения новых интересных результатов оптимизации?

После выполнения прохода № 10496 тестер стратегий добавляет еще некоторое кол-во проходов, рисует новую цель, достигнув которую, цель снова обновляется и т.д. Остановится ли этот процесс оптимизации и когда? Дело в том, что мне пока не удалось дождаться естественного окончания процесса оптимизации. Как только тестер стратегий сменит несколько раз цели по кол-ву проходов, терминал зависает.

На показанном ниже скрине видно, что было выполнено уже 12543 проходов из 14592, но процесс оптимизации не был завершен.


Прекращена работа программы 'MetaTrader 5 Client Terminal'

Если нажать на «Показать подробности проблемы», то можно увидеть следующее.
 

Имя сбойного приложения: terminal64.exe, версия: 5.0.0.1150, метка времени: 0x00c83800
Имя сбойного модуля: ntdll.dll, версия: 6.3.9600.17031, метка времени: 0x530895af
Код исключения: 0xc0000374
Смещение ошибки: 0x00000000000f8c9c
Идентификатор сбойного процесса: 0xc88
Время запуска сбойного приложения: 0x01d10136d2932c6b
Путь сбойного приложения: C:\Program Files\Alpari Limited MT5\terminal64.exe
Путь сбойного модуля: C:\Windows\SYSTEM32\ntdll.dll
Идентификатор отчета: 04957555-6e88-11e5-80b9-74d02b9e3a77
Полное имя сбойного пакета:
Код приложения, связанного со сбойным пакетом:


Прошу уважаемое сообщество помочь в локализации проблемы и ее устранении.

 

P.S. Знакомый сис. админ сказал, что код исключения 0xc0000374 напрямую связан с DEP и драйверами Nvidia. Но т.к. драйверов Nvidia на компьютере нет, то остается DEP, и порекомендовал убить DEP полностью.



 

Генетический тестер стратегий никогда не знает точно конца процесса улучшения результатов, а дает оценочное значение. Если целевые результаты продолжают улучшаться, то он добавляет еще проходов.

Особенно важно в режиме кастомного критерия оценки OnTester использовать правильную непротиворечивую и не "рваную" оценочную функцию. Зачастую неправильно выбранная оценочная функция сносит крышу генетическому оптимизатору из-за откровенно противоречивых значений.

Ошибка 0xc0000374 означает повреждения памяти. Пришлите своего эксперта и условия тестирования в сервисдеск, пожалуйста.

DEP отключать нельзя категорически - сейчас не 2005 год.

 
Renat Fatkhullin:

Генетический тестер стратегий никогда не знает точно конца процесса улучшения результатов, а дает оценочное значение. Если целевые результаты продолжают улучшаться, то он добавляет еще проходов.

А какой тогда толк в этом оценочном значении?  Ведь оно лишь вводит в заблуждение.  По идее, правильней было бы отображать вместо этого некий параметр, связанный с точностью получаемых результатов.  Например скорость улучшения результатов от поколения к поколению.  В начале тестирования это показатель будет максимальным, а в конце - равен нулю.   Таким образом у нас будет чёткая шкала:  видно где конец тестирования, и где мы находимся сейчас.

 

Готовы смотреть на результат приращения целевой функции в седьмом знаке после запятой вместо челевечного счетчика проходов?

 
Renat Fatkhullin:

Готовы смотреть на результат приращения целевой функции в седьмом знаке после запятой вместо челевечного счетчика проходов?

Так можно его привести к виду, удобному для восприятия, чтоб получился диапазон значений от 0 до 100.  В этом ведь и смысл прогресс-бара:  мониторить процент выполнения.  Поэтому счётчик проходов сюда точно не подходит.  Его можно просто отображать отдельно в виде числа

 
Alexey Navoykov:

Так можно его привести к виду, удобному для восприятия, чтоб получился диапазон значений от 0 до 100.  В этом ведь и смысл прогресс-бара:  мониторить процент выполнения.  Поэтому счётчик проходов сюда точно не подходит.  Его можно просто отображать отдельно в виде числа

Результат получится гораздо хуже, чем обычный и понимаемый счетчик. Крышу трейдерам будет рвать так, что получим 1000 вопросов за месяц вместо десяти за 10 лет как сейчас.

Не надо изобретать велосипеда там, где тема уже проработана давно.

 
Renat Fatkhullin:

Результат получится гораздо хуже, чем обычный и понимаемый счетчик. Крышу трейдерам будет рвать так, что получим 1000 вопросов за месяц вместо десяти за 10 лет как сейчас.

Не надо изобретать велосипеда там, где тема уже проработана давно.

В чём же проработана-то?  Если выше человек описал проблему.   Объясните, какой толк пользователю от вашего счётчика, если неизвестно когда он закончится?  Просто меняются некие циферки на экране, и что с того?
 
Alexey Navoykov:
В чём же проработана-то?  Если выше человек описал проблему.   Объясните, какой толк пользователю от вашего счётчика, если неизвестно когда он закончится?  Просто меняются некие циферки на экране, и что с того?

Вы сами с "проблемой" сталкивались?

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

Тема проработана в том, что мы за 10 лет самостоятельно написали две мощные системы генетического оптимизатора для MetaTrader 4 и MetaTrader 5. Включая использование MQL5 Cloud Network для ускорения оптимизатора.

 
Renat Fatkhullin:Генетический тестер стратегий никогда не знает точно конца процесса улучшения результатов, а дает оценочное значение. Если целевые результаты продолжают улучшаться, то он добавляет еще проходов. Особенно важно в режиме кастомного критерия оценки OnTester использовать правильную непротиворечивую и не "рваную" оценочную функцию. Зачастую неправильно выбранная оценочная функция сносит крышу генетическому оптимизатору из-за откровенно противоречивых значений. Ошибка 0xc0000374 означает повреждения памяти. Пришлите своего эксперта и условия тестирования в сервисдеск, пожалуйста. DEP отключать нельзя категорически - сейчас не 2005 год.
Спасибо за ответ. Мы подуем над предложением прислать в сервисдеск своего эксперта и условия тестирования. Но вот дополнительная информация к размышлению.

Советник в режиме быстрой оптимизации (на основе генетического алгоритма) не использует кастомный критерий оптимизации и как следствие внутри советника отсутствует обработчик события OnTester().
Советник использует штатный критерий оптимизации "Balance max" (максимальное значение баланса).

И еще, оптимизация проводилась на разных компьютерах и разных ОС (Windows 7, Windows 10 и  Windows 12), использовались различные комбинации агентов.
Только Local Network Farm и совместно с MQL5 Cloud Network. Local Network Farm состояла из компьютеров внутренней сети (внутренних IP-адреса) и удаленных компьютеров (внешние IP-адреса).

Но результат пока один - оптимизация отрабатывает начальную цель в 10496 проходов, продолжает работать дальше и на каком-то шаге все заканчивается крахом.

Прекращена работа программы MT5

 
Renat FatkhullinОшибка 0xc0000374 означает повреждения памяти. DEP отключать нельзя категорически - сейчас не 2005 год.
Понимая, что идем на определенный риск, мы все-таки прислушались к совету знакомого сис.админа и отключили DEP на головном компьютере, который раздает задания. В результате наконец-то, после 3-х недельных попыток, постоянных зависаний терминала, удалось дождаться естественного завершения процесса оптимизации примерно после 20 тыс. проходов. Получается, что при включенном DEP получаем ошибку 0xc0000374, а при выключенном DEP - никакой ошибки нет.
Как же все-таки правильно интерпретировать эту ошибку - ошибка памяти или ошибка включенного DEP?