тел.: 8 800 200 86 47|+7 (812) 336 61 11Заказать звонок
Admiral Markets UK Admiral Markets UK Choose your country

MQlabs: Проект Anavar

Индикатор PercentageZigZag

 

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

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

 

С чего начнем?

Базовым элементом торговой системы, как видно из технического задания, является индикатор ZigZag Орлова, который, по словам автора системы, все равно нуждается в переделке. С разработки новой версии популярного индикатора ZigZag мы и начнем. Заодно индикатор будет адаптирован под условия разрабатываемой торговой системы так, чтобы любой трейдер смог оценить потенциал стратегии визуально, не прибегая к тестированию советника.

 

Очередная версия ZigZag

К разработке различных версий ZigZag мы уже подходили не один раз. Первое касание освещено в статьях "Новый ZigZag" и "Новый ZigZag. Часть 2". Наиболее свежее упоминание ZigZag датируется октябрем текущего года: "Зигзаг волатильности" и "Зигзаг волатильности. Часть 2".

Первое отличие нового индикатора ZigZag от упомянутых предков заключается, как всегда, в принципе построения. К примеру, оригинальный ZigZag отображает новый экстремум, когда цена отошла от предыдущего экстремума на указанное количество пунктов и баров. Первый ZigZag проекта MQLabs основан на пробое предыдущих свечей максимумами и минимумами следующих свечей или (в другой версии) ценами закрытия следующих свечей. Зигзаг волатильности основан на удалении цены от предыдущего экстремума на расстояние, которое превышает заданную среднюю волатильность свечей, составляющих исследуемый диапазон.

Принцип построения разрабатываемого индикатора ZigZag тоже будет основан на удалении цены от предыдущего экстремума на определенную величину. Только расчет этой величины базируется на процентном соотношении пути, которое проделала цена от предыдущего экстремума, и начальной цены (т.е. цены экстремума). К примеру, если значительным изменением цены трейдер считает ее рост или падение на 0.4%, то в том случае, когда цена предыдущего максимума составила 1.2819 (см. рис. 1), следующий минимум будет зарегистрирован при падении цены ниже значения 1.2767 (1.2819 - 1.2819*0.4/100). Соответственно, после локального минимума цены 1.2765 следующим максимумом будет вершина, находящаяся выше, чем  1.2814 (1.2765 + 1.2765*0.4/100).

Рис. 1. Изменение цены более, чем на 0.4%.

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

Исходя из описанного свойства индикатора ZigZag, отслеживания процентного изменения цены, новую версию назовем PercentageZigZag.

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

Рис. 2. Формирование двух экстремумов на одном баре.

Текущий локальный максимум расположен на баре, отмеченном ценовой меткой 1.2918. Заданное изменение цены, которое должно приводить к формированию противоположного экстремума, равно 0.2%. Таким образом, для формирования локального минимума цене достаточно упасть ниже значения 1.2892. Бар 2012.10.30 06:00 имеет минимум 1.2886, что меньше заявленного значения. При этом бар также располагает максимумом (1.2926), который пробивает текущий локальный максимум.

В описываемом случае мы будем рассматривать лишь два варианта развития событий:

  1. Цена сначала сформировала минимум свечи, что привело к формированию минимума индикатора, а потом выросла, сформировав максимум свечи и одновременно сформировав новый максимум индикатора.

  2. Цена сначала сформировала максимум свечи, что привело к обновлению максимума индикатора, а потом упала, сформировав минимум свечи и одновременно сформировав минимум индикатора.

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

Решением проблемы, в идеале, является определение реального маршрута движения цены на основании детализации данных за счет младших таймфреймов (вплоть до М1). К сожалению, это не всегда возможно, т.к. глубина минутной истории имеет свой благоразумный предел. Поэтому в качестве более простого решения можно принять метод анализа типа внешнего бара, который дает приемлемую точность при определении маршрута движения цены. Так, для бычьих внешних баров наиболее вероятным сценарием движения цены является: падение цены и формирование минимума, а затем рост цены и формирование максимума. Соответственно, наиболее вероятный маршрут движения цены внутри медвежьих внешних баров будет следующим: рост цены и формирование максимума, а затем падение цены и формирование минимума. В тех случаях, когда бар не относится к бычьему или медвежьему типу (т.е. бар типа доджи, у которого цена открытия совпадает с ценой закрытия), метод определения маршрута движения цены будет зависеть от типа текущего экстремума. Если текущий экстремум является максимумом, то будет выбран алгоритм, разработанный для бычьей свечи. И, наоборот, для текущего экстремума-минимума сработает алгоритм, разработанный для медвежьей свечи.

В итоге окончательный вариант построения индикатора PercentageZigZag для ситуации, показанной на рис. 2, будет следующим (см. рис. 3).

Рис. 3. Решение проблемы внешнего бара.

Ситуация разрешилась по варианту 1 (цена за время формирования бара сначала упала, а потом выросла). Так как на внешнем баре последним был сформирован экстремум-максимум, то появление бара, следующего за внешним баром, привело к обновлению максимума. Внешний бар лишился максимума, а новый бар получил его. Развитие ситуации, видимое на рис. 3, закончилось тем, что максимум оказался на вершине последней свечи справа.

Также отметим, что индикатором PercentageZigZag новый экстремум не регистрируется на внутренних барах, хотя теоретически он может там появиться (см. рис. 4).

Рис. 4. Пропущенный экстремум на внутреннем баре.

В этой ситуации первое появление максимума после минимума свечи 2012.10.25 21:00 будет зарегистрировано на свече 2012.10.26 01:00, т.к. это первая свеча, которая пробила максимум предыдущей свечи после регистрации минимума индикатора PercentageZigZag.

 

Торговые сигналы от PercentageZigZag

В соответствии с техническим заданием, предоставленным автором системы, весь торговый процесс должен осуществляться при помощи стоповых отложенных ордеров: Buy Stop и Sell Stop. Сигналом для установки того или иного ордера является наличие двух экстремумов индикатора одного типа, которые повышаются или понижаются.

Сигналом установки ордера Buy Stop является наличие двух минимумов индикатора PercentageZigZag, последний из которых не пробил уровень предыдущего минимума вниз. Ордер устанавливается выше последнего максимума индикатора. Соответственно, сигналом установки ордера Sell Stop является наличие двух максимумов индикатора, последний из которых не смог пробить уровень предыдущего максимума вверх. Ордер устанавливается ниже последнего минимума индикатора (см. рис. 5).

Рис. 5. Сигналы установки ордеров.

Описанный принцип установки отложенных ордеров можно визуализировать средствами индикатора PercentageZigZag, но с одной оговоркой. Так, в истории найдется немало ситуаций, при которых отложенные ордера были отменены. Это, чаще всего, происходит по той причине, что момент первого появления экстремума индикатора и момент окончательного формирования экстремума разнесены во времени. В итоге момент появления экстремума может подходить под условия установки ордера, а момент окончательного формирования экстремума - нет. Чтобы не загромождать график указанием мест, так и не сработавших ордеров, индикатором будут отображаться только сработавшие отложенные ордера. Но и у этого правила будут исключения: показания индикатора при онлайн-работе. В этом случае для последних экстремумов индикатора PercentageZigZag будут отображаться моменты установки и отмены отложенных ордеров. Для трейдера это будет выглядеть как наличие, а затем исчезновение указателей сигналов (см. рис. 6 и рис. 7).

Рис. 6. Отложенный ордер был установлен, но еще не сработал.

Два ордера, Buy Stop и Sell Stop, были установлены по соответствующим им сигналам, но цена еще не достигла уровней их открытия. Каждый из ордеров в итоге был отменен, т.к. появились следующие сигналы установки ордеров соответствующего типа.

Рис. 7. Отложенный ордер был отменен. 

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

 

Настроечные параметры индикатора PercentageZigZag

Новый индикатор располагает всего лишь двумя настроечными параметрами.

1. Параметр i_percentageChange.

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

2. Параметр i_indBarsCount.

Количество баров, на которых отображается индикатор.

 

Использование индикатора

Одним из весомых преимуществ индикатора PercentageZigZag над его предикатами является отсутствие привязки показаний индикатора к характеру изменений цен того или иного финансового инструмента. Так, оригинальный ZigZag был жестко привязан к количеству пунктов, которое изменяется не только от одного символа к другому, но и в пределах одного символа с течением времени. Зигзаг  волатильности, несмотря на привязку к средней волатильности, требовал настройку коэффициента превышения средней волатильности. Этот коэффициент - плавающая величина при переходе между различными символами.

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

 

 

Игорь Герасько

Декабрь 2012

Специально для компании Admiral Markets

3.2
 
 
X
Loading