Cloud Network. Постепенное уменьшение количества агентов.

 

Всем привет!

Столкнулся с такой ситуацией при оптимизации. МТ5. Генетический алгоритм. Запускаю оптимизацию в облаке, без локалки и своих ресурсов. Программа подключается к Европе 2. Сначала работает около 450 агентов, но со временем это число начинает уменьшаться, к концу оптимизации дошло до 25 агентов. Оптимизация шла почти сутки, алгоритм сложный, оптимизировал валютную пару на 25-и годах, на часовых свечках.

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

P.S. Ну вот, ещё и результаты оптимизации отличаются от одиночного тестирования. Нашёл обсуждение этого на форуме, но там речь шла об МТ4.

 
Vladislav Matushkin:

Всем привет!

Столкнулся с такой ситуацией при оптимизации. МТ5. Генетический алгоритм. Запускаю оптимизацию в облаке, без локалки и своих ресурсов. Программа подключается к Европе 2. Сначала работает около 450 агентов, но со временем это число начинает уменьшаться, к концу оптимизации дошло до 25 агентов. Оптимизация шла почти сутки, алгоритм сложный, оптимизировал валютную пару на 25-и годах, на часовых свечках.

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

P.S. Ну вот, ещё и результаты оптимизации отличаются от одиночного тестирования. Нашёл обсуждение этого на форуме, но там речь шла об МТ4.

Почитайте про особенности генетического алгоритма.

Следующее поколение не начнёт рассчитываться, пока не закончится расчёт текущего поколения.

Сначала рассчитываются 2 поколения сразу - максимум 512 задач. Теоретический максимум третьего поколения - 256. Так как генетический алгоритм заточен на поиск лучших решений, то некоторые из уже рассчитанных задач попадают в следующее поколение. А так как они уже рассчитывались прежде, то не нужно тратить вычислительные ресурсы на повторный расчёт. То есть, от поколения к поколению количество уникальных задач уменьшается. Что Вы и заметили

 
Slava #:

Почитайте про особенности генетического алгоритма.

Следующее поколение не начнёт рассчитываться, пока не закончится расчёт текущего поколения.

Сначала рассчитываются 2 поколения сразу - максимум 512 задач. Теоретический максимум третьего поколения - 256. Так как генетический алгоритм заточен на поиск лучших решений, то некоторые из уже рассчитанных задач попадают в следующее поколение. А так как они уже рассчитывались прежде, то не нужно тратить вычислительные ресурсы на повторный расчёт. То есть, от поколения к поколению количество уникальных задач уменьшается. Что Вы и заметили

Большое спасибо за подробный ответ!

 
Vladislav Matushkin:

Всем привет!

P.S. Ну вот, ещё и результаты оптимизации отличаются от одиночного тестирования.

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

В этом случае нужно использовать

#property tester_everytick_calculate

Ещё более вероятной причиной отличия результатов могут стать неинициализированные переменные и/или не обнулённые массивы.

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

 
"Aleksandr Slavskii #:

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

В этом случае нужно использовать

Ещё более вероятной причиной отличия результатов могут стать неинициализированные переменные и/или не обнулённые массивы.

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

Спасибо за пояснение. Тестирование на М1 OHLC. На каждом тике все необходимые массивы обнуляются "ArrayInitialize({array}, NULL)". Есть глобальные массивы и переменные, которые должны хранить "прошлую память" и не обнуляться каждый раз, но через эти грабли я проходил и всё уже верифицировано, иначе бы алго делал дичь и просто сливал.

Вопрос пока открытый, период выбираю верный, параметры переносятся корректно, спред не нужно выставлять как-то особенно, как в МТ4, внешние файлы не использую, о которых не знают удалённые компы.

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