English 中文 Español Deutsch 日本語 Português
ZUP - зигзаг универсальный с паттернами Песавенто. Часть 1

ZUP - зигзаг универсальный с паттернами Песавенто. Часть 1

MetaTrader 4Примеры | 25 апреля 2007, 15:48
12 666 4
Eugeni Neumoin
Eugeni Neumoin


Введение

Все, кто серьезно относится к работе на финансовых рынках, рано или поздно создают свои индивидуальные торговые системы. Результатом поиска своей торговой системы у автора данной статьи стал индикатор ZUP – зигзаг универсальный с паттернами Песавенто. От компании MetaQuotes Software поступило предложение написать статьи об этом индикаторе. Попытаюсь это сделать. В статьях будет приведено описание возможностей индикатора ZUP версии 60 (ZUP_v60). Так получилось, что ДЦ, через которые автор получает доступ к финансовым рынкам, используют торговый терминал MetaTrader 4. Стандартные индикаторы, включенные в поставку терминала, не давали возможности для анализа рынка в нужном разрезе с необходимой оперативностью. Автор предпочитает обустраивать то место, где живет, а не искать счастья на стороне. Следовательно, необходимо было сделать так, чтобы с помощью клиентского терминала MetaTrader 4 можно было проводить необходимый анализ рынка. Благо, в терминале имеются возможности с помощью встроенного языка программирования MQL 4 создавать свои индикаторы.

За прошедший год с начала разработки индикатора появилось много интересных идей. Многие из этих идей реализованы. Притоку идей способствовало то, что индикатор был с открытым кодом и находился в свободном доступе. Это принципиальное решение – делать некоммерческий индикатор. Как показывает практика, разработка некоммерческого индикатора – оптимальное решение.


Теоретическая часть.

После непродолжительного исследования появилась идея объединения в одном универсальном индикаторе зигзагов с различными алгоритмами и автоматического построения паттернов Песавенто и Фибо-уровней от переломов ZigZag. Также стало понятно, что можно автоматизировать построение различных графических инструментов, а не только паттерны Песавенто и Фибо-уровни. Был организован поиск идей в плане того, что можно реализовать в универсальном индикаторе. Была поставлена задача раскрыть все потенциальные возможности, которые заложены в инструменте ZigZag. В результате удалось реализовать автоматическое построение большого количества известных графических инструментов. Также были реализованы несколько новых графических инструментов, идея которых была предложена различными людьми на форуме ONIX. Логика работы индикатора простая:

  1. Подаем на вход индикатора котировки выбранного финансового инструмента;
  2. С помощью различных ZigZag находим на графике котировок максимумы и минимумы рынка;
  3. К найденным максимумам и минимумам привязываем различные графические инструменты.

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


Недавно прочитал книгу [1]. Подзаголовок этой книги – "Тайны золотого сечения". В книге рассказывается о проявлениях золотого сечения во всех явлениях природы. После этого прочитал работу [2]. Эти два литературных источника помогли понять, куда, в какую сторону развивается индикатор. Ранее развитие шло немного хаотично. Приведу несколько цитат из работы Ю.Н. Соколова:

«Существует ли вообще основа мироздания и если существует, то, что это такое? На этот вопрос мы достаточно ясно ответили в своей общей теории цикла, которую мы развиваем с 1981 года. Да, основа мироздания существует и она является универсальной структурой взаимодействия. Любое взаимодействие, а мир, по существу, это не что иное как взаимодействие материальных объектов, построено по универсальной схеме, своеобразному шаблону. Этот шаблон устроен циклически, то есть время в нем движется по кругу, а изменения любого параметра описываются волнообразной кривой. Данный шаблон мы назвали квантом взаимодействия… Изучение устройства кванта взаимодействия привело нас к выводу, что весь окружающий мир описывается одним единственным законом – законом циклической структуры пространства-времени кванта взаимодействия…» [2, Стр. 7].

Во взаимодействии участвуют две силы.

«Золотое сечение – константа кванта взаимодействия… …Возникает вопрос о пределе увеличения одной силы и уменьшения второй. Такой предел должен существовать и это вытекает из следующих рассуждений. Представим, что такого предела нет. Тогда можно увеличивать одну силу и уменьшать вторую силу до нуля. Мы приходим к тому, что остается только одна сила, а это равносильно исчезновению взаимодействия. Такого, естественно, быть не может. Следовательно, предел увеличения одной силы и уменьшения второй существует. Вопрос о пределе изменения сил, на наш взгляд, можно решить на основе золотого сечения. В последние годы в российской науке наблюдается оживление в исследовании роли золотого сечения в разных областях науки и техники. Учеными убедительно показывается, что золотое сечение выступает как универсальная мировая константа. Однако природа золотого сечения остается непознанной. Мы думаем, что природу золотого сечения можно раскрыть только в рамках общей теории цикла (ОТЦ)…» [2, Стр. 29].


Как применить основные положения ОТЦ в научных исследованиях. Колебательный характер взаимодействия обусловлен «игрой» или взаимодействием двух противоположно направленных и взаимообусловленных сил, тенденций. Именно эта «игра» и определяет структуру цикла. Следовательно, чтобы применить общую теорию цикла, необходимо начать с самого главного – с выявления двух противоположных сил. При исследовании разных систем названия этих сил будут всякий раз разные. Если берется взаимодействие в неорганической природе, то эти силы будут выступать как силы действия и противодействия… Четкое выявление этих сил в каждом исследовании самое важное и решающее для дальнейшего анализа. После того, как выявлены две противоположные тенденции, необходимо установить два противоположных и взаимообусловленных полюса цикла. Один полюс слагается из максимального значения положительной силы и минимального значения отрицательной силы. Второй полюс является противоположностью первого и слагается из минимального значения положительной силы и максимального значения отрицательной силы. Как было показано в нашем изложении, именно, между этими полюсами и осуществляется колебательный процесс.


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


Не буду приводить здесь иллюстрации и формулы из работы [3]. Они достаточно интересны. Любой желающий может самостоятельно ознакомиться с данной работой.


На финансовых рынках выявить две противоположные силы несложно - это "быки" и "медведи". Для выявления полюсов циклов (экстремумов) на финансовых рынках в индикаторе ZUP применяется ZigZag. Алгоритмов построения индикатора ZigZag много. В ZUP встроены индикаторы ZigZag с различными алгоритмами. Очень важно нахождение точного расположения экстремумов как по времени, так и по цене, то есть экстремумы должны быть расположены точно на максимуме или минимуме соответствующего ценового бара. Это необходимо для дальнейшего правильного прогнозирования развития цикла. Для исследования процессов взаимодействия между полюсами цикла используются различные графические инструменты. Так как золотое сечение проявляет себя во всех явлениях природы, в ZUP также делается упор на различные Фибо-инструменты. Графические инструменты привязываются к точкам экстремумов рынка, найденных с помощью ZigZag.


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


Описание индикаторов ZigZag, встроенных в ZUP

В ZUP имеется много различных параметров. Главный параметр - ExtIndicator. Данный параметр выбирает ZigZag, с помощью которого будут находиться экстремумы рынка. Номер ExtIndicator задавался по порядку по мере встраивания нового ZigZag или нового режима в ZUP. Сразу хочу сказать, что какой бы ни был ZigZag, он не пересчитывается на каждом тике. Пересчет происходит:

  1. при выходе цены за пределы нулевого бара (рынок поднимается выше High нулевого бара, ниже Low нулевого бара или появляется новый нулевой бар);
  2. при подкачке более ранней истории;
  3. после включения терминала при подкачке истории, появившейся за время, пока терминал был выключен.

Стиль вывода всех индикаторов ZigZag задается параметром ExtStyleZZ:

  1. ExtStyleZZ = true - задает стиль линий ZigZag через вкладку ЦВЕТА (меню Графики->Список индикаторв->ZUP_v60->Свойства->Цвета);
  2. ExtStyleZZ = false - ZigZag выводится точками у минимумов и максимумов.

Первый ZigZag
ExtIndicator = 0 включает стандартный ZigZag, который поставлялся с клиентским терминалом MetaTrader 4 до лета 2006 года. Этот ZigZag немного модифицирован. Идеи для модификации были взяты из статьи Николая Косицина "Многократный пересчет нулевого бара в некоторых индикаторах". Также были использованы собственные наработки. Параметры для настройки этого ZigZag:

  1. minBars соответствует ExtDepth в ZigZag из поставки MetaTrader 4;
  2. ExtDeviation соответствует ExtDeviation;
  3. ExtBackstep соответствует ExtBackstep.

Второй ZigZag
ExtIndicator = 1 включает ZigZag Алекса (Automatic Channel).
Алгоритм
Вычисляется среднее значение первого бара. Далее на всех последующих барах вычисляется условная средняя цена бара. Определяется направление тренда на следующем баре по смещению условной средней цены бара. Изменение направления тренда происходит при отклонении условной средней цены на заданную величину в пунктах minSize или в процентах minPercent.
Параметры

  1. minSize - фильтр по количеству пунктов, задает количество пунктов;
  2. minPercent - процентный фильтр, задает процент, например, 0.5.

Если используются проценты, ставьте нужное число, причем minSize = 0.

Третий ZigZag

ExtIndicator = 2 разрешает работу с ZigZag Ensign. ZigZag Ensign – условное название. Этот вариант ZigZag был сделан после наблюдения за работой индикатора, на основе которого в Ensign строятся паттерны Песавенто. На сайте Ensign Software было небольшое описание принципов построения этого индикатора. Возможно, в Ensign алгоритм индикатора немного отличается от реализованного в ZUP.
Алгоритм.
Минимум и максимум первого бара сравниваются с минимумами и максимумами следующих баров. Если находится бар, на котором одновременно минимум и максимум больше (меньше) тех, что на первом баре, то определяется направление тренда. Минимум и максимум больше минимума и максимума первого бара – бычий тренд. Минимум и максимум меньше минимума и максимума первого бара – медвежий тренд. Далее идет описание алгоритма для бычьего - восходящего - тренда. Для медвежьего тренда все будет наоборот. Определили, что тренд восходящий. Запоминаем значение максимума бара в переменной hlast. Если на следующем баре максимум будет выше максимума предыдущего бара, на следующем баре продолжается бычий тренд. Запоминаем новое значение максимума бара hlast. При равенстве максимумов считаем, что направление тренда не изменилось. Тренд остается бычий. Если на следующем баре максимум бара ниже предыдущего максимума (hlast), появляются варианты:

  1. Пропускаются minBars баров. При этом на каждом из этих minBars баров максимум должен быть меньше максимума (hlast) последнего бара, после которого пошел отсчет minBars баров. Если хотя бы на одном баре цена превысит максимум (hlast) последнего бара, то тренд будет считаться бычьим до этого бара включительно. И далее со следующего бара начинается отсчет minBars баров. Затем анализируются бары, начиная с minBars + 1 бара. Если hlast – Low[minBars + 1] > minSize, тренд меняет направление на медвежий. То есть, если минимум minBars + 1 бара или любого следующего бара отклоняется от hlast на величину, большую minSize, тренд меняет направление, становится медвежьим. В данном случае minBars + 1 бар считается от последнего максимума (hlast) в сторону нулевого бара;
  2. Если любой из minBars баров закроется ниже последнего минимума, тренд также изменит направление на медвежий, не дожидаясь minBars + 1 бара. Изменение направления тренда и прорисовка нового луча индикатора ZigZag происходят после закрытия бара, на котором тренд развернулся.

Параметры
minBars, minSize – названия взяты такие же, как в программе Ensign.

У ZigZag Алекса и ZigZag Ensign отсутствуют недостатки стандартного индикатора ZigZag: процессор не перегружается, происходит расчет только последнего бара, не бывает нескольких максимумов подряд, последние минимумы и максимумы предсказуемы. Кроме того, последний максимум может только увеличиваться, минимум - только уменьшаться. Это трендовые индикаторы. С другой стороны, для ZigZag Алекса и ZigZag Ensign на разных таймфреймах надо подбирать параметры. Подбор параметров необходим для выявления правильной структуры волн на разных таймфреймах. А для ZigZag ExtIndicator = 0 можно применять одни и те же параметры на разных таймфреймах.

Четвертый ZigZag

ExtIndicator = 3 - разрешает работу с ZigZag Ensign с немного измененным алгоритмом. Для этого варианта надо задавать только значение minBars. Значение minSize, заданное в окне параметров индикатора, будет игнорироваться. Значение minSize переменное и равно размеру бара (от минимума до максимума), на котором заканчивается последний луч индикатора ZigZag. При перерисовке последнего луча индикатора ZigZag вычисляется новое значение minSize.

Пятый ZigZag

ExtIndicator = 4 включает ZigZag tauber'a. Tauber - участник форума ONIX. Приведу описание, любезно предоставленное автором:

"За основу взял метатрадер. (ZigZag из поставки MetaTrader 4 - Прим. nen) Алгоритм рекурсивный, короткий и логически ясный:

  1. Ищется глобальный максимум среди всех баров;
  2. Оставшиеся бары делятся на две части справа и слева от максимального бара;
  3. В обеих половинках ищется глобальный минимум;
  4. Каждая половинка вновь делится пополам и так далее.

При этом процесс управляется, как это и положено в ZigZag, только одним параметром - процентом или разницей в пипсах."

И еще две цитаты:

"Алгоритм рекурсивный - функция нахождения максимума сама вызывает функцию нахождения минимумов и наоборот, последовательно дробя график на все более мелкие фракталы. Процесс останавливается, когда разница цен между очередным максимумом (минимумом) и соседним минимумом (максимумом) становится меньше, чем minSize. Главное отличие в том, что результат работы зависит только от одного параметра minSize, что как раз и является классическим определением ZigZag и обеспечивает точное нахождение всех важных пиков."

Шестой ZigZag

ExtIndicator = 5 включает ZigZag, имитирующий свинги Ганна. Это трендовый индикатор.
Алгоритм
Подробное описание построения свингов Ганна приводится в книге [4]. Некоторые известные индикаторы, строящие свинги Ганна, были созданы по описанному в книге алгоритму. Описание очень подробное. Можно сказать, подробное до занудства. Но, тем не менее, когда начинаешь делать по данному описанию индикатор, возникает много вопросов. Бывают комбинации свечей, которые сложно анализировать, сложно строить свинги. Возникают разные трактовки сложившейся ситуации. Наверно, поэтому известные реализации свингов Ганна в индикаторах имеют те или иные отклонения от алгоритма, описанного в книге.

В нашем случае отличий два. Оба отличия связаны с обработкой внешнего бара. Внешний бар - это бар, имеющий более высокий High и более низкий Low, чем предыдущий. В описании говорится, что на внешнем баре должны быть построены Максимум и Минимум. В индикаторе ZUP сейчас невозможно работать с индикатором ZigZag, у которого минимум и максимум на одном баре. К тому же из описания следует, что минимум и максимум должны чередоваться в определенной последовательности. Сначала должен идти тот экстремум внешнего бара, который ближе к открытию свечи. В реальном времени это реализовать можно. Но на истории начинается "вольное" трактование. И свинги, построенные в реальном времени, могут отличаться от тех, которые будут построены на том же отрезке времени спустя некоторое время по историческим данным. То есть там, где в реальном времени был максимум, при построении на исторических данных можем получить минимум. Чтобы не было неоднозначности, на внешнем баре тенденция будет продолжать ту, что была до внешнего бара. Но так как на внешнем баре тенденция по описанию должна меняться, для промежуточной, основной (главной) тенденции и для тенденций более высоких порядков будем считать внешний бар баром, с которого начинается подсчет баров для выявления дальнейшего развития тенденции. Это - главное отличие. При сравнении с другими индикаторами, рисующими свинги Ганна, это отличие незначительно влияет на выявление свингов. "Мелкие" свинги, которые должны были быть на внешнем баре, роли в общей картине не играли. А в некоторых случаях индикатор выявлял свинги, пропущенные другими индикаторами на значимых участках исторических данных.

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

  1. minBars = 0 - малая тенденция - однобаровая;
  2. minBars = 1 - промежуточная тенденция - двухбаровая;
  3. minBars = 2 - главная (основная) тенденция - трехбаровая;
  4. minBars > 2 - тенденции более высокого порядка.

Режим DT

Впервые режим DT применил klot в своем индикаторе DT-ZigZag.mq4. В этом режиме на график текущего таймфрейма выводится ZigZag, построенный на более старшем таймфрейме. Алгоритм построения в ZUP отличается от того, который разработал klot. Использована только его идея.

В режиме DT используются внешние ZigZag. Внешние ZigZag имеют разные алгоритмы построения. Надо использовать ZigZag, входящие в поставку последней из имеющихся версий ZUP:

  1. ExtIndicator = 6 - режим DT с внешним индикатором ZigZag_new_nen3.mq4. Его алгоритм соответствует ZigZag из режима ExtIndicator = 0;
  2. ExtIndicator = 7 - режим DT с внешним индикатором DT_ZZ.mq4. DT_ZZ.mq4 разработал klot;
  3. ExtIndicator = 8 - режим DT с внешним индикатором CZigZag.mq4. CZigZag.mq4 разработал Candid;
  4. ExtIndicator = 10 - режим DT со свингами Ганна с внешним индикатором Swing_ZZ. mq4. Его алгоритм соответствует ZigZag из режима ExtIndicator = 5.

При установке индикатора ZUP четыре внешних индикатора ZigZag надо скопировать в папку с пользовательскими индикаторами клиентского терминала.
Параметры
GrossPeriod - число минут того таймфрейма, по показаниям которого строится ZigZag в режиме DT. GrossPeriod может принимать следующие значения: 5-15-30-60-240-1440-10080-43200 соответствующие таймфреймам M5-M15-M30-H1-H4-D1-W1-MN. Для всех режимов DT параметром GrossPeriod задается старший таймфрейм, с которого используются данные для построения зигзага на текущем таймфрейме. Кроме GrossPeriod для задания параметров ZigZag используются параметры minBars, ExtDeviation и ExtBackstep:

  1. Для ExtIndicator = 7 параметры ZigZag задаются только значением minBars;
  2. Для ExtIndicator = 8 параметры ZigZag задаются значениями minBars, ExtDeviation;
  3. Для ExtIndicator = 10 параметры ZigZag задаются значением minBars.

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


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

  1. ZigZagHighLow = true - инструменты привязываются к минимумам и максимумам баров младшего таймфрейма;
  2. ZigZagHighLow = false - инструменты привязываются к переломам ZigZag, то есть к минимумам и максимумам баров старшего таймфрейма.

Рассмотрим пример вывода нескольких ZigZag с разных таймфреймов. На график выведены два ZUP_v60 с параметром ExtIndicator = 6. Цвет и диаметр точек выбираем на вкладке ЦВЕТА под номером 5. У первого индикатора Grossperiod = 10080. Цвет точек - Red - и диаметр точек - 5. Цвет линий ZigZag - Maroon на вкладке ЦВЕТА панели выбора параметров индикатора под номером - 0. Количество красных точек - 30. В недельной свече 30 четырехчасовых свечей. У второго индикатора GrossPeriod = 1440. Цвет точек - DarkGreen и диаметр точек - 1. Цвет линий ZigZag - Aqua. Количество темнозеленых свечей - 6. В дневной свече 6 четырехчасовых свечей.



Для того, чтобы было наложение показаний разных индикаторов, как показано на нашем примере (темнозеленые точки были поверх красных), необходимо соблюдать порядок подключения индикаторов ZUP к графику. Сначала подключаем индикатор с красными точками. Потом с темнозелеными. Важное свойство этого режима работы. Если мы график с указанным набором индикаторов переведем с четырехчасового таймфрейма на недельный, то индикатор с темнозелеными точками выводиться на график не будет. Индикатор с темнозелеными точками использует данные с дневного таймфрейма. Дневной таймфрейм по отношению к недельному является младшим. А в режиме DT ведется построение ZigZag на младшем таймфрейме по данным со старшего таймфрейма. Следовательно, на недельном таймфрейме не должен выводиться ZigZag младшего - дневного -таймфрейма. При переходе на период больше дневного данные дневного периода выводиться не должны. Ниже показан вывод индикаторов из рассмотренного примера на дневном графике. Количество точек изменилось. Красных точек стало 5 - число дневных свечей в недельной пять. Темнозеленых точек стало - 1.



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

Еще одно важное дополнение. При работе с режимом DT на таймфрейме GrossPeriod глубина истории котировок должны быть больше, чем на рабочем периоде. Если этого не будет, то при погружении в историю на младшем таймфрейме на большую глубину, чем есть на GrossPeriod, ZigZag будет делать ошибочные построения. Также при работе с режимом DT пропуски котировок на разных таймфреймах вызывают неправильное построение ZigZag. Если в режиме DT ZigZag построился со сбоями, например, построились два минимума или два максимума подряд, то необходимо проверить котировки текущего таймфрейма и таймфрейма GrossPeriod на наличие пропущенных баров. Если имеются пропущенные бары, то необходимо удалить историю соответствующего таймфрейма из каталога C:\Program Files\MetaTrader\history\xxx\ и загрузить историю снова.

ZigZag на индикаторе RSI

ExtIndicator = 9 - режим работы в окне под графиком с индикатором RSI. Была выпущена специальная версия индикатора ZUP_RSI_v48, в которой этот режим был задействован для построения ZigZag по показаниям индикатора RSI. Только в версии ZUP_RSI_v48 используется режим ExtIndicator = 9. В данной версии не используются возможности, появившиеся в версии 49 и более поздних версиях. После подключения к графику данной версии индикатора необходимо переключить таймфрейм, чтобы стали строиться графические инструменты. Алгоритм построения ZigZag RSI трендовый. Пример построения ZUP_RSI_v48 для режима ExtIndicator = 9 на графике из предыдущего примера. Забегая немного вперед скажу, что на график с помощью ZUP_RSI_v48 выведены паттерны Песавенто и статические вилы Эндрюса.



Параметры, используемые в режиме ExtIndicator = 9 (некоторые понятия, встречающиеся ниже при описании параметров этой версии индикатора, будут объяснены во второй статье):

  1. minBars - RSI Period - период усреднения для вычисления индекса;
  2. Price - выбор цены, по которой строится RSI для режима RSI:

    0 - PRICE_CLOSE - Цена закрытия;

    1 - PRICE_OPEN - Цена открытия;

    2 - PRICE_HIGH - Максимальная цена;

    3 - PRICE_LOW - Минимальная цена;

    4 - PRICE_MEDIAN - Средняя цена, (high+low)/2;

    5 - PRICE_TYPICAL - Типичная цена, (high+low+close)/3;

    6 - PRICE_WEIGHTED - Взвешенная цена закрытия, (high+low+close+close)/4;

  3. minPercent - задает через какое количество "пунктов индикатора RSI" появится новый луч зигзага.

Ограничения данного режима:

  1. Можно выводить только один экземпляр индикатора. Второй и последующие экземпляры работают некорректно;
  2. Не стал жестко задавать уровни 100% и 0%. Поэтому пики и впадины ZigZag не будут по высоте совпадать с индикатором RSI. ZigZag будет выводиться на всю высоту окна. При масштабировании графика ZigZag также масштабируется;
  3. Не стал для данной версии исправлять вывод вил Эндрюса для определенных свечей. Для данного режима вывод таких вил неактуален;

Все остальные инструменты ZUP работают в этом режиме. В том числе и подсчет количества баров на луче ZigZag, что интересно для исследований. Также все режимы, задавемые параметром ExtIndicator, работают. При этом ZigZag со всей оснасткой выводится в окне под графиком, а не в окне с графиком. Возможно, какие-то недоработки имеются в данной версии. Сложно протестировать индикатор для такого нестандартного режима. Эта версия индикатора предназначена для экспериментов.


Поиск паттернов Gartley

ExtIndicator = 11 включает индикатор ExtIndicator = 0 в режим активного сканирования для поиска паттернов Gartley. Режим активного сканирования при поиске паттернов Gartley создает большую нагрузку на процессор. При сильных движениях на рынке терминал может зависать на некоторое время. Когда закончится цикл расчета, зависание исчезает. При активном сканировании производится перебор параметра minBars (Depth). Строится ZigZag для каждого значения minBars (Depth). Далее ведется поиск паттернов Gartley на построенном ZigZag. Эта операция повторяется для всего диапазона значений minBars (Depth) от minDepth до maxDepth до тех пор, пока не будет найден паттерн Gartley. Индикатор использует следующие параметры:

  1. ExtGartleyOnOff - включает показ паттернов Gartley для всех режимов, кроме ExtIndicaotr = 11. При этом будет найден паттерн, если он построился, для выбранного режима. Перебора параметров ZigZag при этом не будет. Поиск паттернов Gartley производится на единственном построенном ZigZag. Этот параметр не относится к режиму ExtIndicator = 11;
  2. maxDepth - задает максимальное значение, до которого может изменяться параметр Depth зигзага при активном сканировании для поиска паттернов Gartley. Этот параметр лучше использовать поменьше, чтобы была меньше нагрузка на процессор. Но, с другой стороны, слишком маленькое значение не позволит найти некоторые паттерны. Параметр необходимо подобрать экспериментально;
  3. minDepth - задает минимальное значение Depth для поиска паттернов Gartley;
  4. DirectionOfSearchMaxMin - задает направление перебора параметра Depth:

    false - от minDepth к maxDepth;
    true - от maxDepth к minDepth.

    Лучше использовать true. При этом в первую очередь будут найдены более "крупные" паттерны Gartley.В некоторых случаях образуется несколько паттернов в "рабочей зоне". То есть точки D паттернов совпадают или находятся рядом. При активном сканировании поиск останавливается при нахождении первого паттерна. Выбор направления поиска паттернов дает возможность выбора, какой паттерн будет найден: с минимальными размерами или с максимальными размерами.

  5. maxBarToD - задает максимальное количество баров от нулевого бара до точки D паттерна. Если на этом участке паттерн не найден, то далее этого количества баров поиск паттернов проводиться не будет. Для торговли важно, чтобы точка D была на ближайших барах от нулевого бара. При расположении точки D на большом расстоянии от нулевого бара паттерн может быть уже не актуален для торговли;
  6. ExtDeltaGartley - задает допуск на отклонение цены от рекомендованных значений ретресментов паттерна. По умолчанию 0.09 - 9%;
  7. ExtCD - величина луча CD паттерна относительно луча BC, после которой начинается анализ паттерна;
  8. ExtColorPatterns - цвет треугольников паттернов.

Чтобы посмотреть, какой паттерн найден, необходимо включить параметр infoTF. Во второй строке комментариев будет выводиться название и тип паттерна - медвежий или бычий. Для поиска паттернов используется алгоритм активного сканирования. Если паттерн будет найден, то будет построен зигзаг с параметрами:

  1. Depth - значение, при котором на построенном ZigZag был найден паттерн;
  2. ExtDeviation и ExtBackstep - параметры, заданные в окне параметров индикатора.

Найденный паттерн как бы калибрует ZigZag найденным значением Если паттерн найден не будет, то будет построен ZigZag с параметрами: minBars, ExtDeviation и ExtBackstep - заданные в ZUP параметры.

В имени треугольников, закрашивающих паттерны, можно увидеть значение ExtIndicator, параметры зигзага для соответствующего ExtIndicator и количество баров до точки D. Имя треугольников доступно через свойства треугольников. Открыв свойства треугольника, в названии графического объекта увидим, например, *Triangl2_ExtIndicator=0_11/5/3_14 , где:

  1. * - номер комплекта ZUP;
  2. Triangl2 - правый треугольник паттерна;
  3. ExtIndicator=0 - загзаг, на котором построен паттерн;
  4. 11/5/3 - minBars=11, ExtDeviation=5, ExtBackstep = 3;
  5. 14 - число баров до точки D паттерна.

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

Модель Медвежьего паттерна Gartley

Модель Бычьего паттерна Gartley

Если строить четко все ретресменты, как описал Scott Carney (Harmonic Price Patterns), то точка D паттерна будет находиться в диапазоне. Диапазон получается из-за того, что точку D можно определить по разным ретресментам: через ретресмент BD и через ретресмент XD (ретресмент XD равен отношению отрезка AD в пунктах к отрезку XA. Ретресмент XD=AD/XA). И эти ретресменты часто не сходятся в одной точке. Из-за такой неоднозначности также следует, что алгоритм построения бабочек должен быть "оптовым". Алгоритм должен захватывать все допустимые ретресменты оптом. Отсюда и название "оптовый" алгоритм.

Когда бабочка построена по "оптовому" алгоритму, начинается более тонкая настройка с помощью паттернов Песавенто и с помощью динамических и статических Фиб-инструментов для выяснения условий торговли. ZUP находит некое пространственно-временное образование и дает ему название какого-либо паттерна Gartley. Далее с этим образованием необходимо проделывать определенную работу для выяснения условий торговли. Обязательно необходимо применять фильтры для определения точек входа в рынок. Фильтрами могут быть комбинации свечей, трендовые линии или другие индикаторы. Пример построения в режиме ExtIndicator = 11:



На этом завершаю обзор ZigZag, встроенных в индикатор ZUP_v60.

Заключение

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

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

  1. ошибки в коде индикатора;
  2. неточности из-за особенностей привязки (примагничивания) графических инструментов к барам в MetaTrader 4. В частности, каналы Фибоначчи в некоторых случаях невозможно построить должным образом;
  3. если построен графический инструмент с помощью ZUP на каком-либо таймфрейме и сохранен на графике, то при переключении MetaTrader 4 на другой таймфрейм этот графический инструмент часто меняет свои размеры и направление линий. Возникает ошибочное построение графического инструмента. Во второй статье будет предложено разработчикам MetaTrader 4, как изменить эту особенность. Если графический инструмент не сохранять на графике, а использовать его совместно с ZUP, то при переключении на другой таймфрейм ошибочных построений не возникает. Достигается это с помощью пересчета точек привязки графических инструментов.

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

Литература

  1. А. Стахов, А, Слученкова, И. Щербаков «Код да Винчи и ряды Фибоначчи». Издание Питер, 2007 год;
  2. Соколов Ю.Н. «Общая теория цикла или единая теория физических взаимодействий. » СевКавГТУ. Ставрополь, 2003 г. (С) Северо-Кавказский государственный технический университет;
  3. Соколов Ю.Н. «Общая теория цикла»;
  4. Джеймс Хьержик "Модель. Цена и Время. Применение Теории Ганна в системах торговли";
  5. S.Carney. The Harmonic Trader;
  6. L.Pesavento. Fibonacci Ratios with Pattern Recognition;
  7. L.Pesavento. Profitable Patterns for Stock Trading.
Прикрепленные файлы |
ZUP_RSI_v48.zip (30.89 KB)
ZUP_v60.zip (38.06 KB)
Последние комментарии | Перейти к обсуждению на форуме трейдеров (4)
[Удален] | 25 апр. 2007 в 17:24
Klass! Ogromnoe spasibo! Davno ug pora bilo perenesti tak skazaty vse eto delo s foruma na mql.com :D
[Удален] | 25 апр. 2007 в 23:22
Да, интересно, мне понравилось!:) Спасибо!
Владимир
Владимир | 3 июн. 2007 в 11:13
Зигзагами не увлекаюсь, но статья очень хорошая!
marker
marker | 1 июл. 2012 в 08:36
До сих пор пользуюсь версией ZUP 60, все апгрейды вплоть до версии 109 не нравятся.
Строки: таблица символов ASCII и её использование Строки: таблица символов ASCII и её использование
В этой статье мы детально рассмотрим таблицу символов ASCII и как её можно использовать. Также мы рассмотрим несколько новых функций, принцип работы которых основан на специфике строения таблицы ASCII, и в конце создадим новую библиотеку, в которую включим эти функции. Они достаточно популярны в других языках программирования, но их нет среди встроенных функций. Кроме того мы очень детально разберём основы работы со строками, так что, я думаю, вы обязательно узнаете что-нибудь новое про этот полезный тип данных.
Автоматическая оптимизация торгового робота в процессе реальной торговли Автоматическая оптимизация торгового робота в процессе реальной торговли
В статье описана и представлена библиотека функций, позволяющая проводить оптимизацию входных параметров советника, запуская оптимизацию непосредственно из советника.
Автоматизированный выбор ДЦ для эффективной работы экспертов Автоматизированный выбор ДЦ для эффективной работы экспертов
Не секрет, что для эффективной работы экспертов нужно найти подходящий ДЦ. В данной статье представлен системный подход для этого поиска. Показан процесс создания программы с dll для работы с разными терминалами.
Советник на заказ. Инструкция для трейдера. Советник на заказ. Инструкция для трейдера.
Далеко не все трейдеры - программисты. А из них далеко не все - хорошие программисты. Что делать, если надо автоматизировать свою систему, а времени и желания учить язык MQL 4 нет?