Стохастик с фильтром на Qpile (часть 1)

  • Автор темы orekton
  • Дата начала

orekton

New member
Несколько простых стратегий, основанных на сочетании стохастического индикатора с трендовым фильтром, реализованные в Metatrader и Quik

Прежде чем реализовывать стратегию необходимо ее оттестировать и, если это необходимо, модернизировать. Quik не обладает возможностями бэктестинга, поэтому тестирование будет производится при помощи Метатрейдера. На текущий момент Метатрейдер подключен к серверу поставляющему котировки валютных пар и суррогатов акций ММВБ, так называемых форвардных контрактов на акции. С одной стороны можно рассматривать это как недостаток, однако это скорее преимущество, так как таким образом можно проверить работоспособность системы сравнив данные с «эталонными». Котировки форвардных контрактов не сильно отличаются от акций ММВБ, но, к сожалению, с сервера можно загрузить очень короткий отрезок истории - порядка нескольких недель для 15-минутных фреймов. К счастью, в Метатрейдере есть возможность загрузить историю котировок не с сервера, а из внешнего файла. А достать эти котировки не проблема, многие брокеры предоставляют на своих сайтах архив котировок различных финансовых инструментов, в том числе акций ММВБ.

В этой статье речь пойдет о программной реализации идеи «Стохастический индикатор + трендовый фильтр на скользящих средних». В следующих статьях рассмотрим использование других трендовых фильтров, например, ADX, а так же другие сигналы, в частности, торговлю по уровням.

Формализация

Формализуем идею. Сигнал на вход – пересечение быстрого и медленного стохастика. Если индикатор пресекает сигнальную линию снизу вверх, то это сигнал на покупку, если сверху вниз – на продажу. В качестве фильтра используем две скользящих средних (СС). Если разница между значениями быстрой и медленной СС больше порогового, то сигналы на вход реализовываем, если нет, то это флэт - не торгуем. Условие отработки сигналов на покупку – быстрая скользящая больше медленной, на продажу наоборот. Выходим по стоп-лоссу или тэйк-профиту. Урони стоп-лосса и тэйк-профита, пороговое значение оптимизируем. Для стохастика используем стандартные параметры, для скользящих средних параметры оптимизируем.

Реализация описанного алгоритма в Метатредере.

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

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



Рис.1. Сигналы стратегии и сигнальные индикаторы

Посмотреть вложение 741

На рис. 1 видно, что сигналы отрабатываются правильно: согласно фильтру и только тогда, когда нет открытой позиции.

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

Оптимизация

Для прогонки стратегии выбираем акцию «Газпрома», тайм-фрейм 15 минут. Начальный депозит 300$, размер позиции 100 акций (не путать с лотами!). Использовал следующие оптимизационные рамки:

Параметр Назначение Диапазон Шаг
MaLongPer Период медленной скользящей средней 50-300 1
MaShortPer Период быстрой скользящей средней 5-40 1
TakeProfit Уровень тэйк-профита, пунктов 1000-3000 50
MAGap Зазор между скользящими 10-1000 10
StopLoss Уровень стоп-лосса, пунктов 300-1000 10


После тестирования алгоритма на промежутке в 6 месяцев оказалось, что у наилучшей стратегии всего три сделки. С точки зрения оценки работоспособности торговой системы это плохой показатель: при таком количестве сделок мы не получаем статистически значимого результата. Поэтому я провел прогонку на годовых промежутках. Получил 11 сделок за 2009 год, 24 за 2010 и 60 за 2011-й, что для оценки торговой стратегии является более или менее приемлемым результатом. Основным параметром оценки системы является Profit factor – отношение суммы прибыльных сделок к сумме убыточных. Как видно из таблицы на рис. 2, при близких входных параметрах Profit factor не изменяется, что является хорошим показателем работоспособности системы.

Посмотреть вложение 742

Рис.2. Оптимизационные параметры торговой системы, 2010 год

Важным показателем торговой системы являются DrawDown (просадки), см. рис. 3.
Посмотреть вложение 743

Рис 3. График баланса оптимизированной стратегии за 2011 год

Из графика на рис. 3 видно, что просадки достаточно велики, следовательно значение StopLoss в размере от 2% до 5% (от 300 до 1000 пунктов, 1 пункт равен 0.01 руб.) для тайм-фрейма 15 мин. можно считать избыточным, поэтому изменим оптимизационные рамки стоп-лосса. Оптимизационные рамки остальных параметров тэйк-профита, CC и зазор оставим прежними. Размер интервала для подбора стопов определим эмпирически, то есть методом подбора, испытав несколько вариантов и выбрав наилучший. Иными словами, профит и параметры мувингов у нас оптимизируются вместе со стоп-лоссами. Итак, вот что у нас получается при тестировании на данных 2011 года:

Интервал оптимизации, пунктов Прибыль, $ для нач. депозита в 300$ Профит фактор Стоп лосс, пунктов
100-300, шаг 10 380,4 1,65 300
50-100, шаг 5 509,69 1,93 95
10-50, шаг 1 214,74 1,32 50



Как видно из таблицы, наилучший результат дала оптимизация на интервале от 50 до 100 пунктов, в пересчете на проценты это примерно от 0,25% до 0,5% к ценам 2011 года. Иными словами, истина оказалась посередине: слишком большие стоп-лоссы – плохо (большие убытки при срабатывании), слишком маленькие – тоже плохо, часто срабатывают.

Теперь давайте посмотрим график доходности с наилучшим стопом (95 пунктов): рис. 4

Посмотреть вложение 744

Рис 4. График баланса с наилучшим значением стоп-лосс

Сравните с графиком на рис. 4. Явно видно, что просадки уменьшились. Кроме того, увеличилось и число сделок, порядка 180 сделок в год. Это примерно сделка раз в два дня, что для дейтрейдинга является вполне допустимым значением.

Полная версия здесь: http://robostroy.ru/community/Article.aspx?id=235 .
 

orekton

New member
Загрузил робота в qpl-файлах и закладку для Quik с необходимыми настройками.
http://ifolder.ru/28630717
http://ifolder.ru/28630722
http://ifolder.ru/28630726
Торгует Газпромом, таймфрейм 15 мин. Настройки средних, стоп-лосса и тейк-профита взял из коммента автора.
Чтобы робот заработал в файле robot.qpl нужно сделалать такие изменения.
В строчки
FIRMS_LIST MC0058900000;
pFirmid="MC0058900000"
внести название своей фирмы.
pAccount="L01-00000F00" тут указать свой клиентский счет
pClienCode="51153" тут код клиента
Дальше в Quik нажимаете F10, выбираете файл robot.qpl и нажимаете Загрузить локально. После загрузи портфеля нужно создать таблицу, нажав F12. В таблицу начнется вывод данных работы алгоритма.
Если нужно поменять инструмент, то меняем его в коде и на графике, та же ситуация с таймфреймом.
 

orekton

New member
Перед тем, как скачивать, можно почитать вторую часть статьи. Там объясняются принципы работы робота http://robostroy.ru/community/article.aspx?id=246
 
Your email address will not be publicly visible. We will only use it to contact you to confirm your post.
Сверху