Индикатор VolumeVolatilitySignals_HummerFilter

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

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

 

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

 

Модернизация правил открытия сделок

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

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

Таким образом, паттерн "Хвостатая свеча" (вариация "Молота") можно использовать в качестве естественного фильтра при генерации торговых сигналов стратегии. При возникновении сигнала покупки нужно убедиться, что сигнальный бар не обладает верхним хвостом, а при сигнале продажи - нижним хвостом (см. рис. 1).

 

Рис. 1. Фильтрация сигналов при помощи паттерна "Хвостатая свеча".

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

Автоматическая фильтрация соответствующих хвостатых свечей заложена в новой версии индикатора под названием VolumeVolatilitySignals_HummerFilter. По сравнению с предком (VolumeVolatilitySignals), у потомка добавлен один параметр - Use hummer filter?. По умолчанию значение параметра установлено в "Yes", что указывает на применение фильтра. Если установить значение этого параметра в "No", то показания индикатора-потомка будут полностью совпадать с показаниями индикатора-предка (см. рис. 2).

 

Рис. 2. Сравнение показаний индикаторов с и без фильтрации паттерна "Молот".

Отсутствие фильтрации - серые стрелки, наличие фильтра - синие и красные стрелки.

 

Правила закрытия сделок

В торговых стратегиях различают три разновидности случаев закрытия сделки: достижение необходимой прибыли (цена Take Profit), достижение максимально допустимого убытка (цена Stop Loss) и возникновение противоположного торгового сигнала. Последний вариант закрытия в рассмотренной стратегии уже присутствует, т. к. сигналы открытия сделок подробно описаны. Таким образом, в разработке правил нуждаются два из трех случаев закрытия сделок.

С выбором способа расчета цены Take Profit во многих случаях возникают проблемы, т. к. большинство стратегий обычно возникают на волне поиска наилучших цен входа в сделку. К тому же, продолжительность того или иного ценового движения прогнозировать сложнее, чем сам факт возникновение движения в определенном направлении (направлений всего два, а значений цен - бесчисленное множество). 

По отношению к рассматриваемой стратегии любой алгоритм расчета цены Take Profit будет выглядеть искусственным, надуманным образованием. Ведь основной целью любой сделки является захват как можно большей части трендового изменения цены. Причем получение прибыли хотя бы на 60-70% от размера тренда является большой удачей. А потому наилучшим моментом закрытия сделки будет являться именно противоположный сигнал, который, как минимум, укажет на истощение текущего тренда или, как максимум, на его разворот. По этой причине сделки стратегии не будут использовать установку цены Take Profit.

Совершенно иначе обстоит дело с ценой Stop Loss. Без предварительного расчета этой цены реальная торговля больше похожа на самообман, зиждущийся на знаменитом русском "авось" - авось цена пойдет туда, куда нужно. В стратегии имеются все предпосылки для расчета этой цены, которая чаще всего устанавливается за некоторым локальным экстремумом рыночной цены. В данном случае таким экстремумом является уровень, достигнутый ценой за время действия последнего рыночного движения. Подобным движением будем считать интервал времени, прошедший от последнего пересечения средних скользящих линий, используемых при генерации торгового сигнала. Так, при сигнале покупки необходимо найти минимум цены, достигнутый за то время, когда средние линии находились в положении "пересечения вниз", т. е. быстрая линия ниже медленной (см. рис. 3).

 

Рис. 3. Цена Stop Loss для длинной сделки.

Из найденной цены вычитается одно минимальное изменение цены (один пункт для большинства валютных пар). На эту цену и устанавливается Stop Loss сделки.

При сигнале продажи для определения цены Stop Loss необходимо найти максимум цены, достигнутый рынком за время нахождения средних линий в положении "пересечения вверх", т. е. когда быстрая линия была выше медленной линии (см. рис. 4).

 

Рис. 4. Цена Stop Loss для короткой сделки.

К полученной цене необходимо прибавить не только величину одного минимального изменения цены, но и размер спреда, т. к. короткие сделки закрываются по цене Ask.

 

Страхующий ордер

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

Установка страхующего ордера возможна сразу же после того, как был открыт рыночный ордер по сигналу стратегии. То есть страхующий ордер будет иметь тип Buy Stop или Sell Stop, в зависимости от направления основного ордера. В случае закрытия основного ордера по обратному сигналу страхующий ордер, соответствующий ему, удаляется. После открытия нового основного ордера ему в соответствие устанавливается новый страхующий ордер (см. рис. 5).

 

Рис. 5. Установка и удаление страхующего ордера.

После срабатывания страхующего ордера варианты его закрытия точно такие же, как и у основного ордера: противоположный сигнал или достижение цены Stop Loss. Цена Take Profit страхующему ордеру не устанавливается. 

Расчет цены Stop Loss страхующего ордера основан на том же принципе, что и у основного ордера. Различие заключается лишь в том, что производится поиск противоположного экстремума цены (по отношению к основному ордеру), а также в том, что используется другой временной интервал - бары между последним и предыдущим пересечением средних линий (см. рис. 6).

 

Рис. 6. Расчет цены Stop Loss страхующего ордера. 

Так, в момент возникновения сигнала покупки (стрелка синего цвета, направленная вверх) происходит открытие рыночного ордера Buy с ценой Stop Loss на уровне 1.5913. На этом же уровне расположена цена открытия страхующего ордера Sell Stop. Расчет цены Stop Loss страхующего ордера производится путем поиска максимума цены среди баров, принадлежащих двум последним пересечениям средних линий (на рис. 6 интервал ограничен двумя розовыми вертикальными линиями). К найденной цене добавляется один пункт и спред.

В момент возникновения сигнала продажи (стрелка красного цвета, направленная вниз) происходит открытие рыночного ордера Sell с ценой Stop Loss на уровне 1.6002. Этой же цене соответствует уровень открытия страхующего ордера Buy Stop. Расчет цены Stop Loss страхующего ордера производится на основании минимальной цены на интервале баров, находящихся между двумя последними пересечениями средних линий. На рис. 6 этот интервал ограничен двумя голубыми вертикальными линиями. Из полученной цены вычитается один пункт.

 

Советник VolumeVolatility_Expert

Выше были описаны правила работы торговой системы. На их основе создан советник VolumeVolatility_Expert. 

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

Настроечные параметры советника подобраны в обычной манере для советников, разработанных в рамках проекта MQLabs: параметры управления размером ордеров, параметры стратегии и параметры для открытия ордеров (максимально допустимое отклонение при открытии, воспроизводимый звук и magic number). Параметры стратегии в точности повторяют параметры индикатора VolumeVolatilitySignals_HummerFilter. Среди них есть лишь один новый параметр - Use reverse order?. Он позволяет управлять установкой страхующего ордера. Так, значение "Yes" разрешает установку страхующего ордера (по цене Stop Loss основного ордера). В итоге советник в любое время оперирует, как минимум, одним рыночным ордером. При переводе значения параметра в "No" страхующий ордер не устанавливается, что приводит к периодической работе эксперта: при закрытии ордера по Stop Loss в рынке не остается ордеров советника.

 

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

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

Кроме изменения таймфрейма в подборе оптимального набора параметров участвовали такие параметры: Fast MA period, Slow MA periodUse reverse order? Значения всех остальных настроечных параметров использовались те, которые установлены по умолчанию (в частности, фильтр по паттерну "Молот" включен).

Исторический интервал тестирования: с 01.01.2011 до 11.01.2014. Среди приведенных ниже результатов показаны "наиболее интересные". По этой причине читатель не увидит там тестов по символу USDJPY, но в то же время узнает, что для символа GBPUSD возможно два сценария использования стратегии. Результаты приведены на рис. 7 - 10.

EURUSD. Таймфрейм Н1. Значения параметров: i_maFastPeriod = 6, i_maSlowPeriod = 89, i_setReverseOrder = false. Чистая прибыль 2 328 долларов, максимальная просадка 1 367 долларов. Фактор восстановления 1.70.

 

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

 

USDCHF. Таймфрейм Н1. Значения параметров: i_maFastPeriod = 16, i_maSlowPeriod = 20, i_setReverseOrder = true. Чистая прибыль 3 066 долларов, максимальная просадка 1 379 долларов. Фактор восстановления 2.22.

 

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

 

GBPUSD. Таймфрейм M30. Значения параметров: i_maFastPeriod = 5, i_maSlowPeriod = 67, i_setReverseOrder = true. Чистая прибыль 3 469 долларов, максимальная просадка 1 440 долларов. Фактор восстановления 2.41.

 

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

 

GBPUSD. Таймфрейм M30. Значения параметров: i_maFastPeriod = 5, i_maSlowPeriod = 75, i_setReverseOrder = false. Чистая прибыль 2 804 доллара, максимальная просадка 907 долларов. Фактор восстановления 3.09.

 

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

 

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