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

 

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

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

input double   x1=0.0;
input double   x2=0.0;
double OnTester()
  {
   return
   (
    pow(cos((double)(2*x1*x1))-0.11e1,0.2e1)+
    pow(sin(0.5e0 *(double) x1)-0.12e1,0.2e1) -
    pow(cos((double)(2*x2*x2))-0.11e1,0.2e1)+
    pow(sin(0.5e0 *(double) x2)-0.12e1,0.2e1)
    );
  }

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

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

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

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

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



Общий итог: MetaTrader 5 и сеть агентов можно использовать для массивных математических расчетов.

 
Renat:

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

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

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

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

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

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

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

Общий итог: MetaTrader 5 и сеть агентов можно использовать для массивных математических расчетов.

Это очень хороший результат. Теперь действительно оптимизатор более-менее подходит для решения задач оптимизации (и торговых и не связанных с торговлей напрямую). Ещё лучше результаты будут, если количество проходов снизится до 2-3тыс конкретно для этой задачи при настройках ГА оптимизатора по умолчанию, но для этого нужно вывести настройки ГА для доступа пользователю (появится возможность, при желании пользователя, снизить количество проходов до 500-900).

Остается проблема, связанная с ограничением на пространство поиска. Соответствующее предложение по оптимизатору оформил в сервисдеске.

 
joo:

Это очень хороший результат. Теперь действительно оптимизатор более-менее подходит для решения задач оптимизации (и торговых и не связанных с торговлей напрямую). Ещё лучше результаты будут, если количество проходов снизится до 2-3тыс конкретно для этой задачи при настройках ГА оптимизатора по умолчанию, но для этого нужно вывести настройки ГА для доступа пользователю (появится возможность, при желании пользователя, снизить количество проходов до 500-900).

Остается проблема, связанная с ограничением на пространство поиска. Соответствующее предложение по оптимизатору оформил в сервисдеске.

И решение этой проблемы в первую очередь связано с вот этой проблемой:

если переполнение проходов оптимизации происходит уже на 4-х параметрах, то разговор об увеличении количества параметров больше чем разрешено теперь(64) пока не уместен.

 
Urain:

И решение этой проблемы в первую очередь связано с вот этой проблемой:

если переполнение проходов оптимизации происходит уже на 4-х параметрах, то разговор об увеличении количества параметров больше чем разрешено теперь(64) пока не уместен.

Разумеется. Грубо, пространство поиска равно P=n*step, где n-количество оптимизируемых параметров, а step-шаг параметра. При этом, пространство P должно быть меньше пространства Pmax (максимально возможное пространство поиска, ограниченное особенностями двоичного кодирования хромосомы). Поэтому, одним из ограничений, искусственно введенных (ведь можно, например сделать ограничение на 10000 параметров, но тогда шаг окажется больше, чем необходимо для решения большинства задач оптимизации), что бы P не переваливало за Pmax, было введено ограничение на n.

Мысли по этому поводу озвучены в предложении по оптимизатору в сервисдеске.


PS С ростом сетей удаленных агентов проблема с большим количеством прогонов сходит на нет. Но, конечно, только если будут сняты ограничения двоичного кодирования хромосом (читаем - переход на кодирование хромосомы вещественными числами).

 
joo:

Разумеется. Грубо, пространство поиска равно P=n*step, где n-количество оптимизируемых параметров, а step-шаг параметра. При этом, пространство P должно быть меньше пространства Pmax (максимально возможное пространство поиска, ограниченное особенностями двоичного кодирования хромосомы). Поэтому, одним из ограничений, искусственно введенных (ведь можно, например сделать ограничение на 10000 параметров, но тогда шаг окажется больше, чем необходимо для решения большинства задач оптимизации), что бы P не переваливало за Pmax, было введено ограничение на n.

Мысли по этому поводу озвучены в предложении по оптимизатору в сервисдеске.


PS С ростом сетей удаленных агентов проблема с большим количеством прогонов сходит на нет. Но, конечно, только если будут сняты ограничения двоичного кодирования хромосом (читаем - переход на кодирование хромосомы вещественными числами).

Немного не так, правильно количество вариантов считается так: P=step_0*step_1*...*step_n

что при равенстве размера шага выливается в P=step^n

 
Urain:

Немного не так, правильно количество вариантов считается так: P=step_0*step_1*...*step_n

что при равенстве размера шага выливается в P=step^n

Ну да, ты прав, я ж говорю - грубо, что бы было понятнее и нагляднее что от чего зависит.
 
Renat:

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

Фантастика! Эх, сколько времени было потрачено летом зря на оптимизацию...

По порядку. Прогнал тест от joo на текущем билде и на 319-ом билде (02 Sep 2010). Результаты:

2010.12.29 15:49:18 Tester optimization passed in 2 minutes 41 seconds
2010.12.29 15:49:18 Tester genetic optimization finished on pass 15360 (of 100000020000001)
2010.12.29 15:49:18 Tester result cache was used 7265 times
2010.12.29 15:49:13 Tester genetics is over
2010.12.29 17:10:59 Tester optimization passed in 1 hours 17 minutes 34 seconds
2010.12.29 17:10:59 Tester genetic optimization finished on pass 18176 (of 100000020000001)
2010.12.29 17:10:59 Tester result cache was used 10582 times
2010.12.29 17:10:52 Tester genetics is over

 

Не знаю даже, поздравлять или благодарить. Спасибо! 

 
Urain:

И решение этой проблемы в первую очередь связано с вот этой проблемой:

если переполнение проходов оптимизации происходит уже на 4-х параметрах, то разговор об увеличении количества параметров больше чем разрешено теперь(64) пока не уместен.

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

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

 
Yedelkin:

Фантастика! Эх, сколько времени было потрачено летом зря на оптимизацию...

По порядку. Прогнал тест от joo на текущем билде и на 319-ом билде (02 Sep 2010). Результаты:

2010.12.29 15:49:18 Tester optimization passed in 2 minutes 41 seconds
2010.12.29 15:49:18 Tester genetic optimization finished on pass 15360 (of 100000020000001)
2010.12.29 15:49:18 Tester result cache was used 7265 times
2010.12.29 15:49:13 Tester genetics is over
2010.12.29 17:10:59 Tester optimization passed in 1 hours 17 minutes 34 seconds
2010.12.29 17:10:59 Tester genetic optimization finished on pass 18176 (of 100000020000001)
2010.12.29 17:10:59 Tester result cache was used 10582 times
2010.12.29 17:10:52 Tester genetics is over

 

Не знаю даже, поздравлять или благодарить. Спасибо! 

Обратите внимание, что мы сократили системный оверхед на фазах "синхронизация/передача первоначальных данных с терминала агенту и получение результатов от агента", что дало экономию 1.5-2 секунды на каждом запуске. Самого ускорения расчетов в языке не произошло.

То есть, самый серьезный эффект это дает на скорострельных просчетах, где расчет занимает близкое к нулю время. Для массивных вычислений экономия не так сильно проявляется. Хотя экономия в 2 секунды на 10 000 запусков дает 20 000 сек = 333 минуты = 5.5 часов.

 
Renat:
Не влияет.

А я вот заметил что влияет. Прогонял советника в будни и прогнал с расширенным спредом сейчас, результат довольно разный, спред сейчас на евробаке около 4 пунктов (четырехзнак). Значит в мт5 тоже отсалось "залипание" спреда на выходных. Следовательно, не стоит оптить в выходные, так как оптимизация будет не корректной. Я даже визуальо это вижу в мт4, стоит советник на оптимизации с того понедельника, кривая результатов с выходных пошла вниз, это говорит о том что спред влияет на результаты оптимизации, они стали хуже.

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