Индикатор VolatilityAverageUnit_HighLimit

Индикатор VolumeVolatilityBounce_Signals

Эксперт VolumeVolatilityBounce_Expert (распаковать архив как есть в <каталог данных терминала>\MQL4)

Развернутые результаты тестирования

 

Последняя стратегия, основанная на совместном анализе волатильности рынка и тиковых объемов (см. Отбой волатильности. Часть 4), обладает всеми признаками контртрендовой торговой системы. И это не удивительно, т. к. в качестве фильтра избрано банальное пересечение двух средних скользящих линий с перевернутой логикой: сигналы на покупку действуют только в зоне снижения линий, а сигналы на продажу - только в зоне роста линий. 

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

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

 

Повышенная средняя волатильность

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

До настоящего времени нами не учитывался тот факт, что оживленность оживленности рознь. Ведь бывает так, что единичная волатильность выше среднего значения на 5%, а бывает и так, что она выше среднего на все 200%. Относить при этом оба значения просто к оживленности как бы не совсем правильно. Поэтому необходимо ввести такое понятие, как "повышенная средняя волатильность" или верхняя граница средней волатильности, которую можно относить к высокой волатильности, но не к аномально высокой амплитуде движения цены. Выход единичной волатильности за пределы значения повышенной средней волатильности и будет расцениваться как крайне высокая волатильность.

На этом, начальном, этапе воспользуемся простейшим способом определения повышенной средней волатильности - умножение средней волатильности на некий коэффициент, значение которого может быть в любое время изменено трейдером. Этот принцип наглядно демонстрируется индикатором VolatilityAverageUnit_HighLimit (см. рис. 1).

Рис. 1. Средняя и повышенная средняя волатильности.

Исходя из принятого алгоритма определения значений повышенной волатильности, форма линии, отображающей повышенную волатильность, всегда будет повторять форму линии средней волатильности. В итоге классификатор значений единичной волатильности разрастается до трех ее видов: низкая (ниже среднего значения), средняя (между средним значением и повышенным средним значением) и высокая (выше повышенного среднего значения).

Коэффициент умножения средней волатильности, который используется для получения значения повышенной средней волатильности, во входных параметрах индикатора VolatilityAverageUnit_HighLimit называется "Множитель для расчета повышенной средней волатильности".

 

Ожидание разворота тренда

Использование повышенной средней волатильности отнесем к необходимому фильтру, который в чем-то заменит нам средние скользящие линии. Дальнейшая работа заключается в поиске более устойчивых паттернов, формируемых ценой и объемом в преддверии окончания текущего тренда.

Новый паттерн, как и ранее, будет опираться на две составляющие: показатель волатильности и значения тиковых объемов. Эти составляющие будут общими для сигналов покупки и продажи. Направление сигнала определяется по изменению цены свечи, избранной трейдером. Чаще всего для этого мы использовали типичную цену.

Чтобы лучше понять, чего мы хотим, обратимся к истории котировок (см. рис. 2).

 

Рис. 2. Два примера резкого разворота ценового движения.

Глядя на историю котировок, любой трейдер безошибочно укажет на моменты разворота тренда, потому что результат такого разворота уже виден. Так и в нашем случае, показанном на рис. 2, достаточно легко определить те свечи, на открытии которых необходимо заключить сделки, чтобы впоследствии получить наибольшую прибыль с прогнозируемого тренда. Синей вертикальной линией показан момент покупки долларов США против швейцарского франка, а красной линией - момент продажи валютной пары. Итогом обеих сделок будет прибыль, полученная в тот же торговый день.

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

 

Рис. 3.  Определение паттернов разворота тренда.

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

Смотрим далее. Всплеск волатильности обязательно должен сопровождаться повышением тикового объема, вслед за которым объем должен упасть. В обоих случаях это так и есть - свечам максимума волатильности соответствуют локальные максимумы тиковых объемов. 

Вполне возможно, что наши поиски окончены. Остается лишь определить направление будущей сделки, использовав для этого линию типичной цены свечей (см. рис. 4).

 

Рис. 4. Определение направления сделок.

На основании рис. 4. выбрать направление сделки достаточно легко. Всплеск волатильности сопровождается падением типичной цены, если за этим следует разворот тренда вверх, и ростом типичной цены, если за этим следует разворот тренда вниз. На основании такого правила короткая сделка  должна быть открыта немного раньше - на два бара левее по графику (показана вертикальной розовой линией), чем мы рассчитывали по рис. 2 и 3.

Казалось бы, все. Но перед тем, как принять найденный паттерн в качестве правила, необходимо посмотреть, что собой представляют исключения из него. Для этого найдем на истории несколько таких же паттернов на другой валютной паре и посмотрим, куда движется цена после каждого из них (см. рис. 5).

 

Рис. 5. Паттерны в других местах истории.

Вертикальными линиями обозначены свечи, на которых единичная волатильность превысила повышенную среднюю волатильность, а тиковый объем сформировал локальный максимум. Стрелками указаны свечи, на которых необходимо открыть соответствующие сделки. Как видно, в обоих случаях сделки получат лишь временную и небольшую прибыль в течение одной - двух свечей. Но итогом обеих сделок будет убыток. 

Что не так в указанных случаях по сравнению со случаями, показанными на рис. 4? Присмотревшись внимательно (все играли в "найдите десять отличий"?), увидим, что разница заключается в направлении изменения типичной цены свечей, следующих сразу же после свечей всплеска волатильности. На рис. 4. направление изменения типичной цены сохраняется в течение следующей свечи, а на рис. 5 - нет. Этим и определяется содержание недостающего элемента в правиле открытия сделок. 

Подведем итог, перечислив правила регистрации паттерна:

  1. Паттерн определяется на основании данных трех последних свечей. Виртуально пронумеруем их справа налево по графику 1, 2 и 3.
  2. Единичная волатильность свечи 2 должна быть больше единичной волатильности свечи 3 и быть больше повышенной средней волатильности на свече 2.
  3. Тиковый объем свечи 2 должен быть выше тиковых объемов свечей 1 и 3.
  4. Сигнал является бычьим, если типичная цена на протяжении свечей 1 и 2 уменьшается (цена свечи 2 меньше цены свечи 3, а цена свечи 1 меньше цены свечи 2).
  5. Сигнал является медвежьим, если типичная цена на протяжении свечей 1 и 2 повышается.

Перечисленные правила реализуем в индикаторе VolumeVolatilityBounce_Signals, который отображает сигналы с помощью стрелок, при необходимости сопровождая торговые сигналы звуковыми оповещениями (см. рис. 6).

 

Рис. 6. Торговые сигналы стратегии.

Стратегия вновь получилась с креном в сторону контртрендовых сигналов, но уже без использования средних скользящих линий. 

 

Советник VolumeVolatilityBounce_Expert

Новый советник ничем не будет отличаться от предыдущей версии (см. статью Отбой волатильности. Часть 4, эксперт VolumeVolatility_Expert) в плане реакции на сигнал. Другое дело, что сам сигнал мы изменили. 

Таким образом, в момент появления торгового сигнала советник откроет рыночный ордер в направлении сигнала, а на уровне Stop Loss рыночного ордера установит отложенный ордер в противоположном направлении. Если отложенный ордер сработает и не сможет закрыться до момента появления нового сигнала, указывающего в направлении текущего ордера, то у действующего ордера изменяются параметры Stop Loss и Take Profit, а новый отложенный ордер не устанавливается. Если же новый сигнал не совпадает по направлению с действующим рыночным ордером (вне зависимости от пути его появления - изначально рыночный или сработавший отложенный), то такой рыночный ордер закрывается, соответствующий ему отложенный ордер удаляется. Далее сигнал исполняется как обычно.

Расчет параметров Stop Loss и Take Profit обоих ордеров производится по следующей схеме (см. рис. 7).

 

Рис. 7. Расчет параметров ордеров.

Цена Stop Loss рыночного ордера (она же - цена открытия отложенного ордера) рассчитывается на основании максимума (для Sell и минимума для Buy) цены двух последних свечей. От этого экстремума делается отступ в половину средней волатильности, которая соответствует свече всплеска волатильности. Так, для рис. 7 максимум цены 1.1602, а средняя волатильность 31 пункт. Таким образом искомая цена с учетом спреда (2 пункта) будет: 1.1602 + 0.0031 / 2 + 0.0002 = 1.161915 ≈ 1.1620.

Цена Take Profit рыночного ордера рассчитывается на основании размера потенциального убытка этого же ордера, т. е. по разнице цен между Stop Loss и ценой открытия. Найденная разница умножается на коэффициент, который трейдер может изменять при помощи соответствующего настроечного параметра эксперта ("TP/SL для первичных ордеров"). Так, для рассматриваемой ситуации размер Stop Loss - 59 пунктов. Тогда Take Profit ордера будет 1.1561 - 0.0059 · 2 = 1.1443.

Цена Take Profit отложенного ордера также рассчитывается на основании потенциального убытка рыночного ордера. Размер Stop Loss рыночного ордера умножается на значение другого коэффициента, указанного в настроечном параметре советника - "TP/SL для переворотных ордеров". 1.1620 + 0.0059 = 1.1679.

Цена Stop Loss отложенного ордера устанавливается непосредственно за минимумом (для сигналов продажи и за максимумом для сигналов покупки) свечи, которой соответствует всплеск волатильности. Это цена 1.1473.

 

Тестирование советника VolumeVolatilityBounce_Expert

Тестирование проведем на уже привычном нам таймфрейме Н1. Исторический период для тестирования выберем практически максимальный из того, что нам доступно в истории котировок: 01.01.2010 - 22.02.2014. Выбор значений настроечных параметров для каждого из финансовых инструментов проводился среди четырех параметров эксперта: период расчета волатильности (i_volatilityAveragePeriod), цена расчета свечи (i_usePrice), отношение TP к SL для первичных ордеров (i_baseOrderTPToSLRatio) и отношение TP к SL для переворотных ордеров (i_reverseOrderTPToSLRatio). Параметр "Коэффициент умножения средней волатильности" (i_highVolatilityRatio) во всех случаях равен 3.6. Результаты показаны на рис. 8 - 11.

EURUSD. Значения параметров: i_volatilityAveragePeriod = 25, i_usePrice = 4 (Median price), i_baseOrderTPToSLRatio = 1, i_reverseOrderTPToSLRatio = 6. Чистая прибыль 2 113 долларов, максимальная просадка 861 доллар. Фактор восстановления 2.45.

 

Рис. 8. Результаты тестирования советника VolumeVolatilityBounce_Expert на валютной паре EURUSD. 

USDCHF. Значения параметров: i_volatilityAveragePeriod = 20, i_usePrice = 3 (Low price), i_baseOrderTPToSLRatio = 5, i_reverseOrderTPToSLRatio = 5.5. Чистая прибыль 2 156 долларов, максимальная просадка 1 328 долларов. Фактор восстановления 1.62.

 

Рис. 9. Результаты тестирования советника VolumeVolatilityBounce_Expert на валютной паре USDCHF.

GBPUSD. Значения параметров: i_volatilityAveragePeriod = 22, i_usePrice = 2 (High price), i_baseOrderTPToSLRatio = 5.5, i_reverseOrderTPToSLRatio = 6. Чистая прибыль 2 301 доллар, максимальная просадка 828 долларов. Фактор восстановления 2.78.

 

Рис. 10. Результаты тестирования советника VolumeVolatilityBounce_Expert на валютной паре GBPUSD.

USDJPY. Значения параметров: i_volatilityAveragePeriod = 23, i_usePrice = 4 (Median price), i_baseOrderTPToSLRatio = 3.5, i_reverseOrderTPToSLRatio = 6. Чистая прибыль 2 035 долларов, максимальная просадка 757 долларов. Фактор восстановления 2.69.

 

Рис. 11. Результаты тестирования советника VolumeVolatilityBounce_Expert на валютной паре USDJPY.

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