Торговые системы на основе скользящих средних
Скользящие средние (MovingAverages, MA) – самый старый, испытанный инструмент технического аналитика. В давние времена, когда не было компьютеров, трейдеры легко справлялись с построением средних при помощи карандаша и листа бумаги. Компьютеры превратили МА в мощный и универсальный инструмент анализа, используемый теперь в самых разных торговых подходах.
Виды скользящих средних
В общем случае вычисление МА происходит следующим образом: задается некоторое целое число N (длины окна) и значение MA(t), соответствующее правому краю окна, вычисляется по формуле
Здесь значения цены в моменты времени, находящиеся внутри данного окна, а заданные веса, присваиваемые этим значениям. Затем окно сдвигается на один час вправо и вычисления повторяются (Рисунок 1).
Существует много видов и модификаций скользящих средних, но наиболее простыми и часто применяемыми являются арифметическая МА (называемая также простой скользящей средней) и экспоненциальная МА.
Простая скользящая средняя (SimpleMovingAverage, SMA) представляет собой cреднее арифметическое от цен
она получается при выборе весов
Рисунок 1. Простая скользящая средняя (N = 8) на часовом графике JPY
Взвешенная скользящая средняя (WeightedMovingAverage, WMA) – обычно так называют МА с весами, равномерно растущими слева направо:
При таком усреднении наибольший вес присваивается самому последнему значению цены и меньшие веса - более ранним значениям, поэтому WMA более чувствительна к резким изменениям цены, чем SMA. Треугольная МА (TriangularMovingAverage, TMA) имеет веса, максимальные в середине окна и уменьшающиеся к краям окна; как нетрудно убедиться, универсальным способом получения треугольной МА является повторное применение SМА к вычисленной ранее SМА от цены. Повторные МА вообще во многих случаях являются полезным инструментом анализа.
Экспоненциальная скользящая средняя (ExponentialMovingAverage, EMA) отличается от других МА способом сглаживания наблюдений. Для построения EMA задается параметр сглаживания sf (smoothingfactor, 0 < sf < 1), и начальное значение EMA(0). В момент времени t следующее значение EMA(t+1) вычисляется как функция предыдущего значения EMA(t) и нового наблюдения P(t):
Смысл этого пересчета оценки: EMA(t+1) получается сдвигом EMA(t) в направлении нового измерения Р(t) на величину, пропорциональную расстоянию от предыдущей оценки EMA(t) до этого нового наблюдения. Множитель sf определяет величину сдвига: при малом sf средняя EMA(t) сдвигается на малую величину (то есть, имеет место сильное сглаживание), при большом sf сдвиг EMA(t) будет большим (EMA(t) чувствительна к изменению цены - малое сглаживание). Полезно заметить, что в отличие от других средних, текущее значение EMA зависит не только от последних N значений цены, но от всей ее предыстории (вес, с которым в ходит в EMA(t) цена Р(t-T), убывает примерно как
В левом верхнем углу Рисунка 1 для сравнения изображен примерный вид весов для четырех видов МА. Стандартной рекомендацией для ЕМА является выбор sf в виде
EMA с таким параметром sf будет по своему поведению более или менее точно повторять простую МА с параметром N.
Среди трейдеров большой популярностью пользуется выбор параметров МА в виде чисел Фибоначчи, N = 8, 13, 21, 34, 55, 89, 144…. Если нет более точных соображений по выбору длины окна усреднения, эта рекомендация заслуживает внимания; в этом случае получается такое соответствие между параметрами MA и EMA:
В целом, отличия в поведении EMA и SMA заключаются в следующем: при большом sf (малом N) ЕMA имеет более плавный вид, чем SMA, так как для малых N простая MA очень чувствительна к большим сдвигам цены (например, при переносе окна усреднения на единицу вправо из окна уходит малое значение цены, а входит в него новое, очень большое, тогда SМA сильно сдвинется вверх), вычислительное правило для EMA предотвращает такие резкие скачки. При малом sf (большом N), наоборот, EMA более чувствительна к изменениям цены, чем SMA, которая в этом случае сильно запаздывает.
Торговые сигналы скользящих средних
Скользящие средние отфильтровывают небольшие колебания цены, выделяя основное направление изменения (то есть, тенденцию). Если МА указывает вверх, это означает, что рынок на подъеме, если МА указывает вниз – значит рынок падает. В этом смысле МА и есть указатель тенденции рынка.
Основное правило чтения MA: когда график цены пересекает линию MA снизу вверх, следует ожидать хода вверх; такое пересечение есть buy сигнал. Когда график цены пересекает линию MA сверху вниз, следует ожидать хода вниз; такое пересечение есть sell сигнал. При малом значении параметра N количество торговых сигналов будет большим, но многие из них окажутся ложными. При большом N число сигналов уменьшится, такая МА создает более серьезные уровни поддержки и сопротивления для графика цены. Но чем больше N, тем более линия МА отстает от изменений цены: при больших N индикатор МА является сильно запаздывающим (lagging).а растущем тренде линия МА будет отставать от графика цены, находясь ниже него, а на падающем тренде МА будет находиться выше графика цены. Если ход цены будет достаточно равномерным (как это имеет место на Рисунке 2), то график МА просто превратится в прямую линию (расстояние от МА до цены будет постоянным), так что при удачном подборе параметра усреднения МА будет выполнять роль линии тренда (сравните синюю линию бычьего тренда и красную линию МА34 на Рисунке 2).
Рисунок 2. Восходящий тренд и три скользящих средних на часовом графике евро; красная линия – простая МА34 от цены закрытия, зеленая – МА55, серая – МА89, темно красная линия – цена закрытия
Когда график цены идет над графиком МА, следует покупать (имеет место тенденция роста цены), когда цена идет ниже МА, следует продавать (тенденция снижения цены). Так как МА часто оказывается линией консолидации, то покупать следует когда цена откатывается сверху к МА и начинает разворачиваться наверх; ордер stop-loss при этом ставится ниже последнего локального минимума. Точно также, когда цена снизу поднимается к МА и начинается разворачиваться опять вниз, следует продавать и ставить стоп выше последнего максимума цены.
Для получения более надежных результатов в торговых системах пытаются применять наборы из нескольких скользящих средних. Основное свойство, используемое при этом: изменения графика МА отстают от изменений исходного графика цены и это отставание тем больше, чем: а) круче рост или падение ценового графика, и б) чем больше величина параметра усреднения МА. Рисунок 2 иллюстрирует это свойство на примере трех скользящих средних часового графика евро.
Когда график цены изменит направление своего движения, он пересечет линию МА, изменение которой произойдет с некоторым опозданием. Если изменение цены будет означать смену тенденции, то это пересечение цены и МА послужит сигналом такой смены тенденции: цена и МА поменяются местами. Чем больше параметр МА, тем позднее произойдет пересечение цены и линии МА, а при наличии нескольких скользящих средних смена тенденции приведет к последовательному возникновению нескольких пересечений цены и средних линий, а также этих средних между собой.
Многие из таких пересечений могут быть использованы в качестве торговых сигналов. Например, более чувствительные короткие МА дают сигналы о возможном открытии позиций, длинные же МА указывают, в каком направлении следует торговать, отбрасывая незначительные флуктуации цены и реагируя только на существенные движения рынка.
Примеры торговых систем с использованием МА
Торговые системы на основе одной скользящей средней. Самым простым вариантом торгового подхода является использование одной единственной скользящей средней для получения сигналов входа в позицию и выхода из нее (1MA-S&R):
Enter Long Cross (C, MA(n))
Exit Long C < MA(n))
Enter Short Cross (MA(n), C)
Exit Short C > MA(n)
Длина n скользящей средней является настраиваемым параметром этой системы (opt1); пересечение Cross (Х, Y) двух линий Х и Y означает, по определению,
Cross (Х, Y) = 1 ? X > Y и X[1] < Y[1],
где X, Y – текущие значения переменных X, Y, а X[1] и Y[1] – их значения, взятые один период времени назад (тексты систем для пакета MetaStock приведены в конце статьи).
Такая система способна приносить хорошую прибыль на рынках с длительными трендами, которые мало типичны для валютного рынка, но на рынках, часто меняющих свое направление, ее результаты очень неустойчивы (это в значительной степени относится ко многим системам, построенным на МА). Для повышения прибыльности и улучшения устойчивости систем скользящих средних применяют различные дополнительные правила (фильтры) при открытии позиций.
Например, в системе 1MA-3CC позиция открывается только после того как три подряд свечи (3 Сonseсutive Сloses) закроются за пределом (выше либо ниже) скользящей средней. Такое дополнительное требование отбрасывает случайные прорывы линии МА, не подтвержденные дальнейшим движением цены. При этом конечно, теряется часть хода, и некоторые позиции могут оказаться убыточными из-за слишком позднего открытия, поэтому требуется внимательный анализ, изменит ли этот фильтр результаты системы в лучшую сторону.
Другая идея улучшения системы основана на известном свойстве ценовых графиков: линия поддержки после ее прорыва становится линией сопротивления (цена возвращается к этой линии уже снизу, что хорошо проявилось на Рисунке 2 при прорыве линии МА34). Линия сопротивления после ее прорыва ценой станет на какое-то время линией поддержки: цена вернется к этой линии сверху, совершив откат, а потом уже продолжит ход вверх, о котором сигнализировал прорыв линии МА.
Использование этой идеи приводит к варианту системы - прорыв скользящей средней с открытием на откате (MAbreakoutwithpullback): после прорыва скользящей средней цена должна сделать откат в противоположную сторону и только потом открывается позиция в том направлении, о котором сигнализировало пересечение цены и МА.
Как определить, что является откатом, и какой величины откат достаточен для открытия позиции?
Один из вариантов: откатом вниз считается момент времени, когда цена достигла минимального значения за последние m свечей:
low < LowestLow(m)[1];
эта запись означает, что low текущей свечи меньше, чем наименьшее из значений low среди всех m предшествующих свечей (единица в квадратной скобке означает, что величина, стоящая перед ней, относится к предыдущей свече, так что в LowestLow(m)[1] входят свечи
t-1, t-2, …, t-m-1,
где t – текущий момент времени). Эта система аналогична торговле внутри канала: позиция открывается внутрь канала при достижении ценой одной из его границ; направление открываемой позиции указывается пересечением цены и скользящей средней (пересечение средней с открытием на откате от границы канала - MAcrossandPullBackinChannel, MAcross&PbСhan).
Для того чтобы система не теряла большую часть прибыли при частых разворотах рынка, можно ввести дополнительное правило: позиция закрывается при обратном пересечении МА. Например, длинная позиция должна быть закрыта, если цена пересечет МА вниз (close < MA). Другим вариантом этого правила может быть закрытие позиции при выходе цены за противоположную границу канала отката: длинная позиция закрывается, если low < LowestLow(m).
Как показывает проверка, на часовых графиках валют такие системы дают слишком много сигналов. Чтобы отобрать из этого множества потенциально наилучшие сигналы, имеет смысл применить какой-нибудь трендовый индикатор, например, ADX [1]: позиция открывается по сигналу buy системы MAcross&PbСhan, если
+DM > - DM и ADX > adxlevel; уровень adxlevel и период DMI
– оптимизируемые параметры системы.
Торговые системы на основе двух скользящих средних.
На рынках, которые часто меняют свое поведение, переходя от направленных движений к консолидациям, системы, основанные на одной скользящей средней, никогда не дадут сколько-нибудь устойчивого результата. Одним из вариантов поиска лучших стратегий является использование в качестве торгового сигнала пересечения двух скользящих средних
Идея заключается в том, что сама по себе цена может слишком часто пересекать МА и затем возвращаться назад, прежде чем начнется действительно новое движение. Все подобные пересечения будут ложными сигналами с точки зрения системы, основанной на единственной МА (системы типа 1МА). Для защиты от потерь, вызванных такими ложными сигналами, применяют различные “фильтры” и дополнительные правила. Однако сама по себе скользящая средняя является уже весьма совершенным фильтром. Естественно поэтому попытаться использовать в качестве дополнительного ориентира в торговой системе 1МА другую скользящую среднюю, а не какой-то иной “чужой” индикатор.
Например, при развороте графика снизу вверх более короткая МА начнет расти раньше и вскоре пересечет снизу вверх более длинную МА, которая в большей степени запаздывает, отставая от движений цены. Пока настраивается этот разворот рынка, цена может несколько раз пересечь короткую МА, причем в обоих направлениях. Но все такие пересечения игнорируются, а сигналом является только пересечение короткой и длинной МА; в этом смысле короткая МА сама по себе выполняет роль фильтра, отбрасывая короткие всплески цены, не дающие существенных ходов.
Простейший вариант системы на основе двух скользящих средних – это stop&revers система (2Macross_S&R)
Enter Long Cross (MA(m) , MA(n) )
Exit Long Cross (MA(n) , MA(m) )
Enter Short Cross (MA(n) , MA(m) )
Exit Short Cross (MA(m) , MA(n) )
где m < n – настраиваемые параметры системы.
Торговые системы на основе трех скользящих средних.
Дальнейшее развитие систем МА – использование трех скользящих средних (обозначим их параметры m1, m2, m3, m1 < m2 < m3). Один из возможных вариантов: позиция открывается при пересечении короткой и длинной МА (m1 и m3), а закрывается, когда короткая МА пересекает среднюю (m2) в обратном направлении (3MАcrossovers):
Enter Long Cross (MA(m1) , MA(m3) )
Exit Long Cross (MA(m2) , MA(m1) )
Enter Short Cross (MA(m3) , MA(m1) )
Exit Short Cross (MA(m1) , MA(m2) )
Определенным достоинством системы 3МА является наличие нейтрального состояния (вне рынка): когда быстрая МА пересекла среднюю, позиция закрывается и до тех пор, пока быстрая МА не доберется до медленной (а на боковом рынке это может занять много времени), следующая позиция не будет открыта.
Торговые системы на основе четырех скользящих средних. Один из вариантов использования набора четырех МА (m1, m2, m3, m4; m1 < m2 < m3 < m4) – открывать позиции по пересечению двух коротких МА в направлении, указываемом двумя длинными МА: если МА(m3) > МА(m4), открываются только длинные позиции, когда МА(m1) пересекает МА(m2) снизу вверх; если МА(m3) < МА(m4), то открываются только короткие позиции, когда МА(m1) пересекает МА(m2) сверху вниз. Фактически это система 2МА, в которую введен указатель тренда в виде двух более длинных МА.
Следующий вариант системы 4МА (stop&revers система 4MАcrossovers) отличается тем, что пересечение длинных МА также является торговым сигналом: когда МА(m3) пересекает МА(m4) снизу вверх, открывается длинная позиция, если при этом МА(m1) находится выше МА(m2):
Enter Long Cross (MA(m1) , MA(m3) ) AND MA(m3) > MA(m4)
Exit Long Cross (MA(m2) , MA(m1) ) AND MA(m3) < MA(m4)
Enter Short Cross (MA(m2) , MA(m1) ) AND MA(m3) < MA(m4)
Exit Short Cross (MA(m1) , MA(m3) ) AND MA(m3) > MA(m4)
Торговые системы на основе MACD.
Популярным индикатором является MACD (Moving Average Convergence and Divergence). Поскольку он строится непосредственно в виде комбинации скользящих средних, естественно упомянуть здесь и торговые системы, использующие MACD, хотя чаще этот индикатор рассматривается как самостоятельный инструмент, например в качестве осциллятора.
MACD состоит из двух линий – собственно MACD – являющейся разностью двух МА, и MACDsignal, которая получается путем сглаживания линии MACD:
MACD = MA(n1) – MA(n2), n2 > n1
MACDsignal – результат применения MA(n3) к линии MACD.
Как следует из свойств скользящих средних, торговые сигналы возникают при пересечении линий MACD и MACDsignal. Простейший вариант системы на основе MACD – Stop&Revers MACDsystem:
Enter Long Cross (MACD, MACDsignal)
Exit Long Cross (MACDsignal, MACD)
Enter Short Cross (MACDsignal, MACD)
Exit Short Cross (MACD, MACDsignal)
Рассмотренные системы на основе скользящих средних составляют неплохой набор инструментов для исследования рынков. Именно благодаря простоте торговых правил, они позволяют трейдеру почувствовать особенности движений рыночных цен, понять причины многих возникающих проблем. Особенно полезно поработать с такими системами начинающим трейдерам, прежде чем переходить к сложным конструкциям торговых систем. Усложнение системы далеко не всегда приводит к повышению прибыльности, а хорошего понимания рынка скорее можно достичь именно с простыми подходами.
В заключение приведем некоторые типичные фильтры, используемые в торговых системах на основе скользящих средних:
Ценовые фильтры (после пересечения МА цена должна еще удовлетворить некоторому дополнительному условию, например: разность двух МА>порога; цена ушла от МА на заданное расстояние; цена сделала откат после прорыва МА (например, достигнут n-периодный экстремум) и т.д..
Временные фильтры - задержка открытия на некоторое время. Например, позиция открывается через t2 свечей после пересечения ценой скользящей средней при условии, что цена остается в этот момент выше МА:
BarsSince(Cross(C, Mov(C, t1,S))) = t2 AND C > Mov(C, t1,S)
Отложенное исполнение сигнала. Например, в соответствии со следующим правилом длинная позиция будет открыта, если в любой момент в течение t3 свечей после того как MA(t1) пересечет снизу вверх среднюю MA(t2), цена пересечет также снизу вверх MA(t1) и при этом MA(t1) будет выше MA(t4):
Alert(Cross(Mov(C, t1,S), Mov(C, t2,S)), t3)
AND C > Mov(C, t1,S) AND Mov(C, t1,S)> Mov(C, t4,S)
Еще одним приемом, используемым в работе с МА, является применение сдвига: МА наносится на график цены со сдвигом вперед на несколько свечей. Смысл состоит в том, чтобы несколько компенсировать отставание (lagging) скользящей средней от движений цены. Одна из рекомендаций состоит в том, чтобы МА длины N сдвинуть вперед на свечей.
Возможно, что для выхода из позиций, открываемых по пересечению МА, лучше использовать правила, более чувствительные, чем МА.
Приложение
Тексты торговых систем, использующих скользящие средние
1MA-S&R
Система с открытием и закрытием позиций по пересечению скользящей средней (символ S&R, Stop & Revers, означает, что открытие при открытии новой позиции происходит закрытие предыдущей позиции, противоположно направленной)
Enter Long
C > Mov(C,opt1,E) AND Ref(C,-1) <= Ref( Mov(C,opt1,E), -1)
Exit Long
C < Mov(C,opt1,E)
Enter Short
C < Mov(C,opt1,E) AND Ref(C,-1) >= Ref( Mov(C,opt1,E), -1)
Exit Short
C > Mov(C,opt1,E)
MAcross&PbСhan
Enter Long
BarsSince(Cross(C, Mov(C, opt1, S))) < opt2 AND BarsSince(Cross(C, Mov(C, opt1, S)))>0
AND L < LLV(Ref(LOW, -1), opt3)
Exit Long
C < Mov(C, opt1, S)
Enter Short
BarsSince(Cross( Mov(C, opt1, S), C)) < opt2 AND BarsSince(Cross( Mov(C, opt1, S), C)) >0 AND H > HHV(Ref(HIGH, -1), opt3)
Exit Short
C > Mov(C, opt1, S)
Комментарий . Позиция закрывается, в случае закрытия цены по другую сторону cкользящей средней. Вариант выхода из позиции по пересечению противоположной границы канала получается, если правила выхода из позиций заменить на:
Exit Long L < LLV(Ref(LOW, -1), opt3)
Exit Short H > HHV(Ref(HIGH, -1), opt3)
Чтобы получить вариант с открытием позиций по тренду, указываемому системой направлений [1], к правилу открытия длинных позиций надо добавить
AND DX(opt4) > opt5 AND PDI(opt4) > MDI(opt4),
а к правилу открытия коротких позиций добавить
AND DX(opt4) > opt5 AND PDI(opt4) < MDI(opt4)
1MA-3CC_eаc
3 consecutive closing beyond MA with exit after closing on backward cross Открытие позиции на пересечении МА при тройном закрытии за MАn, с выходом из позиции по обратному пересечению МА opt1 – длина МА (n) Enter Long
C> Mov(C,opt1,S) AND Ref(C> Mov(C,opt1,S), -1)
AND Ref(C> Mov(C,opt1,S), -2)
Exit Long
C< Mov(C,opt1,S)
Enter Short
C<= Mov(C,opt1,S) AND Ref(C<= Mov(C,opt1,S), -1)
AND Ref(C<= Mov(C,opt1,S), -2)
Exit Short
C> Mov(C,opt1,S)
Комментарий . Позиция закрывается, в случае закрытия цены по другую сторону скользящей средней. Возможен вариант, когда для закрытия используется МА другой длины, чем МА открытия.
2MАcross_S&R
S&R система с открытием позиций по пересечению двух скользящих средних
Enter Long
Cross( Mov(C, opt1, S), Mov(C, opt2, S))
Exit Long
Cross( Mov(C, opt2, S), Mov(C, opt1, S))
Enter Short
Cross( Mov(C, opt2, S), Mov(C, opt1, S))
Exit Short
Cross( Mov(C, opt1, S), Mov(C, opt2, S))
3MАcrossovers
Система с тремя скользящими средними; позиция открывается по пересечению короткой и самой медленной МА, а закрывается по противоположному пересечению короткой и средней МА.
Enter Long
Cross(Mov(C, opt1, S), Mov(C, opt3, S))
Exit Long
Mov(C, opt1, S) < Mov(C, opt2, S)
Enter Short
Cross( Mov(C, opt3, S), Mov(C, opt1, S))
Exit Short
Mov(C, opt1, S) > Mov(C, opt2, S)
4MАcrossovers
Stop&Revers система, позиции открываются по пересечению пары скользящих средних, если другая пара МА подтверждает направление этого пересечения
Enter Long
Cross(Mov(C, opt1, S), Mov(C, opt2, S)) AND Mov(C, opt3, S) > Mov(C, opt4, S) OR
Cross(Mov(C, opt3, S), Mov(C, opt4, S)) AND Mov(C, opt1, S) > Mov(C, opt2, S)
Exit Long
Cross(Mov(C, opt2, S), Mov(C, opt1, S)) AND Mov(C, opt3, S) < Mov(C, opt4, S) OR
Cross(Mov(C, opt4, S), Mov(C, opt3, S)) AND Mov(C, opt1, S) < Mov(C, opt2, S)
Enter Short
Cross(Mov(C, opt2, S), Mov(C, opt1, S)) AND Mov(C, opt3, S) < Mov(C, opt4, S) OR
Cross(Mov(C, opt4, S), Mov(C, opt3, S)) AND Mov(C, opt1, S) < Mov(C, opt2, S)
Exit Short
Cross(Mov(C, opt1, S), Mov(C, opt2, S)) AND Mov(C, opt3, S) > Mov(C, opt4, S) OR
Cross(Mov(C, opt3, S), Mov(C, opt4, S)) AND Mov(C, opt1, S) > Mov(C, opt2, S)
MACDsystem
Stop&Revers система, позиции открываются по пересечению линии MACD и сигнальной (сглаженной) линии
Enter Long
Cross(Mov(C,opt1,E) - Mov(C,opt2, E), Mov(Mov(C,opt1,E) - Mov(C,opt2, E),opt3,E))
Exit Long
Cross(Mov(Mov(C,opt1,E) - Mov(C,opt2, E),opt3,E), Mov(C,opt1,E) - Mov(C,opt2, E))
Enter Short
Cross(Mov(Mov(C,opt1,E) - Mov(C,opt2, E),opt3,E), Mov(C,opt1,E) - Mov(C,opt2, E))
Exit Short
Cross(Mov(C,opt1,E) - Mov(C,opt2, E), Mov(Mov(C,opt1,E) - Mov(C,opt2, E),opt3,E))
Лиховидов В.Н.