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

MQLabs: Три индейца. Часть 2.

Индикатор ThreeIndians_TrendConfirm

Индикатор Woodie'sCCI_OnlyHFE

 

В предыдущем материале была начата разработка индикатора, основанном на идентификации паттерна "Три индейца", описанного Линдой Рашке в книге "Биржевые секреты". На данный момент индикатор лишь находит паттерны, соответствующие некоторому заданному соотношению высот соседних волн, не обращая внимания на наличие или отсутствие предшествующего тренда. А ведь этот момент является одним из ключевых условий в образовании паттерна, т. к. по словам Линды Рашке паттерн указывает "кульминацию трендового движения". Поэтому никакого смысла в идентификации паттерна без соответствующего ему тренда нет.

Препятствием для включения в код индикатора алгоритма распознавания тренда прошлый раз была расплывчатость самого понятия "тренд". А потому трейдеру предлагалось самостоятельно отделять бракованные паттерны от истинных паттернов путем установления субъективных критериев наличия тренда.

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

Следующий нюанс в деле идентификации паттерна, который пока не был учтен, это выявление момента окончания паттерна. Линда Рашке рекомендует использовать для этого дивергенции на графиках индикаторов RSI или MACD. Мы же последуем своим путем, который был подсказан участником форума MQLabs Genry. Речь идет о паттернах Вуди. В частности, для наших целей идеально подходит паттерн "Экстремальный крюк". Алгоритм совместного использования этого паттерна и паттерна "Три индейца" также будет реализован во второй версии индикатора.

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

 

Несоответствие окончания волны CD реальному окончанию волны PercentageZigZag

Те, кто уже испытал индикатор ThreeIndians, могли заметить случаи рассогласования показаний индикатора при определении паттерна и волн индикатора PercentageZigZag. Причем такое рассогласование происходит только с одной волной - CD, которая завершает паттерн (см. рис. 1).

Рис. 1. Рассогласование показаний двух индикаторов.

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

Последняя волна паттерна "Три индейца" заканчивается намного раньше волны, определяемой индикатором PercentageZigZag, по той причине, что высота волны CD, по сравнению с высотой предыдущей волны BC, должна быть не выше некоторого предела, который указывается в настройках индикатора ThreeIndians. На той свече, на которой сейчас (см. рис. 1) отображено окончание волны CD, в какой-то момент действительно было окончание волны индикатора PercentageZigZag. Но поступление новых данных привело к перемещению минимума зиг-зага вниз. Для паттерна "Три индейца" такое положение вещей перестало соответствовать его настройкам, т. к. соотношение высот волн CD и ВС превысило допустимые пределы (см. рис. 2).

Рис. 2. Момент прекращения поддержки паттерна.

Обновленная волна CD выросла до 53 пунктов. Отношение высот волн CD и ВС в итоге превысило 200% (53 / 24 = 221%). Паттерн перестал удовлетворять техническим условиям.

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

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

Рис. 3. Прибыль, принесенная "некорректным" паттерном.

 

Идентификация тренда, предшествующего паттерну

Идея, на основании которой станет возможным установление факта наличия или отсутствия тренда, предшествующего паттерну "Три индейца", не является новой. К примеру, на ее основе построена система 20/200 Павла Смирнова.

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

Рис. 4. Идентификация предшествующего тренда.

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

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

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

Рис. 5. Бракованный паттерн.

Решение об отображении бракованных паттернов основано на двух факторах:

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

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

 

Выявление момента окончания паттерна

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

В оригинале стратегии, основанной на паттерне "Три индейца", для определения момента окончания волны CD Линда Рашке советует использовать расхождение в движениях цены и показаний осцилляторов, таких как MACD и RSI. Нашим вариантом решения задачи будет использование трендового индикатора CCI, а точнее, одного из паттернов, заимствованного из системы Вуди. Это паттерн "Экстремальный крюк" или HFE (см. рис. 6).

Рис. 6. Паттерн "Экстремальный крюк".

Как видим, уже сам по себе этот паттерн вполне работоспособен. Если же направить его энергию на определение мест окончания тренда, то может получиться достаточно перспективный тандем. К примеру, в момент развития волны CD нужно следить за образованием паттернов HFE, дабы сработать на опережение (см. рис. 7).

Рис. 7. Паттерн HFE сигнализирует о раннем окончании волны CD.

В этой ситуации паттерн четко указал на вершину волны CD, когда о ее окончании мы еще даже не задумывались. Это идеальный пример работы на опережение. Но ситуация может повернуться и другой стороной: волна CD уже точно закончилась, а паттерн HFE так и не зафиксирован. Значит, стоит подождать его образования (см. рис. 8).

Рис. 8. Позднее подтверждение окончания тренда.

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

Для целей совместного использования паттерна "Три индейца" и "Экстремальный крюк" индикатор Woodie'sCCI_v6 был упрощен до версии Woodie'sCCI_OnlyHFE, которая оперирует только одним паттерном - HFE.

Во второй версии индикатора, ThreeIndians_TrendComfirm, мы встроим алгоритм ожидания появления восходящего паттерна HFE после нисходящего паттерна "Три индейца" и, соответственно, алгоритм ожидания нисходящего паттерна HFE после восходящего паттерна "Три индейца". Выглядеть это будет так (см. рис. 9):

Рис. 9. Сигнал подтверждения от HFE.

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

 

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

Новый индикатор отличается от первой версии индикатора расширенным списком настроечных параметров. Перечислим новые параметры. Их всего четыре:

1. i_showPatterns - переключатель для отображения (true) или скрытия (false) паттернов "Три индейца". Используется со значением false при вызове индикатора из советника, что предотвращает путаницу в случае одновременной работы на графике советника и индикатора.

2. i_mainCCIperiod - количество баров, на основании которого рассчитывается значение индикатора CCI.

3. i_hfeBarGreatThan - удаление линии CCI от нулевой линии, которое требуется для фиксации паттерна "Экстремальный крюк". На таком расстоянии достаточно нахождения среднего из трех последовательных баров. Соседние бары могут иметь значение CCI, которое находится на удалении от нулевой линии, меньшем, чем i_hfeBarGreatThan единиц.

4. i_failPatternColor - цвет линий, которыми отображается бракованный паттерн "Три индейца".

 

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

Для автоматизации торговли на основании показаний индикатора, можно создать советник, который будет обращаться за информацией к индикатору ThreeIndians_TrendConfirm. В данном случае имеет смысл реагировать на сигналы покупки и продажи, подаваемые индикатором. Для чтения этих сигналов необходимо следить за показаниями буферов индикатора, имеющих индексы 2 и 3. Буфер с индексом 2 - это сигналы покупки, а буфер с индексом 3 - сигналы продажи.

Таким образом, часть кода советника для реакции на сигналы индикатора будет следующей:

 
   double up = iCustom(NULL, 0, "ThreeIndians_TrendConfirm", false, 2, 0);
   double dn = iCustom(NULL, 0, "ThreeIndians_TrendConfirm", false, 3, 0);
   
   if (up == EMPTY_VALUE && dn == EMPTY_VALUE)
      return (0);
   
   if (up != EMPTY_VALUE)
   {
      Print("Сигнал покупки");
   }
   if (dn != EMPTY_VALUE)
   {
      Print("Сигнал продажи");
   }

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

 

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

Март 2013

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

2.857145
 
 
X
Loading