О том, как делать автоматическую подстройку параметров скользящей средней к текущей рыночной ситуации и получать с этого прибыль
Сегодня в арсенале любого трейдера присутствует огромное количество всевозможных технических индикаторов различных типов. Какие-то применяются чаще, какие-то реже, однако есть один инструмент, которым мы пользуемся практически всегда и как бы по привычке – это скользящие средние. Они по праву являются одним из самых популярных методов анализа рынка, не смотря на относительную простоту расчетов и очевидность интерпретации результатов. Среди наиболее известных скользящих средних – простые, экспоненциальные и взвешенные. Эти три типа индикаторов содержит любой пакет технического анализа. Однако здесь мы будем говорить не о них, а о так называемых адаптивных скользящих средних.
Сразу надо отметить, что данная тема отнюдь не нова. Однако, как ни странно, этим эффективным инструментам уделяется мало внимания, что весьма несправедливо. Поэтому ниже мы постараемся ответить на вопрос, что такое динамическая адаптация и как с ее помощью “оживить” экспоненциальную скользящую среднюю. А в качестве результата наших исследований, рассмотрим простую торговую систему.
Что за зверь?
Итак, динамическая адаптация. Не смотря на некоторую “шероховатость” данного словосочетания, суть достаточно проста. Поскольку мы работаем с конкретным инструментом, скользящей средней, то будем все рассматривать на ее примере.
Начнем с самого простого. В качестве “модельной” стратегии возьмем такую (всеми нами любимую): если цена пересекает скользящую среднюю вверх – покупаем, если вниз – продаем. Скользящая средняя с длинным периодом слабее реагирует на колебания рынка, нежели скользящая средняя с коротким периодом. Это очень удобно, если рынок находится в фазе среднесрочного или долгосрочного тренда (на всякий случай вспомним, что скользящая средняя – это, в первую очередь, индикатор трендового движения). В данном случае мы просто стоим в позиции (в лонге или шорте) и, не реагируя на всякий шум и легкие коррекции, следуем основной тенденции. Однако тренды, как и все хорошее, когда-нибудь заканчиваются и нам нужно вовремя покинуть рынок. В идеале, конечно, здорово было бы это сделать при первом же намеке на смену тенденции, но это удается далеко не всегда. А если вы находитесь в позиции, выход из которой управляется скользящей средней с длинным периодом, то время ожидания может увеличиться значительно, затянувшись иногда на столько, что от прибыли и вовсе ничего не остается. Кроме этого, скользящие средние с длинным периодом также медленно реагируют на возобновление тренда, и, зачастую, заходят в позицию уже тогда, когда большая часть направленного движения безвозвратно упущена.
Ну а в чем проблема? Давайте возьмем скользящую среднюю с коротким периодом. Она более чувствительна к рынку, поэтому быстрее реагирует на смену рыночных настроений. Это действительно так. Проблема заключается лишь в одном – не каждое движение, на которое откликается такая быстрая скользящая средняя, заканчивается хотя бы среднесрочным трендом. Отсюда другая сторона медали – огромное количество ложных входов и преждевременных выходов, вызванных чрезмерной чувствительностью данного инструмента, делают его применение также не очень удобным.
Как же быть? С одной стороны, хочется, чтобы скользящая средняя не реагировала на каждый “чих” рынка, оставаясь как можно дольше в фарватере трендового движения (т. е. здесь нам нужны свойства длинной скользящей средней), с другой — хочется чтобы эта скользящая средняя реагировала на рынок как можно более оперативно, когда он меняет тенденцию (свойства короткой). Возможно ли такое? Оказывается да, хотя идеальных решений, как вы понимаете, не бывает. А возможность этого превращения из быстрой скользящей средней в медленную и обратно как раз и называется методом динамической адаптации.
Итак, под динамической адаптацией здесь понимается автоматическая подстройка параметров индикатора в зависимости от текущего состояния на рынке. Рассмотрим, как это происходит в экспоненциальной скользящей средней. Ее формула (для цен закрытия) в классическом варианте такова:
EMA = Close*F + EMA
-1*(1-F).
Close – цена закрытия,
EMA
-1 – предыдущее значение скользящей средней,
F = 2/(n+1) – фактор сглаживания, n – период скользящей средней.
Вся суть динамичности кроется в параметре F. Для того чтобы заставить его меняться в зависимости от характера рынка, представим F как функцию от какого-нибудь технического индикатора (конкретные реализации мы рассмотрим ниже). При этом должны соблюдаться следующие условия: в моменты высокой волатильности значение F должно быть как можно меньше. Это означает, что n – период скользящей средней, должен быть достаточно большим, чтобы не реагировать на случайные зашумления основной тенденции. А в моменты трендового маловолатильного движения периоду лучше уменьшаться (значение F при этом увеличивается), чтобы быть как можно ближе к цене и, при необходимости, вовремя откликнуться на изменение ситуации.
Вкратце, динамическая адаптация выглядит именно так. При этом заметим, что ее можно применять не только для скользящих средних, но и для любого индикатора технического анализа, если в этом имеется целесообразность. Но мы все же не будем уходить далеко, а сосредоточимся на скользящих средних и посмотрим, как это работает на практике.
Немного формул
Как было сказано ранее, динамические скользящие средние уже давно не являются прорывом в науке технического анализа. На сегодняшний день, имеются несколько разновидностей этого инструмента, но наиболее известные из них – VIDYA (Variable Index Dynamic Average) и динамическая скользящая средняя Кауфмана (KAMA, Kaufman Adaptive Moving Average). Что касается последней, то Пэрри Кауфман представил свою разработку еще в 1995 году. Правда, если принять во внимание, что скользящие средние начали применяться за 50 лет до этого момента, то эти инструменты можно назвать относительно новыми. Рассмотрим вкратце работу каждого из них.
VIDYA была предложена Тушаром Чендом. Для ее вычисления используется осциллятор CMO, названный в честь разработчика Chande Momentum Oscillator. По своей сути он напоминает RSI и вычисляется следующим образом: отношение суммы положительных и отрицательных приращений за период (период CMO) к их разности. Значение модуля СМО (абсолютного значения) используется для вычисления динамического периода через фактор сглаживания экспоненциальной скользящей средней следующим образом:
F(Динамический) = F*|CMO| = 2*|CMO|/(n+1)
Подставляя F(Динамический) – динамический фактор сглаживания в формулу для экспоненциальной скользящей средней вместо обычного F, получаем формулу для VIDYA:
VIDYA = Close*F*|CMO| + VIDYA-1*(1 — (F*|CМО|)).
Из данной формулы видно, что если цены растут или падают в активном тренде, CMO имеет большое значение по абсолютной величине. При этом динамическое значение F также высоко, что говорит о низком динамическом периоде скользящей средней. А в этом случае VIDYA максимально близка к графику цены и может оперативно реагировать на любые изменения рынка. Напротив, когда движение цены замедляется или мы наблюдаем боковик в рамках тренда, значение СМО приближается к нулю, а следовательно близко к нулю и значение F, что говорит об увеличившемся динамическом периоде скользящей средней. Предельный случай, если СМО=0, VIDYA будет двигаться в горизонтальном направлении, абсолютно игнорируя любые колебания цен.
Суть адаптивной скользящей средней Кауфмана (KAMA) аналогично VIDYA, однако ее вычисления чуть более замысловаты. Для начала вводится параметр эффективности рынка ER (efficiency ratio), который равен отношению Сигнал/Шум. Сигнал вычисляется как модуль разности текущей цены и цены n периодов назад:
|Close[bar] – Close[bar-n]|
(индикатор Momentum по сути). Для того чтобы вычислить Шум, необходимо взять сумму модулей приращений цены за период n:
|Close[bar] – Close[bar-1]|+…+|Close[bar-n-1] – Close[bar-n]|
В результате мы получим коэффициент, который меняется от 0 до 1. При абсолютном шуме ER будет близок к нулю, а если на рынке наблюдается тренд, ER будет близок к 1. Теперь используем ER для придания динамичности экспоненциальной скользящей средней через фактор сглаживания F. Поскольку мы должны переключаться от быстрой скользящей средней к медленной и наоборот, сам автор советует выбрать два крайних значения: 2 и 30 соответственно. Тогда F(быстрый) = 2/(2+1) = 0,66, а F(медленный) = 2/(30+1) = 0,064. Динамический фактор определяется так:
F(динамический) = ER*( F(быстрый) — F(медленный)) + F(медленный)
или:
F(динамический) = ER*0,6021 + 0,0645.
Таким образом, мы получили динамический фактор, который, если его подставить в формулу для экспоненциальной скользящей средней, и даст нам KAMA.
Рис 1
На рисунке 1 представлены графики VIDYA (голубая линия), KAMA (синяя линяя) и ЕМА (фиолетовая линия). Можно увидеть, что при трендовом движении динамические линии находятся ближе к цене и, если возникает шум, немного удаляются от нее, чтобы избежать преждевременного выхода. Если тенденция меняется – динамические линии просто выпрямляются.
А деньги где?
Перейдем, наконец, к самому интересному – построению торговой системы с использованием адаптивных скользящих средних. Надо сказать, что, к нашему счастью, и VIDYA, и KAMA (а кроме них – другие разновидности динамических скользяшек) входят в библиотеку встроенных инструментов технического анализа различных систем разработок МТС, в частности WealthLab. Это значительно облегчает нам работу.
В качестве основной динамической средней была взята КАМА – исключительно субъективное решение. Правда, дополнительным доводом в ее пользу может служить и то, что она по сути использует только один параметр – длину анализируемого интервала для ER. Сама система проста, поэтому, без излишней лирики перейдем к формальному описанию правил входа и выхода.
Правила входа:
Входим в лонг, если у нас состоялось пересечение графика цены и кривой Кауфмана вверх, а цена закрытия должна быть выше скользящей средней. Входим по рынку.
Входим в шорт если у нас состоялось пересечение графика цены и кривой Кауфмана вниз, а цена закрытия должна быть выше скользящей средней. Входим по стоп-приказу – уровень минимальной цены за последние 5 баров.
Правила Выхода:
Для лонга выходим, если цена опустилась ниже двух ATR от цены High предыдущей свечи.
Для шорта выходим, если цена поднялась выше двух ATR от цены Low предыдущей свечи.
Параметры стратегии:
Инструмент – фьючерс на индекс RTS
Работает на 15-минутном масштабе (шорты и лонги)
Интервал тестирования: 1/09/2010 по 28/02/2012
Работаем 1 контрактом, начальный капитал 200000
Работают лонги и шорты
Проскальзывание + комиссия = 20 пунктов
Оптимизируемые параметры
Параметр KAMA
Параметр ATR
Параметр скользящей средней
Результаты тестирования стратегии и код для Wealth-Lab
http://robostroy.ru/community/article.aspx?id=266