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

 

Сейчас у запуска тестов на указанном примере есть системный оверхед около 1.5 секунды на старте для подготовки всех данных (авторизация и синхронизация расчетных данных). Дело в том, что агенты тестирования полностью независимы и отвязаны от терминала, что приводит к необходимости полной передачи и синхронизации всех используемых данных.

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

С каждым билдом мы уменьшаем это время, кешируя бОльшую часть данных прямо на агентах. Думаю, что скоро мы решим этот вопрос.

 
Urain:
GA от joo уже работает быстрее стандартного, а при переносе кода в CPP 10-й студией (адаптированной под многоядерные процы) ускорение ещё в 6 раз.

Это без рыночного окружения можно устроить кастомную скорострельную считалку на конкретную задачу.

Но вот при попытке сделать универсальный торговый движок с предоставлением по требованию любых мультивалютных потиковых данных с автоматическим расчетов профитов/лимитов и отчетами сразу же скорость упадет на 2-3-4 порядка.

 
Renat:

Сейчас у запуска тестов на указанном примере есть системный оверхед около 1.5 секунды на старте для подготовки всех данных (авторизация и синхронизация расчетных данных). Дело в том, что агенты тестирования полностью независимы и отвязаны от терминала, что приводит к необходимости полной передачи и синхронизации всех используемых данных.

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

С каждым билдом мы уменьшаем это время, кешируя бОльшую часть данных прямо на агентах. Думаю, что скоро мы решим этот вопрос.

Renat:

Это без рыночного окружения можно устроить кастомную скорострельную считалку на конкретную задачу.

Но вот при попытке сделать универсальный торговый движок с предоставлением по требованию любых мультивалютных потиковых данных с автоматическим расчетов профитов/лимитов и отчетами сразу же скорость упадет на 2-3-4 порядка.

Ренат, я ж не про то, что требуется время на подготовку рыночного окружения и другие неизбежные "тормоза", вот, на предыдущей странице писал:

Скорее всего, такая чудовищная разница связана с тем, что тестеру, кроме прямых вычислений ФФ, нужно писать логи, выводить информацию на экран, и т.д., то есть, присутствуют "вынужденные тормоза"

2010.11.28 17:38:30    Core 1    genetic pass (424, 98130899813578) returned result 48.16 in 2059 ms
2010.11.28 17:38:30    Core 2    genetic pass (426, 990006720) started
2010.11.28 17:38:30    Core 2    genetic pass (425, 56291461) returned result 26.67 in 2012 ms
2010.11.28 17:38:28    Core 2    genetic pass (425, 56291461) started
2010.11.28 17:38:28    Core 2    genetic pass (423, 1510001908) returned result 49.98 in 2028 ms
2010.11.28 17:38:28    Core 1    genetic pass (424, 98130899813578) started
2010.11.28 17:38:28    Core 1    genetic pass (422, 1668020166802) returned result 48.36 in 2013 ms
2010.11.28 17:38:26    Core 2    genetic pass (423, 1510001908) started
2010.11.28 17:38:26    Core 2    genetic pass (419, 99260769921339) returned result 49.22 in 1935 ms
2010.11.28 17:38:26    Core 1    genetic pass (422, 1668020166802) started
2010.11.28 17:38:26    Core 1    genetic pass (418, 32073563420604) returned result 26.13 in 1934 ms
2010.11.28 17:38:24    Tester    genetic pass (421, 730000073) found in cache with result 50.00
2010.11.28 17:38:24    Tester    genetic pass (420, 2080000208) found in cache with result 50.00
2010.11.28 17:38:24    Core 2    genetic pass (419, 99260769921339) started
2010.11.28 17:38:24    Core 2    genetic pass (417, 99249619924961) returned result 49.26 in 2059 ms
2010.11.28 17:38:24    Core 1    genetic pass (418, 32073563420604) started
2010.11.28 17:38:24    Core 1    genetic pass (416, 2479846771) returned result 48.49 in 2309 ms
2010.11.28 17:38:22    Core 2    genetic pass (417, 99249619924961) started

То есть, на расчет голой ФФ уходит больше 2-х секунд, и это при том, что вообще нет никакого обращения к рыночному окружению.

Оптимизатор такую простую задачу, как f(x1,x2)=x1*x1+x2*x2 решает где то на 500-м "пасе" и продолжает перебирать варианты, ведь он определил, что нужно посчитать больше 1000 вариантов.

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

 
Renat:

Это без рыночного окружения можно устроить кастомную скорострельную считалку на конкретную задачу.

Но вот при попытке сделать универсальный торговый движок с предоставлением по требованию любых мультивалютных потиковых данных с автоматическим расчетов профитов/лимитов и отчетами сразу же скорость упадет на 2-3-4 порядка.

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

Мы тут на mql5 крутим алгоритмы по поиску 3000 параметров и это не предел, ну конечно не в двоичной кодировке а в непрерывной плоскости.

А у вас в руках всё ж СРР.

Пробовал делать в двоичной кодировке генов, но ГА в таком исполнении на mql5 проигрывает. Непрерывный поиск хорош тем что сам уменьшает шаг при схождении. Плюс не нужны ресурсы по кодированию/раскодированию. Ну в общем нужны корректные тесты, пока рано что то говорить однозначно.

 
Генетический оптимизатор возможно сделаем более настраиваемым + уменьшим до минимума системный оверхед.
 
Renat:
Генетический оптимизатор возможно сделаем более настраиваемым + уменьшим до минимума системный оверхед.

Большое спасибо. Это на самом деле очень важно, более важно, чем может показаться многим.

И, надеюсь, что про "Порог 64" мы тоже когда нибудь забудем.

 

В новом 366 билде (выйдет в понедельник) мы уменьшили системный оверхед до минимальных значений.

Теперь вышеприведенный эксперт в генетике тратит не 2 секунды на проход, а от 200 до 300 мс.

 
joo:

Большое спасибо. Это на самом деле очень важно, более важно, чем может показаться многим.

И, надеюсь, что про "Порог 64" мы тоже когда нибудь забудем.

Забудь прямо сейчас, при 4-х параметрах с точностью до 8 знака тестер выдаёт предупреждение что размер перебора превысил длинну long.

Так что для нужд отличных от тестирования советников пишите пользовательский оптимизатор.

А для оптимизации советников 64 параметра вполне хватает.

 

Мда, почитал ветку, где только таких советников берут с таким количеством параметров:)

 
marker:

Мда, почитал ветку, где только таких советников берут с таким количеством параметров:)

в некоторых стандартных советниках МТ и то не хватает количество переборов.