Как ускорить оптимизация советника в мт5 - страница 3

 

Кэш отключен (мешает фреймам).

OHLC M1, 2.5 года, 14 проходов:

Пустой советник:

2020.01.03 20:33:45.401 Statistics shortest pass 0:00:00.842, longest pass 0:00:02.585, average pass 0:00:01.532

Мой (iATR M1 + iSAR H1 + iSAR H3):

2020.01.03 20:41:38.592 Statistics shortest pass 0:00:02.602, longest pass 0:00:07.339, average pass 0:00:04.536


Я вообще-то не для того писал, чтобы хвалиться или доказывать что-то. Просто хотел сказать, что нет предела оптимизации кода (как я говорил, свой код за год оптимизировал в десятки раз). У меня ещё грязный код, всего не успеть. Работы ещё много.

Да и язык разработчики ускоряют постепенно.

Конечно, если использовать сложные и/или плохо написанные индикаторы (тем более внешние), постоянно обращаться к дорогим системным функциям и серверу, пересчитывать каждый раз то, что можно заранее посчитать при инициализации или раз на бар (M1, M15, H1) где применимо, не стесняться строковых операций, не использовать OnTradeTransaction, и т.д. и пр., тады ой.

 

Вот не надо про внешние индикаторы такую ерунду утверждать. Никогда не сделаете в советнике сложный анализ так быстро, как в индикаторе, и так просто.

Да и очень интересно, что это за функции такие функции, которые к серверу обращаются? И интересно, как строковые функции могут повысить скорость?

Оптимизация кода хороша, пока она советника в игрушку для тестера не превращает.

 

Скорость тестирования или оптимизации зависит от режима тестирования, от валютной пары, а также от брокера. У некоторых брокеров количество тиков отличаются от 4-5 раз.

Приведу пример тестирования на реальных тиках за 2019 год. Количество тиков примерно 25 млн.

Робот не сложный, обрабатывает каждый тик.

Одиночный тест проходит за 15 сек. Конечно не считая скачивание тиков, если это в первый раз.

А вот виртуальное тестирование того же робота проходит за 0.93 сек. Конечно работы не закончены, надо еще добавить некоторые  формулы.

На выходе выдает только прибыль, количество сделок, максимальную просадку по балансу и по средствам.

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

 
Petros Shatakhtsyan:

...

А еще от скорости компа зависит)) Как это ни удивительно.

 
Dmitry Fedoseev:

Вот не надо про внешние индикаторы такую ерунду утверждать. Никогда не сделаете в советнике сложный анализ так быстро, как в индикаторе, и так просто.

Особенно скучаю по слову "бред" ))

Предпочитаю переносить код индикаторов в советник. Это работает быстрее. Единственное преимущество внешних индикаторов - визуализация. Но что мешает использовать оба варианта, для оптимизации и для анализа?

 
Edgar Akhmadeev:

Особенно скучаю по слову "бред" ))

Предпочитаю переносить код индикаторов в советник. Это работает быстрее. Единственное преимущество внешних индикаторов - визуализация. Но что мешает использовать оба варианта, для оптимизации и для анализа?

И в сколько быстрее? В 1,3 раза? Кроме того, в эксперте отсутствуют средства контроля необходимости полного пересчета индикатора при подгрузке данных. Поэтому в реале это все может развалиться.

 
Petros Shatakhtsyan:

Скорость тестирования или оптимизации зависит от режима тестирования, от валютной пары, а также от брокера. У некоторых брокеров количество тиков отличаются от 4-5 раз.

Приведу пример тестирования на реальных тиках за 2019 год. Количество тиков примерно 25 млн.

Робот не сложный, обрабатывает каждый тик.

Одиночный тест проходит за 15 сек. Конечно не считая скачивание тиков, если это в первый раз.

А вот виртуальное тестирование того же робота проходит за 0.93 сек. Конечно работы не закончены, надо еще добавить некоторые  формулы.

На выходе выдает только прибыль, количество сделок, максимальную просадку по балансу и по средствам.

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

Скорость тестирования по тикам больше всего зависит от дисковой подсистемы, потому что при тестировании за несколько лет создаются многогигабайтные временные файлы, причём для каждого агента свои. Нужно много памяти и диск SSD. А лучше очень много памяти для виртуального диска. Простота и эффективность советника и плотность тиков имеет мало значения.

MQ обещали оптимизировать работу с историей по тикам и объединить файлы всех агентов ещё летом. Потом обещали в феврале заняться, если мне не изменяет память.

 
Dmitry Fedoseev:

И в сколько быстрее? В 1,3 раза? Кроме того, в эксперте отсутствуют средства контроля необходимости полного пересчета индикатора при подгрузке данных. Поэтому в реале это все может развалиться.

А это правильно - использовать один и тот же код для тестера и для реала (где много лишнего и ненужного для тестера, и тормозящего оптимизацию)?

У меня условная компиляция и тщательная оптимизация кода для тестера и тщательная обработка ошибок и разных ситуаций для реала.

 
Edgar Akhmadeev:

А это правильно - использовать один и тот же код для тестера и для реала (где много лишнего и ненужного для тестера, и тормозящего оптимизацию)?

У меня условная компиляция и тщательная оптимизация кода для тестера и тщательная обработка ошибок и разных ситуаций для реала.

Не волнуйтесь Вы так. 

 
Dmitry Fedoseev:

 И интересно, как строковые функции могут повысить скорость?

Могут. 

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