Альтернативная оптимизация ТС - страница 6

 
fxsaber:
Проще ничего не делать.
велосипед (MT5) уже придумали
 

В идее топикстартера есть резон. Он в том, что для того, чтобы узнать вкус борща, не обязательно съедать всю кастрюлю целиком.

Но я ее реализую  в другом плане. Просто для меня конечная задача тестирования -это выбор более удачного кода, а не параметров.

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

Поэтому я не совершаю все  мыслимые сделки с последующим анализом

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

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

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

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

 

Можно проводя пакетное тестирование, разбив прогоны аналогично вложенным for, при первом проходе записывать в массив время, в которое выполнялось самое тяжелое для расчетов условие. А в следующих прогонах заменить эти вычисления на функцию, типа той что в кодобазе: https://www.mql5.com/ru/code/16416 Только дописать чтоб дату отслеживала. Время сна установить=минимальному времени между соседними выполненными условиями. И индикаторы, которые больше не будут использоваться, выгрузить. 

В этом случае отложенные ордера, ТП и СЛ должны срабатывать, но вычислений лишних не будет.

 А лучше даже новую функцию написать - которая будет "усыплять" математику ровно на время бесполезных колебаний цены.

Функция, дающая сигнал в заданный момент времени
Функция, дающая сигнал в заданный момент времени
  • голосов: 7
  • 2016.09.27
  • Artyom Kuraev
  • www.mql5.com
"Простая" функция, позволяющая запустить событие Х в конкретный момент времени (например, за 30 секунд до закрытия некоторого бара).