Потиковое тестирование, пропуск баров, для ускорения тестирования - страница 3

 

Добрый день, коллеги!

Путем некоторых танцев с бубном, не без ваших советов, получилось. Коротко о главном.

Меня интересовала стратегия при которой советник торгует только определенное время (в пределах одного бара) на 15 минутном таймфрейме, остальное простаивает. Внутри бара торгует в потиковом режиме. Основное время я все делаю на ноуте, скорость работы оставляет желать лучшего, поэтому цифры привожу свои, без привязки к конкретным инструментам и временным интервалам. Скажу сразу, до оптимизации тикового файла истории для тестера один проход советника занимал примерно три минуты, после 3 - 5 секунд.

1. Когда вы нажимаете начать тестирование, то МТ4 делает небольшую "пакость". В не зависимости от выбранных временных интервалов, он удаляет старый файл истории который он сгенерировал до этого (если такой есть) и генерирует новый. В моем случае это занимало примерно полторы минуты. Мы ведь говорили о тиковом режиме тестирования. После этого начинался сам процесс тестирования который занимал еще примерно полторы минуты. Вариант когда внеторговое время просто выходит из ОнТик не подходит, потому как этот тик происходит и советник запускается, хоть, почти, ничего не делает, т.к. определить рабочий бар или нет, нужно посчитать.

2. Между этапами тестирования, сгенерированный файл истории остается лежать в каталоге \tester\history и доступен для чтения и записи. Если поставить этому файлу флаг ReadOnly, то при следующем тестирования, тот же инструмент, тот же режим (Все тики, По ценам открытия или Контрольные точки) и тот же временной интервал, МТ4 будет пытаться сгенерировать новый файл истории но не сможет этого сделать, однако поскольку этот файл уже есть, то он просто начнет его использовать дальше. Так что в мое случае при повторной работе с советником экономия составляет примерно полторы минуты. Что уже приятно и на этапе доработки советника и его проверки экономит немало времени. Что бы руками не лазить и ничего не делать я сделал два скрипта которые кидаю на график тестируемого инструмента с соответствующим таймфремом. Один скрипт Делает файл истории только для чтения, второй снимает этот атрибут. Так что для ускорения этого этапа тестирования, можно один раз сгенерировать файл истории, после чего кинуть скрипт, который поставит флаг ReadOnly и заниматься разработкой и тестированием. При изменении параметров тестирования, временной интервал, я кидаю второй скрипт который снимает ReadOnly после чего можно сгенерировать новый фал истории для тестера. 

3. Ну и самый интересный момент, ради которого я все это затевал. На основе вот этого скрипта с сделал свой, который берет уже сгенерированный файл истории для тестера и удаляет из него все ненужные тики. Для этого в настройках указывается бар который нужно оставить без изменений, в новый файл тестовой истории он копируется как есть, а для остальных определяется 4 тика Open, High, Low, Close. Именно эти тики и записываются, остальные игнорируются. После того как прочитали весь исходный файл и записали новый, то старый технически теряем, а новый кладем на его место, ставим флаг ReadOnly и... Запустив советника на оптимизированном файле тиковой истории весь тест занимает 3 - 5 секунд. Результат такой же как и при тестировании на всех тиках без оптимизации. И индикаторы отрабатывают корректно. Теперь можно и оптимизацию параметров запустить . 


Вот... как-то так.

 
kukrinikson:

Вот... как-то так.

Выкидывание лишних тиков - основной способ ускорения. На MT5 это делается в несколько строк, но почти никому это не нужно.

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