Оптимизация в Тестере стратегий - страница 16

 
Renat:

В последних билдах мы полностью избавились от системных оверхедов на запуске задач снизив их практически с 2000 мс до нуля.

Вот результаты запуска расчетной задачи, которую предложил joo:

Настройки (даты выставлены специально, чтобы не использовалась история чартов):

Перебираемые параметры:

Используемые агенты (4 локальных агента):

Результаты оптимизации:

Оптимизация прошла всего за 25 секунд, было произведено 18 432 прохода:

Возвращаясь к старой задаче по оптимизации тестера торговых стратегий.

Улучшения общего плана к 425 билду привели к:

  • снижению системного оверхеда на подготовке к проходам
  • добавлению явного режима "математические расчеты" в выборе типа моделирования, что упростили настройку

Очередные результаты на том же самом железе (4 локальных агента) и чистых кешах в 425 билде:

Tester	optimization passed in 0 minutes 07 seconds
Tester	genetic optimization finished on pass 19456 (of 100000020000001)
Tester	result cache was used 10124 times
Tester	genetics is over

По сравнению с изначально поднятым вопросом (оверхед был в 2 сек на проход), мы успешно решили проблему. Та же самая задача вместо 25 секунд стала считаться за 7 секунд.

Основой борьбы с системными оверхедами стало пакетирование задач. Теперь для каждого агента замеряется его скорость отработки и выдается пачка задач от 1 до 64 для расчетов. В результате пропорционально уменьшается время на подготовку тестов и получение результатов. Быстрые агенты получают больше задач и более крупными пакетами, чем медленные. Особенно большой эффект это дает для быстрых расчетных задач, где время полезных расчетов сравнимо со временем подготовки тестов и пересылки результатов.

Работа по оптимизации обслуживания агентов еще не закончена. Для эффективной работы удаленных агентов в MQL5 Cloud Network снижение расходов на обеспечение связи стоит главным вопросом.

 

Помогите разобраться!

Ниже приведенные блоки кода, прекрасно работают в терминале на демо счете, но при тестировании выдают сообщение об ошибке 4109.

if(!ChartGetDouble(0,CHART_PRICE_MAX,0,price_max))
 {
  printf(__FUNCTION__,": Не получены данные по максимальной цене. Ошибка: %g.",GetLastError());
 }

 Такая же ситуация происходит с

if(!ChartGetDouble(0,CHART_PRICE_MIN,0,price_min))
 {
  printf(__FUNCTION__,": Не получены данные по минимальной цене. Ошибка: %g.",GetLastError());
 }
 
slyusar:

Помогите разобраться!

Ниже приведенные блоки кода, прекрасно работают в терминале на демо счете, но при тестировании выдают сообщение об ошибке 4109.

 Такая же ситуация происходит с

Во время тестирования чарты и графические объекты не моделируются, так как это катастрофически снижает скорость тестирования.
 
Renat:
Во время тестирования чарты и графические объекты не моделируются, так как это катастрофически снижает скорость тестирования.
Понятно, спасибо. А существует какой-то выход из положения в подобной ситуации?
 
Renat:
Во время тестирования чарты и графические объекты не моделируются, так как это катастрофически снижает скорость тестирования.
я очень надеюсь, что такое моделирования с отсутствием графики будет только в режиме без "визуализации".
 
sergeev:
я очень надеюсь, что такое моделирования с отсутствием графики будет только в режиме без "визуализации".
Полностью поддерживаю, графика иногда очень нужна...
 
Renat:

Возвращаясь к старой задаче по оптимизации тестера торговых стратегий.

Улучшения общего плана к 425 билду привели к:

  • снижению системного оверхеда на подготовке к проходам
  • добавлению явного режима "математические расчеты" в выборе типа моделирования, что упростили настройку

Очередные результаты на том же самом железе (4 локальных агента) и чистых кешах в 425 билде:

По сравнению с изначально поднятым вопросом (оверхед был в 2 сек на проход), мы успешно решили проблему. Та же самая задача вместо 25 секунд стала считаться за 7 секунд.

Основой борьбы с системными оверхедами стало пакетирование задач. Теперь для каждого агента замеряется его скорость отработки и выдается пачка задач от 1 до 64 для расчетов. В результате пропорционально уменьшается время на подготовку тестов и получение результатов. Быстрые агенты получают больше задач и более крупными пакетами, чем медленные. Особенно большой эффект это дает для быстрых расчетных задач, где время полезных расчетов сравнимо со временем подготовки тестов и пересылки результатов.

Работа по оптимизации обслуживания агентов еще не закончена. Для эффективной работы удаленных агентов в MQL5 Cloud Network снижение расходов на обеспечение связи стоит главным вопросом.

Очень серьёзные изменения в сторону улучшения  - спасибо.

А как насчет ограничения на 64 параметра? Это единственный фактор, для меня по крайней мере, сдерживающий полноценное использование оптимизатора. А как хочется уже забыть про всякие заморочки и писать сразу для "реала", с тем, что бы можно было без изменений в коде оптимизировать в тестере.

 
С параметрами будем разбираться после запуска визуализатора тестирования.
 
joo:

Очень серьёзные изменения в сторону улучшения  - спасибо.

А как насчет ограничения на 64 параметра? Это единственный фактор, для меня по крайней мере, сдерживающий полноценное использование оптимизатора. А как хочется уже забыть про всякие заморочки и писать сразу для "реала", с тем, что бы можно было без изменений в коде оптимизировать в тестере.

Поддерживаю.
Renat:
С параметрами будем разбираться после запуска визуализатора тестирования.
Спасибо!  Будем ждать.
 
Renat:

Возвращаясь к старой задаче по оптимизации тестера торговых стратегий.

Очередные результаты на том же самом железе (4 локальных агента) и чистых кешах в 425 билде:

По сравнению с изначально поднятым вопросом (оверхед был в 2 сек на проход), мы успешно решили проблему. Та же самая задача вместо 25 секунд стала считаться за 7 секунд.

В очередном билде, который готовится к выпуску, мы проделали большой объем работ по оптимизации массовых расчетов математических задач. Системные оверхеды свели в ноль.

Теперь та же самая задача на то же самом железе (Intel Q9400, 4 локальных ядра) по расчету ~18 000 заданий занимает 1 секунду (в прошлый раз было 7 секунд, а до этого 25 секунд):

2011.04.04 20:12:34    Tester    optimization passed in 0 minutes 01 seconds
2011.04.04 20:12:34    Tester    genetic optimization finished on pass 18432 (of 1000000002000000001)
2011.04.04 20:12:34    Tester    result cache was used 9718 times
2011.04.04 20:12:34    Tester    genetics is over


Для сравнения могу показать сколько времени на том же железе та же математическая задача тратит на просчет 4 млн проходов (снизив шаг до 0.005 общее количество просчетов стало 4 млн, что позволяет запускать полный просчет):



2011.04.04 20:10:34    Tester    optimization passed in 0 minutes 46 seconds
2011.04.04 20:10:34    Tester    optimization finished, total passes 4004001


За 46 секунд происходит полный просчет 4 млн задач, в окне результатов оптимизации показываются все 4 миллиона строк с результатами, вся таблица мгновенно сортируется на любым полям, график оптимизации резво отрисовывает все 4 млн значений, 3D график рисует трехмерную поверхность от тех же самых результатов и крутит ее в разных ракурсах:

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