sova_part_2

В первой части мы рассмотрели типовые ошибки при анализе советников, теперь более подробно остановимся на типах оптимизаторов. MetaTrader является бессменным лидером на постсоветтском пространстве, но это далеко не единственный торговый терминал. Среди прочих можно вспомнить Thinkorswim в котором удобно торговать валютными фьючерсами и Quik так любимый российским фондовым рынком. В каждой платформе есть свой оптимизатор советников и стратегий, но несмотря на все разнообразие они делятся на два основных типа.

Циклические оптимизаторы

Наиболее простые и прозрачные алгоритмы, циклические перебирающие бары в заданном историческом периоде. При поступлении нового тика или открытия свечи, пересчитываются данные индикаторов, открываются/закрываются сделки и прочие действия. Затем итерация повторяется, пока тест не будет остановлен. При этом формируется статистика – общая прибыль/убытки, количество сделок, максимальная просадка и прочие данные. Большинству трейдеров такой вариант знаком, так как циклический вариант используется в MetaTrader. Дополнительно в языке программирования MQL можно задать предопределенные события, но они не оказывают существенного влияние на результаты тестера.

Циклические тестеры просты в реализации и могут быть запрограммированы на любом языке – имеются варианты даже для Microsoft Excel. При этом можно протестировать множество вариантов настроек – работает цикл очень быстро. К сожалению, имеется и существенный недостаток – результаты могут быть далеки от реальности. Как мы уже писали в предыдущей статье необходимо учитывать спреды и комиссии, да и проскальзывание, которого нет на историческом тесте, никто не отменял. Профессионалы обычно используют циклическую оптимизацию только для первоначальной оценки идеи, а дальнейшие усовершенствования делаются другими методами.

Событийно-ориентированные оптимизаторы

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

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

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

В следующих статьях мы более подробно рассмотрим тестеры MetaTrader 4 и 5, существующие проблемы и дадим рекомендации по улучшению результатов и ускорения процесса.