Статья большая, тут выложил сокращенный вариант. Полная версия с кодами стратегий в Метатрейдере опубликована тут http://robostroy.ru/community/Article.aspx?id=235 Во второй части материала появится код на Qpile
Прежде чем реализовывать стратегию необходимо ее оттестировать и, если это необходимо, модернизировать. Quik не обладает возможностями бэктестинга, поэтому тестирование будет производится при помощи Метатрейдера. На текущий момент Метатрейдер подключен к серверу поставляющему котировки валютных пар и суррогатов акций ММВБ, так называемых форвардных контрактов на акции. С одной стороны можно рассматривать это как недостаток, однако это скорее преимущество, так как таким образом можно проверить работоспособность системы сравнив данные с «эталонными». Котировки форвардных контрактов не сильно отличаются от акций ММВБ, но, к сожалению, с сервера можно загрузить очень короткий отрезок истории — порядка нескольких недель для 15-минутных фреймов. К счастью, в Метатрейдере есть возможность загрузить историю котировок не с сервера, а из внешнего файла. А достать эти котировки не проблема, многие брокеры предоставляют на своих сайтах архив котировок различных финансовых инструментов, в том числе акций ММВБ.
В этой статье речь пойдет о программной реализации идеи «Стохастический индикатор + трендовый фильтр на скользящих средних». В следующих статьях рассмотрим использование других трендовых фильтров, например, ADX, а так же другие сигналы, в частности, торговлю по уровням.
Формализация
Формализуем идею. Сигнал на вход – пересечение быстрого и медленного стохастика. Если индикатор пресекает сигнальную линию снизу вверх, то это сигнал на покупку, если сверху вниз – на продажу. В качестве фильтра используем две скользящих средних (СС). Если разница между значениями быстрой и медленной СС больше порогового, то сигналы на вход реализовываем, если нет, то это флэт — не торгуем. Условие отработки сигналов на покупку – быстрая скользящая больше медленной, на продажу наоборот. Выходим по стоп-лоссу или тэйк-профиту. Урони стоп-лосса и тэйк-профита, пороговое значение оптимизируем. Для стохастика используем стандартные параметры, для скользящих средних параметры оптимизируем.
Реализация описанного алгоритма в Метатредере
здесь.
Система не предполагает множественных входов, поэтому при наличии открытой позиции следующие сигналы игнорируются до тех пор, пока позиция не будет закрыта. Такая проверка выполняется функцией «IsOrder», которая так же реализована в вышеназванном советнике.
Оптимизация
Для прогонки стратегии выбираем акцию «Газпрома», тайм-фрейм 15 минут. Начальный депозит 300$, размер позиции 100 акций (не путать с лотами!).
После тестирования алгоритма на промежутке в 6 месяцев оказалось, что у наилучшей стратегии всего три сделки. С точки зрения оценки работоспособности торговой системы это плохой показатель: при таком количестве сделок мы не получаем статистически значимого результата. Поэтому я провел прогонку на годовых промежутках. Получил 11 сделок за 2009 год, 24 за 2010 и 60 за 2011-й, что для оценки торговой стратегии является более или менее приемлемым результатом. Основным параметром оценки системы является Profit factor – отношение суммы прибыльных сделок к сумме убыточных. Как видно из таблицы на рис. 2, при близких входных параметрах Profit factor не изменяется, что является хорошим показателем работоспособности системы.
Оптимизационные параметры торговой системы, 2010 год
Важным показателем торговой системы являются DrawDown (просадки).
График баланса оптимизированной стратегии за 2011 год
Из графика на рис. 3 видно, что просадки достаточно велики, следовательно значение StopLoss в размере от 2% до 5% (от 300 до 1000 пунктов, 1 пункт равен 0.01 руб.) для тайм-фрейма 15 мин. можно считать избыточным, поэтому изменим оптимизационные рамки стоп-лосса. Оптимизационные рамки остальных параметров тэйк-профита, CC и зазор оставим прежними. Размер интервала для подбора стопов определим эмпирически, то есть методом подбора, испытав несколько вариантов и выбрав наилучший. Иными словами, профит и параметры мувингов у нас оптимизируются вместе со стоп-лоссами.
Наилучший результат дала оптимизация на интервале от 50 до 100 пунктов, в пересчете на проценты это примерно от 0,25% до 0,5% к ценам 2011 года. Иными словами, истина оказалась посередине: слишком большие стоп-лоссы – плохо (большие убытки при срабатывании), слишком маленькие – тоже плохо, часто срабатывают.
Теперь давайте посмотрим график доходности с наилучшим стопом (95 пунктов)
График баланса с наилучшим значением стоп-лосс
Сравните с графиком на рис. 4. Явно видно, что просадки уменьшились. Кроме того, увеличилось и число сделок, порядка 180 сделок в год. Это примерно сделка раз в два дня, что для дейтрейдинга является вполне допустимым значением.
Далее автор рассматривает две вариации на стратегию — работу с отложенными стопами и трейлинг-стоп.