Алгоритмическое определение уровней поддержки и сопротивления всегда было ключевым вопросом в области механической торговли. Поддержка и сопротивление являются следствием влияния на трейдеров предыдущих ценовых движений, генерирующих области спроса и предложения, они базируются как на технических, так и на психологических факторах, которые влияют на направление движения рынка
Алгоритмическое определение уровней поддержки и сопротивления всегда было ключевым вопросом в области механической торговли. Поддержка и сопротивление являются следствием влияния на трейдеров предыдущих ценовых движений, генерирующих области спроса и предложения, они базируются как на технических, так и на психологических факторах, которые влияют на направление движения рынка.
Поскольку уровни поддержки и сопротивления являются фундаментальным понятием рынка, важно научиться объективно определять их. Существует множество техник, основанных на субъективных дефинициях поддержки и сопротивления, например, которые базируются на визуальном анализе графиков. Рассматриваемый здесь подход основан на механической стратегии и использует осцилляторы поддержки/сопротивления Уиндера. Мы протестируем эту стратегию на корзине валютных пар.
Осцилляторы Уиднера
Доктор Мел Уиднер разработал осцилляторы Widner Resistance Oscillator (WRO) и Widner Support Oscillator (WSO) для механической идентификации и торговли на уровнях поддержки и сопротивления.
Методика объективного определения поддержки и сопротивления следующая: Если самый высокий максимум (самый низкий минимум) за четыре предшествующих бара представляет собой самую высокую (низкую) цена за последние 9 баров, эта цена становится сопротивлением (поддержкой). Затем мы рассчитываем сколько из последних шести уровней сопротивления (поддержки) находятся под (над) текущей ценой закрытия. Система расчета осциллятора дает нам диапазон от 100 до 0. Значение 100 мы получаем, когда все шесть уровней выше текущей цены, значение 0, когда все шесть уровней ниже текущей цены. Когда значение индикаторов на промежуточных уровнях (например: 40-60) они лишены статистической значимости, так как цена находится между экстремумами.
Первоначально индикаторы WSO и WRO была разработаны для торговли на фондовом рынке, нам же предстоит ответить на вопрос, можно ли их применить для разработки стратегии торговли на рынке форекс. Используемый нами подход напоминает оригинальный подход Уиндера, который стремился ловить долгосрочные тренды на дневных временных диапазонах, используя разные средние WSO/WRO для оценки того, как цена реагирует на уровни поддержки/сопротивления на разных временных интервалах.
/Элитный Трейдер, ELITETRADER.RU/
Код Widner oscillator для MetaTrader
// implemented by Daniel Fernandez, Asirikuy.com 2011
#property indicator_separate_window
#property indicator_minimum 0
#property indicator_maximum 100
#property indicator_buffers 4
#property indicator_color1 Red
#property indicator_color2 LightSeaGreen
#property indicator_color3 Crimson
#property indicator_color4 DarkGreen
//---- buffers
double WSO[];
double WRO[];
double WSO_Average[];
double WRO_Average[];
double resistance[6];
double support[6];
extern int averagePeriod = 4;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
string short_name;
//---- 2 additional buffers are used for counting.
IndicatorBuffers(4);
//---- indicator lines
SetIndexStyle(0,DRAW_LINE, 1, 1);
SetIndexBuffer(0, WSO);
SetIndexStyle(1,DRAW_LINE, 1, 1);
SetIndexBuffer(1, WRO);
SetIndexStyle(2,DRAW_LINE, 1, 3);
SetIndexBuffer(2, WSO_Average);
SetIndexStyle(3,DRAW_LINE, 1, 3);
SetIndexBuffer(3, WRO_Average);
return(0);
}
//+------------------------------------------------------------------+
//| WSO and WRO |
//+------------------------------------------------------------------+
int start()
{
int i,k;
Comment("Coded by Daniel Fernandez, please visit my blog at mechanicalforex.com");
i=Bars-50;
while (i >= 0)
{
if (High[i+4] == High[ iHighest( NULL, 0, MODE_HIGH, 9, i ) ])
{
k = 0;
while (k <= 4)
{
resistance[k+1] = resistance [k];
k++;
}
resistance[0] = High[i+4];
}
if (Low[i+4] == Low[ iLowest( NULL, 0, MODE_LOW, 9, i ) ])
{
k = 0;
while (k <= 4)
{
support[k+1] = support[k];
k++;
}
support[0] = Low[i+4];
}
WSO[i] = 100*( 1-(MathFloor(support[0]/Close[i]) + MathFloor(support[1]/Close[i]) + MathFloor(support[2]/Close[i]) +
MathFloor(support[3]/Close[i]) + MathFloor(support[4]/Close[i]) + MathFloor(support[5]/Close[i])) / 6);
WRO[i] = 100*( 1-(MathFloor(resistance[0]/Close[i]) + MathFloor(resistance[1]/Close[i]) + MathFloor(resistance[2]/Close[i]) +
MathFloor(resistance[3]/Close[i]) + MathFloor(resistance[4]/Close[i]) + MathFloor(resistance[5]/Close[i])) / 6);
i--;
}
int limit=Bars-50;
i = 0;
while (i<limit)
{
WSO_Average[i] = iMAOnArray(WSO,Bars,averagePeriod ,0,MODE_SMA,i);
WRO_Average[i] = iMAOnArray(WRO,Bars,averagePeriod ,0,MODE_SMA,i);
i += 1;
}
return(0);
}
//+------------------------------------------------------------------+
Разработка стратегии форекс
В основе системы лежит следующая идея: мы покупаем, когда цена оставалась выше большинства уровней поддержки в течение длительного времени и над всеми уровнями сопротивления в краткосрочном отрезке, противоположное справедливо для коротких сделок. Система основана на использовании средних скользящих с периодами 4 и 50 осцилляторов WSO/WRO с оригинальными настройками Уиндера. Длинные позиции мы открываем, когда WSO MA с периодом 50 выше 95% и когда WRO MA с периодом 4 выше 90% на последнем закрывшемся баре. Соответственно, мы продаем, когда WRO MA с периодом 50 ниже уровня 5; и WSO MA с периодом 4 ниже уровня 10%. Мы закрываем длинные позиции, когда WRO ниже 5%, тогда как короткие позиции закрываются, когда WSO выше 95%, т.е. сделки закрываются, когда есть признаки того, что цена двигатеся против краткосрочного тренда.
Мы будем использовать стоп-лосс 2 х 14-дневный ATR от уровня входа, риск на сделку рассчитывается исходя из допустимого риска 2% по следующей формуле:
Размер сделки =
(0.01* баланса счета) / (ATR * размер контракта)
На рисунке 1 приведен пример сделки за 2010 год по паре евро/американский доллар. В этом случае мы открыли позицию по цене 1.3622, после того как средняя WSO достигла уровня 95%, тогда как средняя WRO была выше 90%. Поскольку 14-дневный ATR в это время составлял 0.0150, наш стоп-лосс был установлен на уровень 1.3472 и (предположим, что наш баланс составлял 100.000 долларов) размер сделки был 0.67 [(0.01*100,000)/(0.0150*100,000)]. Обратите внимание на то, что позиция была закрыта, когда WRO MA с периодом 4 упала ниже уровня 10% (На всех графиках верхний индикатор это WSO/WRO MA с периодом 50, тогда как нижний это осциллятор с периодом 4. Красный индикатор всегда WSO, зеленый всегда WRO).
Рисунок 1. Пример сделки по системе. Мы открыли длинную позицию по цене 1.3622, когда средняя WSO (красная) достигла 95, тогда как средняя WRO была выше 90%.
Итоги тестирования системы.
Мы тестировали систему на дневных данных для периода с июня 2000 года по март 2011 года при помощи платформы МТ4. Стратегия тестировалась на корзине из пяти вилютных пар: евро/американский доллар, британский фунт/американский доллар (GBP/USD), австралийский доллар/американский доллар (AUD/USD), новозеландский доллар/американский доллар (NZD/USD) и американский доллар/швейцарский франк (USD/CHF).
Обзор результатов теста приведен а Таблице 1. Мы видим, что стратегия была прибыльной для всех пар, однако результаты сильно меняются от одной пары к другой. Пары EUR/USD и NZD/USD дали большую прибыль, тогда как GBP/USD продемонстрировала лишь небольшой возврат и в течение почти все тестового периода находилась около уровня безубыточности. Для прибыльных пар, как правило, характерны длительные тренды без сильных краткосрочных откатов, тогда как пары с худшими результатами характеризуются откатами после идентификации долгосрочного тренда системой (посредством WSO/WRO MA с периодом 50).
На рисунке 2 мы видим кривую депозита портфеля. В целом она напоминает типичные кривые систем следования долгосрочным трендам с резкими прорывами в сторону прибыли, за которыми следуют значительные просадки.
Торговые характеристики системы были достаточно ассиметричными. Короткие сделки были намного менее прибыльными (только 28% коротких позиций принесли прибыль против 45% длинных позиций по паре NZD/USD), хотя показатель прибыли к убытку был достаточно хорошим. В целом за открытием короткой позиции намного реже следовало значительное движение вниз, однако, если это все-таки происходило, то оно было сильным. Количество прибыльных длинных позиций было больше, однако полученная от них прибыль меньше, из-за медленных движений. Это результат макроэкономических факторов, которые вызывали ралли американского доллара (обычно бегство из рисковых активов), тогда как медвежьи движения по доллару были обычно более долгосрочными и субтильными (например сделки кэрри с открытием длинных позиций на австралийский и новозеландский доллары против американского).
Рисунок 2. Кривая депозита. Рост депозита характеризуется прорыва с последующими длинными просадками.
Плюсы и минусы.
На рисунке 3 мы можем увидеть плюсы и минусы стратегии WSO/WRO. Хотя стратегии замечательно удается использовать направленные трендовые движения, в ходе которых не бывает сильных откатов, медленные рынки – большая неприятность для нее. Боковые диапазоны приводят к тому, что осцилляторы идентифицируют очень жесткие уровни поддержки и сопротивления. Поэтому, возможно, систему стоит модифицировать, включив в нее инструмент пробоя волатильности, чтобы сделки открывались только тогда, когда на рынке присутствует значительный моментум в их направлении.
Рисунок 3. Плюсы и минусы стратегии. Стратегия хорошо работает на сильных трендах и плохо, когда на рынке боковые диапазоны.
Статистические характеристики, приведенные в Таблице 1 также наглядно демонстрируют, что стратегия входит в класс стратегий следования тренду – продолжительные просадки (иногда более 1500 дней) превалируют, тогда как движения, которые приносят хорошую прибыль, являются редкими, но очень эффективными. Низкий процент прибыльных сделок, высокое соотношение прибыли к убытку, большое значение Ulcer Index (9.61) предполагают, что психологически торговать по этой стратегии будет очень трудно. Однако при средней составной годовой прибыли 9.22% и максимальной просадке 30% система позволяет достичь хороших результатов при торговле портфелем.
На рисунке 4 приведены детали годовых возвратов при работе по системе на портфельном базисе. Три года были убыточными, но она функционировала в качестве хорошего хеджа для фондового рынка, так как год финансового кризиса (2008) был одним из самых прибыльных для системы.
Рисунок 4. Годовая прибыль.
Успешный тест.
Тест показал, что индикаторы Уиндера вполне применимы на валютном рынке форекс, хотя результат тестирования системы на валютном портфеле не был феноменальным, она принесла прибыль без оптимизации. Однако результат теста стоит считать предварительным. Нашей целью было не создать идеальную систему, а продемонстрировать возможность работы с WSO/WRO на форексе.
Возможно провести множество модификаций для улучшения работы стратегии, такие как оптимизации МА или введение дополнительных сигналов (например, фильтр пробоя волатильности).
Таблица 1. Легенда Таблицы сверху вниз: Общая прибыль, Средняя годовая прибыль, Максимальная просадка, % прибыльных сделок, Соотношение прибыли к убытку, Фактор Прибыли, Ulcer Index, Количество сделок, Стоимость сделки.
© DANIEL FERNANDEZ, CURRENCY TRADER