Анализ результатов тестов и оптимизации в тестере стратегий MetaTrader 5 - страница 5

 
Anatoli Kazharski:

То же самое, что делается сейчас. Подгружать символы во время процесса тестирования.

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

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

Ok.

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

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

Лично Вам не нравится терять время на "лишнее" применение тиков к истории. Остальным сильно не понравится терять гораздо большее время на повторной распаковке и подготовке данных.

Ок, ответите Вы. Почему бы, пока нету запроса не применять тики "лишних" инструментов? "Хороший вопрос"(ц) А к этому моменту, моменту запроса, надо построить историю, (да ещё чтобы тики были, так как кто-то их тоже может запрашивать). Потеря времени будет ещё большей, чем если бы мы постепенно выстраивали исорию (как и выстраиваем сейчас).

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

 
Согласен со Славой - пример сферический.
 
Slava:

Ok.

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

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

Лично Вам не нравится терять время на "лишнее" применение тиков к истории. Остальным сильно не понравится терять гораздо большее время на повторной распаковке и подготовке данных.

Ок, ответите Вы. Почему бы, пока нету запроса не применять тики "лишних" инструментов? "Хороший вопрос"(ц) А к этому моменту, моменту запроса, надо построить историю, (да ещё чтобы тики были, так как кто-то их тоже может запрашивать). Потеря времени будет ещё большей, чем если бы мы постепенно выстраивали исорию (как и выстраиваем сейчас).

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

Я на самом деле не настаиваю. Можно было сразу начать с этого пояснения. Если Вам точно известно, что Ваш вариант наилучший, то можно сэкономить время не тратя его на обсуждение. Но нужно уточнение, если можно, так как не уверен, что был понят.

Всё это пояснение касается процесса оптимизации?

А если речь только о процессе одиночного теста? Зачем тики от GBPUSD и AUDUSD от предыдущих тестов, когда тестируется только EURUSD ?

Просто не вижу, в каком случае могут понадобиться тики других символов (GBPUSD и AUDUSD), когда однозначно нужен только один (EURUSD). Нужны какие-то конкретные примеры и цифры.

А если я перед этим тестировал одновременно 20 символов? Зачем тики от всех этих символов, если мне нужен сейчас тест только на одном? Чем больше символов использовалось в предыдущем одиночном тесте, тем больше времени займёт тест всего лишь на одном. Я ведь могу перейти на тесты символов совсем из другой группы символов. И данные из предыдущей группы символов мне совершенно сейчас не нужны.

А о каких временных затратах идёт речь (распаковка/подготовка)? Сколько времени занимает распаковка и подготовка данных? И насколько увеличивается время одиночного теста после мультисимвольного теста?

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

 
Anatoli Kazharski:
Не хватает галочки "Сбросить кеши".
 

1 символ: EURUSD

2018.01.29 19:30:33.875 Core 1  EURUSD,M5: 26169180 ticks, 74266 bars generated. Environment synchronized in 0:00:00.078. Test passed in 0:00:27.266 (including ticks preprocessing 0:00:01.282).
2018.01.29 19:30:33.875 Core 1  EURUSD,M5: total time from login to stop testing 0:00:27.344 (including 0:00:00.078 for history data synchronization)
2018.01.29 19:30:33.875 Core 1  837 Mb memory used including 8 Mb of history data, 512 Mb of tick data

//---

5 символов: EURUSD,GBPUSD,USDJPY,AUDUSD,USDCAD

2018.01.29 19:59:39.750 Core 1  EURUSD,M5: 26169180 ticks, 74266 bars generated. Environment synchronized in 0:00:00.078. Test passed in 0:11:52.156.
2018.01.29 19:59:39.750 Core 1  EURUSD,M5: total time from login to stop testing 0:11:52.234 (including 0:00:00.078 for history data synchronization)
2018.01.29 19:59:39.750 Core 1  130637614 total ticks for all symbols
2018.01.29 19:59:39.750 Core 1  AUDUSD: passed to tester 20717720 ticks
2018.01.29 19:59:39.750 Core 1  EURUSD: passed to tester 26169180 ticks
2018.01.29 19:59:39.750 Core 1  GBPUSD: passed to tester 27742039 ticks
2018.01.29 19:59:39.750 Core 1  USDCAD: passed to tester 23409978 ticks
2018.01.29 19:59:39.750 Core 1  USDJPY: passed to tester 32598697 ticks
2018.01.29 19:59:39.750 Core 1  1574 Mb memory used including 44 Mb of history data, 1088 Mb of cached tick data (total memory for tick data 2495 Mb)

//---

Теперь понадобилось снова провести тест на одном символе. 

1 символ: EURUSD

2018.01.29 20:04:25.737 Core 1  EURUSD,M5: 26169180 ticks, 74266 bars generated. Environment synchronized in 0:00:00.078. Test passed in 0:01:34.203.
2018.01.29 20:04:25.737 Core 1  EURUSD,M5: total time from login to stop testing 0:01:34.281 (including 0:00:00.078 for history data synchronization)
2018.01.29 20:04:25.737 Core 1  130637614 total ticks for all symbols
2018.01.29 20:04:25.737 Core 1  AUDUSD: passed to tester 20717720 ticks
2018.01.29 20:04:25.737 Core 1  EURUSD: passed to tester 26169180 ticks
2018.01.29 20:04:25.737 Core 1  GBPUSD: passed to tester 27742039 ticks
2018.01.29 20:04:25.737 Core 1  USDCAD: passed to tester 23409978 ticks
2018.01.29 20:04:25.737 Core 1  USDJPY: passed to tester 32598697 ticks
2018.01.29 20:04:25.737 Core 1  1288 Mb memory used including 44 Mb of history data, 1024 Mb of cached tick data (total memory for tick data 2495 Mb)

//---

Вот в этом случае, зачем здесь тики этих символов? Из-за этого лишнего груза время теста на одном символе увеличилось более, чем в 3 раза. Временной диапазон один год. А если мне понадобилось провести тест на 5 годах?

 
fxsaber:
Не хватает галочки "Сбросить кеши".
Может быть возможен вариант вообще без галочки. Просто его найти нужно.
 
fxsaber:
Не хватает галочки "Сбросить кеши".

Была у нас такая (аналогичная) галка в четвёрке. Убрали её. Так как было непонимание основной массы пользователей и много вопросов.

 
Slava:

Была у нас такая (аналогичная) галка в четвёрке. Убрали её. Так как было непонимание основной массы пользователей и много вопросов.

Всегда есть terminal.ini:)
 

Далее будет опубликовано три сообщения:

  1. Сколько длится один тест эксперта в тестере стратегий?
  2. Сколько длится оптимизация параметров на компьютере?
  3. Сколько длится оптимизация параметров в облаке?

Для тестов буду использовать своего эксперта. Вы можете провести такую же серию тестов и представить свои результаты. В моём случае за период 1 год получается несколько десятков тысяч сделок.


1. Сколько длится один тест эксперта в тестере стратегий?

В качестве примера приведём результаты тестов в режиме Только по ценам открытия (Open price only). Таймфрейм M5(пятиминутные данные). Тип счёта Hedge. Временной диапазон один год (2017.01.01 - 2018.01.01).

Символ: EURUSD

EURUSD,M5: 281877 ticks, 74300 bars generated. Test passed in 0:00:01.453.
282883 total ticks for all symbols
EURUSD: passed to tester 282883 ticks
466 Mb memory used including 8 Mb of history data, 64 Mb of tick data

По результатам теста выше видно, что за период одного года тест на одном символе длится 1-1.5 секунды.

Теперь попробуем провести тест валютной пары, в которой нет валюты счёта. Например, если у Вас счёт в долларах США (USD), то для теста возьмём символ, в котором нет USD. Например, EURCHF. Дело в том, что для корректных расчётов маржевых требований и прибыли в таком случае в тесте будут использоваться символы EURUSD и USDCHF, а это в свою очередь увеличит время теста.

Символ: EURCHF

EURCHF,M5: 281063 ticks, 74273 bars generated. Test passed in 0:00:01.860.
846826 total ticks for all symbols
EURCHF: passed to tester 282468 ticks
EURUSD: passed to tester 282883 ticks
USDCHF: passed to tester 281475 ticks
467 Mb memory used including 8 Mb of history data, 64 Mb of tick data

Как видно, тест для кросс-курсов будет приблизительно в два раза дольше. В данном случае тест занял 1.5-2 секунды. Теперь попробуем провести тест на нескольких символах.

Символы: EURUSD,GBPUSD,USDJPY

EURUSD,M5: 282881 ticks, 74300 bars generated. Environment synchronized in 0:00:00.031. Test passed in 0:00:07.172.
EURUSD,M5: total time from login to stop testing 0:00:07.203 (including 0:00:00.031 for history data synchronization)
853054 total ticks for all symbols
EURUSD: passed to tester 282883 ticks
GBPUSD: passed to tester 285067 ticks
USDJPY: passed to tester 285104 ticks
628 Mb memory used including 26 Mb of history data, 64 Mb of tick data

Символы: EURCHF,AUDCAD,AUDNZD

EURCHF,M5: 282465 ticks, 74273 bars generated. Environment synchronized in 0:00:00.031. Test passed in 0:00:12.109.
EURCHF,M5: total time from login to stop testing 0:00:12.140 (including 0:00:00.031 for history data synchronization)
2264405 total ticks for all symbols
AUDCAD: passed to tester 284995 ticks
AUDNZD: passed to tester 285398 ticks
AUDUSD: passed to tester 282069 ticks
EURCHF: passed to tester 282468 ticks
EURUSD: passed to tester 282883 ticks
NZDUSD: passed to tester 282153 ticks
USDCAD: passed to tester 282964 ticks
USDCHF: passed to tester 281475 ticks
854 Mb memory used including 26 Mb of history data, 192 Mb of tick data

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

Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - MetaTrader 5
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - MetaTrader 5
  • www.metatrader5.com
Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии (советники) перед началом использования их в реальной торговле. При тестировании советника происходит его однократная прогонка с начальными параметрами на исторических данных. При оптимизации торговая стратегия прогоняется несколько раз с различным набором параметров...
 

2. Сколько длится оптимизация параметров на компьютере?

Для примера попробуем оптимизировать параметры на данных у брокера Alpari на разных символах в режиме Только цены открытия (Open price only). Таймфрейм M5 (пятиминутные данные). Тип счёта Hedge. Временной диапазон один год (2017.01.01 - 2018.01.01).

Символ: EURUSD

result cache used 7953 times
genetic optimization finished on pass 15616 (of 504330836375520000)
optimization done in 28 minutes 56 seconds
local 7663 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)

Символ: EURCHF

result cache used 2507 times
genetic optimization finished on pass 8704 (of 504330836375520000)
optimization done in 32 minutes 50 seconds
local 6197 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)

Символы: EURUSD,GBPUSD,USDJPY

result cache used 9892 times
genetic optimization finished on pass 18176 (of 504330836375520000)
optimization done in 2 hours 15 minutes 03 seconds
local 8284 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)

Символы: EURCHF,AUDCAD,AUDNZD

result cache used 7281 times
genetic optimization finished on pass 13312 (of 504330836375520000)
optimization done in 3 hours 13 minutes 37 seconds
local 6031 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)

В ближайшем будущем терминал MetaTrader 5 будет обновлён и скорость тестирования и оптимизации будет проходить в разы быстрее. Возможно, что тогда появится возможность проводить оптимизацию даже в режиме Все тики. Кроме этого, пользоваться сервисом MQL5 Cloud Network станет выгодней, так как скорость оптимизации возрастёт.

Распределенные вычисления в сети MQL5 Cloud Network
Распределенные вычисления в сети MQL5 Cloud Network
  • cloud.mql5.com
Большую часть времени современные компьютеры простаивают и не используют всех возможностей процессора. Мы предлагаем задействовать их с пользой. Вы можете сдавать мощности вашего компьютера другим участникам нашей сети для выполнения разнообразных...
Причина обращения: