Исследование паттернов (моделей) японских свечей

Dmitry Voronkov | 3 августа, 2010

«Изучая прошлое, мы познаем настоящее»

Введение

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

Свечи создают наглядную психологическую картину торговли. После ознакомления и небольшой практики свечи станут частью вашего аналитического арсенала. Графики японских свечей позволяют проникнуть «внутрь» финансовых рынков, что очень трудно сделать с помощью других графических методов. Они одинаково хорошо подходят для любых рынков.

1. Типы свечей

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

Рис. 1 Структура свечи

Рисунок 1. Структура свечи 

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

Свечи могут иметь тени - нижнюю и верхнюю, длина теней зависит от расстояний между ценами открытия/закрытия и минимальными/максимальными ценами.

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

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

 Свечи Описание
 

Длинные свечи

«Длинные свечи». Ссылка на длинные свечи широко распространена в литературе, посвященной японским свечам.
Термин «длинный» имеет отношение к длине тела свечи, разнице между ценой открытия и ценой закрытия.
Лучше всего рассматривать самые последние движения цены, чтобы определить, что является длинным, а что нет.
Пять или десять предыдущих дней — вполне адекватный промежуток, чтобы прийти к верному выводу.
 

Короткие свечи

 «Короткие свечи». Определение коротких свечей может быть основано на той же самой методологии, что и в случае длинных свечей, со схожими результатами.
Кроме того, есть множество свечей, которые не попадают ни в одну из этих двух категорий.
Марибозу
«Марибозу». Слово «марибозу» в японском языке означает «коротко остриженный».
В любом случае значение этого слова отражает тот факт, что от тела свечи не отходит тени вверх и/или вниз, либо они очень малы.

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

Белая марибозу — это длинное белое тело без тени с одной из сторон. Это крайне сильная свеча. В противоположность черной марибозу она часто оказывается частью бычьей модели продолжения или медвежьей разворотной модели.
Доджи
«Доджи». Если тело свечи настолько мало, что цены открытия и закрытия совпадают, она называется доджи (совпадающая).
Требование, чтобы цены открытия и закрытия были в точности равными, накладывало бы на данные слишком жесткое ограничение, и доджи появлялись бы крайне редко.
Если разница между ценами открытия и закрытия не превышает нескольких тиков (минимального изменения цены), этого более чем достаточно.
Волчки
«Волчки» — Это «короткие свечи» с нижней и/или верхней тенью, длина которой больше чем длина тела.
Иногда их называют «белый» и «черный» доджи. Волчок указывает на нерешительность быков и медведей.
Цвет тела волчка, так же как и длина его теней, не важен. Малое относительно теней тело — вот что делает волчок волчком.
 

"Повешенный" и "Молот"

«Повешенный» и «Молот». Свечи с длинными нижними тенями и маленькими телами. Тела находятся в верхней части диапазона цен.
Удивительным свойством этих свечей является то, что они могут быть и бычьими, и  медвежьими в зависимости от того, в какой фазе тенденции они возникают.
Появление названных свечей при нисходящей тенденции — сигнал того, что ее господство на рынке подходит к концу, в данном случае свеча называется «молотом».
Если свеча, появляется при восходящей тенденции, это говорит о ее возможном завершении и свеча имеет зловещее название — «повешенный».
Звезда
«Звезда» появляется всякий раз, когда маленькое тело отрывается вверх или вниз от предыдущего длинного тела, цвет тела неважен.
В идеале разрыв должен бы захватывать и тени, но это не является совершенно необходимым. Звезда указывает на некоторую неуверенность, царящую на торговой площадке.
Звезды входят во многие свечные модели, в основном разворотные.

 Таблица 1. Типы свечей

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

2. Идентификация базовых типов свечей

2.1. Необходимые структуры

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

Например: Вечерняя звезда (медвежья модель). Направление тренда вверх. Первая и третья свеча — «длинные». Тени звезды короткие, цвет значения не имеет. Классическая модель: отрыв звезды от Close первой свечи, для Форекс и внутри дня: Close первой свечи и Open звезды равны. Третья свеча закрывается внутри тела первой.

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

//+------------------------------------------------------------------+
//|   Функция распознавания типа свечи для советника                 |
//+------------------------------------------------------------------+
bool RecognizeCandle(string symbol,
                     ENUM_TIMEFRAMES period,
                     datetime time,
                     int aver_period,
                     CANDLE_STRUCTURE &res)
  {
   static MqlRates rt[];
//--- Get details of the previous candlestick
   int tmp=0;
   if((tmp=CopyRates(symbol,period,time,aver_period+1,rt))<aver_period)
     {
      return(false);
     }
//---
   return(RecognizeCandleMain(rt,aver_period,res));
  }

где:

Данная функция использует функцию CopyRates для получения данных предыдущих aver_period+1 свечей. Обратите внимание на то, в каком порядке хранятся данные в получаемом массиве. И используется при написании советников (Experts), но для индикаторов, лучше использовать другую функцию.

//+------------------------------------------------------------------+
//|   Функция распознавания типа свечи для индикаторов               |
//+------------------------------------------------------------------+
bool RecognizeCandle(const datetime &time[],
                     const double &open[],
                     const double &high[],
                     const double &low[],
                     const double &close[],
                     const long &tick_volume[],
                     const long &volume[],
                     const int &spread[],
                     const int index,
                     const int aver_period,
                     CANDLE_STRUCTURE &res)
  {
   static MqlRates rt[];
   ArrayResize(rt,aver_period+1);
//--- Filling the array with the chart data
   for(int i=0; i<=aver_period; i++)
     {
      rt[i].time=time[index+(i-aver_period)];
      rt[i].open=open[index+(i-aver_period)];
      rt[i].high=high[index+(i-aver_period)];
      rt[i].low=low[index+(i-aver_period)];
      rt[i].close=close[index+(i-aver_period)];
      rt[i].tick_volume=tick_volume[index+(i-aver_period)];
      rt[i].real_volume=volume[index+(i-aver_period)];
      rt[i].spread=spread[index+(i-aver_period)];
     }
   return(RecognizeCandleMain(rt,aver_period,res));
  }
где:

Определимся, какие результаты нам нужны, исходя из правил распознавания свечной модели:

Создадим структуру:

//+------------------------------------------------------------------+
//| Структура CANDLE_STRUCTURE                                       |
//+------------------------------------------------------------------+
struct CANDLE_STRUCTURE
  {
   double            open,high,low,close; // OHLC
   datetime          time;     //Время
   TYPE_TREND       trend;    //Тренд
   bool              bull;     //Бычья свеча
   double            bodysize; //Размер тела
   TYPE_CANDLESTICK  type;    //Тип свечи
  };

где trand и type - переменные типа перечисления:

//+------------------------------------------------------------------+
//|   ENUM TYPE CANDLESTICK                                          |
//+------------------------------------------------------------------+
enum TYPE_CANDLESTICK
  {
   CAND_NONE,          //Неопознаная
   CAND_MARIBOZU,       //Марибозу
   CAND_MARIBOZU_LONG, //Марибозу длинный
   CAND_DOJI,           //Дожи
   CAND_SPIN_TOP,       //Волчки
   CAND_HAMMER,         //Молот
   CAND_INVERT_HAMMER, //Перевернутый молот
   CAND_LONG,           //Длинная
   CAND_SHORT,          //Короткая
   CAND_STAR            //Звезда
  };
//+------------------------------------------------------------------+
//|   TYPE_TREND                                                     |
//+------------------------------------------------------------------+
enum TYPE_TREND
  {
   UPPER,   //Восходящий
   DOWN,    //Нисходящий
   LATERAL  //Боковой
  }; 

Рассмотрим подробнее функцию RecognizeCandleMain() в которую мы передаем массив структур MqlRates.

2.2. Распознавание типа свечи

//+------------------------------------------------------------------+
//|   Функция распознавания типа свечи основная                      |
//+------------------------------------------------------------------+
bool RecognizeCandleMain(const MqlRates &rt[],
                         int aver_period,
                         CANDLE_STRUCTURE &res)
  {

Начинаем заполнять нашу возвращаемую структуру CANDLE_STRUCTURE данными.

   res.open=rt[aver_period].open;
   res.high=rt[aver_period].high;
   res.low=rt[aver_period].low;
   res.close=rt[aver_period].close;
   res.time=rt[aver_period].time;

Определение тренда. Что такое тренд? Если бы на этот вопрос имелся достаточно полный ответ, были бы раскрыты секреты рынка. В нашей статье мы будем использовать методику определения тренда с помощью скользящей средней.

MA=(C1+C2+…+Cn)/N,
где C – цены закрытия, N – число баров.

Л. Моррис в своей книге «Японские свечи метод анализа акций и фьючерсов, проверенный временем» использует для идентификации краткосрочного тренда скользящую среднюю с периодом десять,   если цена закрытия выше средней – тренд восходящий, если ниже – нисходящий.

Вот как это выглядит:

//--- Определяем направление тренда
   double aver=0;
   for(int i=0;i<aver_period;i++)
   {
      aver+=rt[i].close;
   }
   aver=aver/aver_period;
   
   if(aver<res.close) res.trend=UPPER;
   if(aver>res.close) res.trend=DOWN;
   if(aver==res.close) res.trend=LATERAL;

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

//--- Определяем бычья свеча или медвежья
   res.bull=res.open<res.close;
//--- Получаем абсолютную величину тела свечи
   res.bodysize=MathAbs(res.open-res.close);
//--- Получаем размеры теней
   double shade_low=res.close-res.low;
   double shade_high=res.high-res.open;
   if(res.bull)
     {
      shade_low=res.open-res.low;
      shade_high=res.high-res.close;
     }
   double HL=res.high-res.low;
//--- Вычисляем средний размер тела предыдущих свечей
   double sum=0;
   for(int i=1; i<=aver_period; i++)
      sum=sum+MathAbs(rt[i].open-rt[i].close);
   sum=sum/aver_period;

Теперь займемся непосредственно идентификацией типов свечей.

2.3. Правила идентификация типов свечей

«Длинные» свечи. Для определения «длинной» свечи, проверим величину текущей свечи относительно среднего значения aver_period предыдущих свечей.

(Тело) > (усредненное тело последних пяти дней) *1.3

//--- long 
   if(res.bodysize>sum*1.3) res.type=CAND_LONG;

«Короткие» свечи. Для определения «коротких» свечей используем тот же принцип, что и для «длинных», только изменим условие.

(Тело) < (усредненное тело последних X дней) *0.5

//--- short 
   if(res.bodysize<sum*0.5) res.type=CAND_SHORT;

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

(Тело доджи) < (диапазон от максимальной до минимальной цены) * 0.03

//--- doji
   if(res.bodysize<HL*0.03) res.type=CAND_DOJI;

«Марибозу». Это свеча, у которой нет максимума или минимума, либо они очень малы

(нижняя тень) < (тела) * 0.03 или (верхняя тень) < (тела) * 0.03

//--- maribozu
   if((shade_low<res.bodysize*0.01 || shade_high<res.bodysize*0.01) && res.bodysize>0)
     {
      if(res.type==CAND_LONG)
         res.type=CAND_MARIBOZU_LONG;
      else
         res.type=CAND_MARIBOZU;
     }

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

«Молот» и «Повешенный».  Тело расположено в верхней части дневного диапазона, а нижняя тень значительно длиннее, чем тело. Необходимо также рассмотреть длину верхней тени, если таковая имеется. Отношение между телом и нижней тенью определяется как процентное отношение длины тела к длине нижней тени:

(нижняя тень)>(тело)*2 и  (верхняя тень)< (тело)*0.1

//--- hammer
   if(shade_low>res.bodysize*2 && shade_high<res.bodysize*0.1) res.type=CAND_HAMMER;

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

(нижняя тень)<(тело)*0.1 и  (верхняя тень)> (тело)*2

//--- invert hammer
   if(shade_low<res.bodysize*0.1 && shade_high>res.bodysize*2) res.type=CAND_INVERT_HAMMER;

«Волчки». Это «короткие» свечи с тенями длиннее тела:

(нижняя тень) > (тело)  и  (верхняя тень) > (тело)

//--- spinning top
   if(res.type==CAND_SHORT && shade_low>res.bodysize && shade_high>res.bodysize) res.type=CAND_SPIN_TOP;

Исходный текст функции и описания структур находятся во включаемом файле CandlestickType.mqh. 

Также к статье прилагается индикатор Candlestick Type Color.mq5, который раскрашивает свечи на графике в зависимости от их типа.

 Рисунок 2. Пример работы индикатора Candlestick Type Color.mq5

Итак, мы создали функцию, которая возвращает все необходимые данные.

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

3. Свечные модели (паттерны) и алгоритмы их идентификации

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

Свечные модели делятся на два типа – модели разворота и модели продолжения.

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

Модели будут представлены в форме таблицы, в первой строке бычья модель, во второй - противоположная ей медвежья модель, если она существует.

3.1. РАЗВОРОТНЫЕ МОДЕЛИ СВЕЧЕЙ

3.1.1. Модели, состоящие из одной свечи

Получаем данные для одной свечи:

//--- расчет свечных моделей
   for(int i=limit;i<rates_total-1;i++)
     {
      CANDLE_STRUCTURE cand1;
      if(!RecognizeCandle(_Symbol,_Period,time[i],InpPeriodSMA,cand1))
         continue;
/* Проверка паттернов с одной свечей */

и распознаем модели.

Название модели Ордер Классическая модель Форекс Распознавание модели
Перевернутый
молот
(бычья)
Inverted Hammer

Buy

 Тренд нисходящий.
 Верхняя тень не менее чем в 2, и не более чем в 3 раза больше тела.
 Нижней тени нет, или она очень короткая (не более 10% диапазона свечи).
 Цвет тела при долгосрочной игре значения не имеет; при краткосрочной — белый молот намного сильнее черного.
 Подтверждение обязательно.

Повешенный/Висельник
(медвежья)
Hanging Man

Sell

 Тренд восходящий.
 Нижняя тень не менее чем в 2, и не более чем в 3 раза больше тела.
 Верхней тени нет, или она очень короткая (не более 10% диапазона свечи).
 Цвет тела при долгосрочной игре значения не имеет; при краткосрочной - черный повешенный намного сильнее белого.
 Подтверждение обязательно.

      //------      
      // Inverted Hammer the bull model / Перевернутый молот бычья модель
      if(cand1.trend==DOWN && // проверяем направление тренда
         cand1.type==CAND_INVERT_HAMMER) // проверка "перевернутый молот"
        {
         comment=_language?"Перевернутый молот (Б)":"Invert Hammer";
         DrawSignal(prefix+"Inverted Hammer the bull model"+string(objcount++),cand1,InpColorBull,comment);
        }
      // Handing Man the bear model / Висельник медвежья модель
      if(cand1.trend==UPPER && // проверяем направление тренда
         cand1.type==CAND_HAMMER) // проверка "молот"
        {
         comment=_language?"Висельник (М)":"Handing Man";
         DrawSignal(prefix+"Handing Man the bear model"+string(objcount++),cand1,InpColorBear,comment);
        }

Название модели Ордер Классическая модель Форекс Распознавание модели
Молот
(бычья)
Hammer

Buy

 Тренд нисходящий.
 Нижняя тень не менее чем в 2, и не более чем в 3 раза больше тела.
 Верхней тени нет или она очень короткая (не более 10% диапазона свечи).
 Цвет тела при долгосрочной игре значения не имеет; при краткосрочной — белый "Молот" намного сильнее черного.
 Подтверждение обязательно.
Падающая звезда
(медвежья)
Shooting Star

Sell

 Тренд восходящий.
 Верхняя тень не менее чем в 3 раза больше тела.
 Нижней тени нет, или она очень короткая (не более 10% диапазона свечи).
 Ценовый разрыв вверх между звездой и предыдущей свечой.
 Форекс: цена Close предыдущей свечи и Open звезды равны.
 Цвет тела значения не имеет.
 Подтверждение обязательно.

      //------      
      // Hammer the bull model / Молот бычья модель
      if(cand1.trend==DOWN && // проверяем направление тренда
         cand1.type==CAND_HAMMER) // проверка "молот"
        {
         comment=_language?"Молот (Б)":"Hammer";
         DrawSignal(prefix+"Hammer the bull model"+string(objcount++),cand1,InpColorBull,comment);
        }
      //------      
      // Shooting Star the bear model / Падающая звезда медвежья модель
      if(cand1.trend==UPPER && cand2.trend==UPPER && // проверяем направление тренда
         cand2.type==CAND_INVERT_HAMMER) // проверка "перевернутый молот"
        {
         comment=_language?"Падающая звезда (М)":"Shooting Star";
         if(_forex)// если форекс
           {
            if(cand1.close<=cand2.open) // close 1 ниже равно open 1
              {
               DrawSignal(prefix+"Shooting Star the bear model"+string(objcount++),cand2,InpColorBear,comment);
              }
           }
         else
           {
            if(cand1.close<cand2.open && cand1.close<cand2.close) // 2 свеча оторвана от 1
              {
               DrawSignal(prefix+"Shooting Star the bear model"+string(objcount++),cand2,InpColorBear,comment);
              }
           }
        }

Хочется обратить ваше внимание на то, что в случае с «падающей звездой» на самом деле необходимо две свечи, поскольку согласно условиям распознавания тело предыдущего дня принимается во внимание.

Название модели Ордер Классическая модель Форекс Распознавание модели
Захват за пояс
(бычья)

Bullish Belt Hold

Buy

Модель
не
реализуется
 Тренд нисходящий.
 Открытие свечи с большим отрывом в направлении тренда.
 Белая свеча — «марибози» «длинная».
 Тело белой свечи значительно больше, чем тело предшествующей свечи.
 Подтверждение обязательно.
Захват за пояс
(медвежья)

Bearish Belt Hold

Sell

Модель
не
реализуется
 Тренд восходящий.
 Открытие свечи с большим отрывом в направлении тренда.
 Черная свеча - «марибози» «длинная».
 Тело черной свечи значительно больше, чем тело предшествующей свечи.
 Подтверждение обязательно.

      //------      
      // Belt Hold the bull model / Захват за пояс бычья модель
      if(cand2.trend==DOWN && cand2.bull && !cand1.bull &&// проверяем направление тренда и направление свечи
         cand2.type==CAND_MARIBOZU_LONG && // проверка "длинный" марибозу
         cand1.bodysize<cand2.bodysize && cand2.close<cand1.close) // тело первой свечи меньше тела второй, закрытие второй ниже  закрытия первой
        {
         comment=_language?"Захват за пояс (Б)":"Belt Hold";
         if(!_forex)// если не форекс
           {
            DrawSignal(prefix+"Belt Hold the bull model"+string(objcount++),cand1,cand2,InpColorBull,comment);
           }
        }
      // Belt Hold the bear model / Захват за пояс медвежья модель
      if(cand2.trend==UPPER && !cand2.bull && cand1.bull && // проверяем направление тренда и направление свечи
         cand2.type==CAND_MARIBOZU_LONG && // проверка "длинный" марибозу
         cand1.bodysize<cand2.bodysize && cand2.close>cand1.close) // тело первой свечи меньше тела второй, закрытие второй выше закрытия первой
        {
         comment=_language?"Захват за пояс (М)":"Belt Hold";
         if(!_forex)// если не форекс
           {
            DrawSignal(prefix+"Belt Hold the bear model"+string(objcount++),cand1,cand2,InpColorBear,comment);
           }
        }

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

3.1.2. Модели, состоящие из двух свечей

Добавляем еще одну свечу:

/* Проверка паттернов с двумя свечами */
      CANDLE_STRUCTURE cand2;
      cand2=cand1;
      if(!RecognizeCandle(_Symbol,_Period,time[i-1],InpPeriodSMA,cand1))
         continue;

и распознаем модели:

Название модели Ордер Классическая модель Форекс Распознавание модели
Поглощение
(бычья)
Bullish Engulfing

Buy

 Тренд нисходящий.
 Тело второй свечи полностью перекрывает тело первой.
 Форекс: совпадают Close черной свечи и Open белой.
 Тени значения не имеют.
 Подтверждение обязательно.

Поглощение
(медвежья)
Bearish Engulfing

Sell

 Тренд восходящий.
 Тело второй свечи полностью перекрывает тело первой.
 Форекс: совпадают Close белой свечи и Open черной.
 Тени значения не имеют.
 Подтверждение обязательно.

      //------      
      // Engulfing the bull model / Поглощение бычья модель
      if(cand1.trend==DOWN && !cand1.bull && cand2.trend==DOWN && cand2.bull && // проверяем направление тренда и направление свечи
         cand1.bodysize<cand2.bodysize) // тело второй свечи больше тела первой
        {
         comment=_language?"Поглощение (Б)";
         if(_forex)// если форекс
           {
            if(cand1.close>=cand2.open && cand1.open<cand2.close) // тело первой свечи внутри тела второй
              {
               DrawSignal(prefix+"Engulfing the bull model"+string(objcount++),cand1,cand2,InpColorBull,comment);
              }
           }
         else
           {
            if(cand1.close>cand2.open && cand1.open<cand2.close) // тело первой свечи внутри тела второй
              {
               DrawSignal(prefix+"Engulfing the bull model"+string(objcount++),cand1,cand2,InpColorBull,comment);
              }
           }
        }
      // Engulfing the bear model / Поглощение медвежья модель
      if(cand1.trend==UPPER && cand1.bull && cand2.trend==UPPER && !cand2.bull && // проверяем направление тренда и направление свечи
         cand1.bodysize<cand2.bodysize) // тело второй свечи больше тела первой
        {
         comment=_language?"Поглощение (М)";
         if(_forex)// если форекс
           {
            if(cand1.close<=cand2.open && cand1.open>cand2.close) // тело первой свечи внутри тела второй
              {
               DrawSignal(prefix+"Engulfing the bear model"+string(objcount++),cand1,cand2,InpColorBear,comment);
              }
           }
         else
           {
            if(cand1.close<cand2.open && cand1.open>cand2.close) // close 1 ниже равно open 2 или open 1 выше равно close 2
              {
               DrawSignal(prefix+"Engulfing the bear model"+string(objcount++),cand1,cand2,InpColorBear,comment);
              }
           }
        }

Название модели Ордер Классическая модель Форекс Распознавание модели
Крест Харами (бычья)
Bullish Harami Cross

Buy

 Тренд нисходящий.
 Первая свеча модели — длинная черная.
 Доджи находится внутри диапазона первой свечи, включая тени.
 Форекс: доджи на уровне Close первой свечи. Если тени доджи короткие, модель следует рассматривать как Звезду доджи (б) для  форекс.
 Подтверждение желательно.

Крест Харами
(медвежья)
Bearish Harami Cross

Sell

 Тренд восходящий.
 Первая свеча модели — длинная белая.
 Доджи находится внутри диапазона первой свечи, включая тени.
 Форекс: доджи на уровне Close первой свечи. Если тени доджи короткие, модель следует рассматривать как Звезду доджи для форекс.
 Подтверждение желательно.

      //------      
      // Harami Cross the bull model / Крест Харами бычья модель
      if(cand1.trend==DOWN && !cand1.bull && // проверяем направление тренда и направление свечи
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && cand2.type==CAND_DOJI) // проверка "длинной" первой свечи и свечи доджи
        {
         comment=_language?"Крест Харами (Б)":"Harami Cross";
         if(_forex)// если форекс
           {
            if(cand1.close<=cand2.open && cand1.close<=cand2.close && cand1.open>cand2.close) // доджи внутри тела первой свечи
              {
               DrawSignal(prefix+"Harami Cross the bull model"+string(objcount++),cand1,cand2,InpColorBull,comment);
              }
           }
         else
           {
            if(cand1.close<cand2.open && cand1.close<cand2.close && cand1.open>cand2.close) // доджи внутри тела первой свечи
              {
               DrawSignal(prefix+"Harami Cross the bull model"+string(objcount++),cand1,cand2,InpColorBull,comment);
              }
           }
        }
      // Harami Cross the bear model / Крест Харами медвежья модель
      if(cand1.trend==UPPER && cand1.bull && // проверяем направление тренда и направление свечи
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && cand2.type==CAND_DOJI) // проверка "длинной" свечи и доджи
        {
         comment=_language?"Крест Харами (М)":"Harami Cross";
         if(_forex)// если форекс
           {
            if(cand1.close>=cand2.open && cand1.close>=cand2.close && cand1.close>=cand2.close) // доджи внутри тела первой свечи
              {
               DrawSignal(prefix+"Harami Cross the bear model"+string(objcount++),cand1,cand2,InpColorBear,comment);
              }
           }
         else
           {
            if(cand1.close>cand2.open && cand1.close>cand2.close && cand1.open<cand2.close) // доджи внутри тела первой свечи
              {
               DrawSignal(prefix+"Harami Cross the bear model"+string(objcount++),cand1,cand2,InpColorBear,comment);
              }
           }
        }

Название модели Ордер Классическая модель Форекс Распознавание модели
Харами
(бычья)
Bullish Harami

Buy

 Тренд нисходящий.
 Тело первой «длинной» свечи полностью поглощает тело второй.
 Тени значения не имеют.
 Форекс: Close черной свечи и Open белой совпадают.
 Подтверждение обязательно.

Харами
(медвежья)
Bearish Harami

Sell

 Тренд восходящий.
 Тело первой «длинной» свечи полностью поглощает тело второй.
 Тени значения не имеют.
 Форекс: Close белой свечи и Open черной совпадают.
 Подтверждение обязательно.

      //------      
      // Harami the bull model / Харами бычья модель
      if(cand1.trend==DOWN && !cand1.bull && cand2.bull &&// проверяем направление тренда и направление свечи
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) &&  // проверка "длинной" первой свечи
          cand2.type!=CAND_DOJI && cand1.bodysize>cand2.bodysize) // вторая свеча не доджи и тело первой свечи больше тела второй
        {
         comment=_language?"Харами (Б)":"Harami";
         if(_forex)// если форекс
           {
            if(cand1.close<=cand2.open && cand1.close<=cand2.close && cand1.open>cand2.close) // тело второй свечи внутри тела первой свечи
              {
               DrawSignal(prefix+"Harami the bull model"+string(objcount++),cand1,cand2,InpColorBull,comment);
              }
           }
         else
           {
            if(cand1.close<cand2.open && cand1.close<cand2.close && cand1.open>cand2.close) // тело второй свечи внутри тела первой свечи
              {
               DrawSignal(prefix+"Harami the bull model"+string(objcount++),cand1,cand2,InpColorBull,comment);
              }
           }
        }
      // Harami the bear model / Харами медвежья модель
      if(cand1.trend==UPPER && cand1.bull && !cand2.bull &&// проверяем направление тренда и направление свечи
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) &&  // проверка "длинной" первой свечи
          cand2.type!=CAND_DOJI && cand1.bodysize>cand2.bodysize) // воторая свеча не доджи и тело первой свечи больше тела второй
        {
         comment=_language?"Харами (М)":"Harami";
         if(_forex)// если форекс
           {
            if(cand1.close>=cand2.open && cand1.close>=cand2.close && cand1.close>=cand2.close) // доджи внутри тела первой свечи
              {
               DrawSignal(prefix+"Harami the bear model"+string(objcount++),cand1,cand2,InpColorBear,comment);
              }
           }
         else
           {
            if(cand1.close>cand2.open && cand1.close>cand2.close && cand1.open<cand2.close) // доджи внутри тела первой свечи
              {
               DrawSignal(prefix+"Harami the bear model"+string(objcount++),cand1,cand2,InpColorBear,comment);
              }
           }
        }

Название модели Ордер Классическая модель Форекс Распознавание модели
Звезда доджи
(бычья)
Bullish Doji Star

Buy

 Тренд нисходящий.
 Первая свеча модели — «длинная» черная.
 Вторая сессия — доджи с разрывом в направлении тренда.
 Форекс: без разрыва.
 Тени доджи короткие.
 Подтверждение обязательно.

Звезда доджи
(медвежья)
Bearish Doji Star

Sell

 Тренд восходящий.
 Первая свеча модели — «длинная» белая.
 Вторая сессия — доджи с разрывом в направлении тренда.
 Форекс: без разрыва.
 Тени доджи короткие.
 Подтверждение обязательно.

      //------      
      // Doji Star the bull model / Звезда доджи бычья модель
      if(cand1.trend==DOWN && !cand1.bull && // проверяем направление тренда и направление свечи
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && cand2.type==CAND_DOJI) // проверка 1 "длинной" свечи и 2 доджи
        {
         comment=_language?"Звезда доджи (Б)":"Doji Star";
         if(_forex)// если форекс
           {
            if(cand1.close>=cand2.open) // открытие доджи ниже равно закрытию первой свечи
              {
               DrawSignal(prefix+"Doji Star the bull model"+string(objcount++),cand1,cand2,InpColorBull,comment);

              }
           }
         else
           {
            if(cand1.close>cand2.open && cand1.close>cand2.close) // тело доджи оторвано от тела первой свечи
              {
               DrawSignal(prefix+"Doji Star the bull model"+string(objcount++),cand1,cand2,InpColorBull,comment);

              }
           }
        }
      // Doji Star the bear model / Звезда доджи медвежья модель
      if(cand1.trend==UPPER && cand1.bull && // проверяем направление тренда и направление свечи
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && cand2.type==CAND_DOJI) // проверка 1 "длинной" свечи и 2 доджи
        {
         comment=_language?"Звезда доджи (М)":"Doji Star";
         if(_forex)// если форекс
           {
            if(cand1.close<=cand2.open) // // открытие доджи выше равно закрытию первой свечи
              {
               DrawSignal(prefix+"Doji Star the bear model"+string(objcount++),cand1,cand2,InpColorBear,comment);

              }
           }
         else
           {
            if(cand1.close<cand2.open && cand1.close<cand2.close) // // тело доджи оторвано от тела первой свечи
              {
               DrawSignal(prefix+"Doji Star the bear model"+string(objcount++),cand1,cand2,InpColorBear,comment);

              }
           }
        }

Название модели Ордер Классическая модель Форекс Распознавание модели
Просвет в облаках
(бычья)
Piercing Line

Buy

 Тренд нисходящий.
 Обе свечи — «длинные».
 Открытие белой свечи ниже Low черной свечи.
 Форекс: Close черной свечи и Open белой равны.
 Белая свеча закрывается внутри черной свечи и перекрывает более 50% тела. (Для фондового рынка: в отличие от Завесы из темных  облаков, это требование исключений не имеет.)
 Подтверждение не требуется для классической модели, обязательно для Форекс.
Завеса из темных облаков (медвежья)
Dark Cloud Cover

Sell

 Тренд восходящий.
 Обе свечи — «длинные».
 Открытие черной свечи выше High белой свечи.
 Форекс: Close белой свечи и Open черной равны.
 Черная свеча закрывается внутри белой и перекрывает более 50% тела.
 Подтверждение не требуется для классической модели, обязательно для Форекс.

            //------      
            // Piercing line the bull model / Просвет в облаках бычья модель
            if(cand1.trend==DOWN  &&  !cand1.bull  &&  cand2.trend==DOWN  &&  cand2.bull && // проверяем направление тренда и направление свечи
               (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && // проверка "длинной" свечи
               cand2.close>(cand1.close+cand1.open)/2)// закрытие второй выше середины первой
              {
               comment=_language?"Просвет в облаках (Б)":"Piercing Line";
               if(_forex)// если форекс
                 {
                  if(cand1.close>=cand2.open && cand2.close<=cand1.open)
                    {
                     DrawSignal(prefix+"Gleam in clouds"+string(objcount++),cand1,cand2,InpColorBull,comment);
                    }
                 }
               else
                 {
                  if(cand2.open<cand1.low && cand2.close<=cand1.open) // открытие второй свечи ниже LOW первой, 
                    {
                     DrawSignal(prefix+"Piercing Line"+string(objcount++),cand1,cand2,InpColorBull,comment);
                    }
                 }
              }
            // Dark Cloud Cover the bear model /Завеса из темных облаков медвежья модель
            if(cand1.trend==UPPER  &&  cand1.bull  &&  cand2.trend==UPPER && !cand2.bull && // проверяем направление тренда и направление свечи
               (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && // проверка "длинной" свечи
               cand2.close<(cand1.close+cand1.open)/2)// close 2 ниже середины тела 1
              {
               comment=_language?"Завеса из темных облаков (M)":"Dark Cloud Cover";
               if(_forex)// если форекс
                 {
                  if(cand1.close<=cand2.open && cand2.close>=cand1.open)
                    {
                     DrawSignal(prefix+"Dark Cloud Cover"+string(objcount++),cand1,cand2,InpColorBear,comment);
                     
                    }
                 }
               else
                 {
                  if(cand1.high<cand2.open && cand2.close>=cand1.open)
                    {
                     DrawSignal(prefix+"Dark Cloud Cover"+string(objcount++),cand1,cand2,InpColorBear,comment);
                     
                    }
                 }
              }

Название модели Ордер Классическая модель Форекс Распознавание модели
Встречающиеся свечи
(бычья)
Bullish Meeting Lines

Buy

Модель
не
реализуется
 Тренд нисходящий.
 Первая свеча модели — «длинная» черная.
 Открытие белой свечи происходит с большим разрывом и ниже Low черной свечи.
 Цены закрытия обеих свечей совпадают.
 Тело белой свечи больше тела черной свечи.
 Подтверждение обязательно.
Встречающиеся свечи
(медвежья)
Bearish Meeting Lines

Sell

Модель
не
реализуется
 Тренд восходящий.
 Первая свеча модели — «длинная» белая.
 Открытие черной свечи происходит с большим разрывом и выше High белой свечи.
 Цены закрытия обеих свечей совпадают.
 Тело черной свечи больше тела белой свечи.
 Подтверждение обязательно.

      // Meeting Lines the bull model / Встречающиеся свечи бычья модель
      if(cand1.trend==DOWN && !cand1.bull && cand2.trend==DOWN && cand2.bull && // проверяем направление тренда и направление свечи
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && // проверка "длинной" свечи
         cand1.close==cand2.close && cand1.bodysize<cand2.bodysize && cand1.low>cand2.open) // цены закрытия равны, размер певой меньше второй, открытие второй ниже мин. первой
        {
         comment=_language?"Встречающиеся свечи (Б)":"Meeting Lines";
         if(!_forex)// если не форекс
           {
            DrawSignal(prefix+"Meeting Lines the bull model"+string(objcount++),cand1,cand2,InpColorBull,comment);
           }
        }
      // Meeting Lines the bear model / Встречающиеся свечи медвежья модель
      if(cand1.trend==UPPER && cand1.bull && cand2.trend==UPPER && !cand2.bull && // проверяем направление тренда и направление свечи
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && // проверка "длинной" свечи
         cand1.close==cand2.close && cand1.bodysize<cand2.bodysize && cand1.high<cand2.open) // // цены закрытия равны, размер певой меньше второй, открытие второй выше макс. первой
        {
         comment=_language?"Встречающиеся свечи (М)":"Meeting Lines";
         if(!_forex)// если не форекс
           {
            DrawSignal(prefix+"Meeting Lines the bear model"+string(objcount++),cand1,cand2,InpColorBear,comment);
           }
        }

Название модели Ордер Классическая модель Форекс Распознавание модели
Совпадение по нижнему уровню
(бычья)
Bullish Matching Low

Buy

Модель
не
реализуется
 Тренд нисходящий.
 Первая свеча модели не обязательно должна быть длинной.
 Открытие второй свечи происходит внутри тела первой.
 Цены закрытий обеих свечей совпадают.
 Нижних теней нет или они очень короткие.
 Подтверждение обязательно.

      //------      
      // Matching Low the bull model / Совпадение по нижнему уровню бычья модель
      if(cand1.trend==DOWN && !cand1.bull && cand2.trend==DOWN && !cand2.bull && // проверяем направление тренда и направление свечи
         cand1.close==cand2.close && cand1.bodysize>cand2.bodysize) // цены закрытия равны, размер первой ,больше второй
        {
         comment=_language?"Совпадение по нижнему уровню (Б)":"Matching Low";
         if(!_forex)// если не форекс
           {
            DrawSignal(prefix+"Matching Low the bull model"+string(objcount++),cand1,cand2,InpColorBull,comment);
           }
        }

Название модели Ордер Классическая модель Форекс Распознавание модели
Почтовый голубь
(бычья)
Bullish Homing Pigeon

Buy

Модель
не
реализуется
 Тренд нисходящий.
 Первая свеча модели не обязательно должна быть длинной.
 Открытие второй свечи происходит внутри тела первой.
 Цены закрытий обеих свечей совпадают.
 Нижних теней нет или они очень короткие.
 Подтверждение обязательно.

      //------      
      // Homing Pigeon the bull model / Почтовый голубь бычья модель
      if(cand1.trend==DOWN && !cand1.bull && cand2.trend==DOWN && !cand2.bull && // проверяем направление тренда и направление свечи
        (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) &&  // проверка "длинной" свечи
         cand1.close<cand2.close && cand1.open>cand2.open) // тело второй свечи внутри тела первой
        {
         comment=_language?"Почтовый голубь (Б)":"Homing Pigeon";
         if(!_forex)// если не форекс
           {
            DrawSignal(prefix+"Homing Pigeon the bull model"+string(objcount++),cand1,cand2,InpColorBull,comment);
           }
        }

 3.1.3. Модели, состоящие из трех свечей

/* Проверка паттернов с тремя свечами */
      CANDLE_STRUCTURE cand3;
      cand3=cand2;
      cand2=cand1;
      if(!RecognizeCandle(_Symbol,_Period,time[i-2],InpPeriodSMA,cand1))
         continue;
Название модели  Ордер  Классическая модель Форекс Распознавание модели
Брошенный младенец
(бычья)
Bullish Abandoned Baby
 

Buy

Модель
не
реализуется

 Это редкая, но важная разворотная модель.
 Тренд нисходящий.
 Первая свеча модели — «длинная» черная свеча.
 Вторая свеча — доджи с разрывом, причем разрыв не только между телами свечей, но и между тенями.
 Третья свеча — «длинная» белая свеча с таким же разрывом между тенями и закрытием внутри тела первой свечи.

 Брошенный младенец
(медвежья)
Bearish Abandoned Baby
 

Sell

  Модель
не
реализуется

 Это редкая, но важная разворотная модель.
 Тренд восходящий.
 Первая свеча модели — «длинная» белая свеча.
 Вторая свеча — доджи с разрывом, причем разрыв не только между телами свечей, но и между тенями.
 Третья свеча — «длинная» черная свеча с таким же разрывом между тенями и закрытием внутри тела первой свечи.

      //------      
      // The Abandoned Baby the bull model / Брошенный младенец бычья модель
      if(cand1.trend==DOWN && !cand1.bull && cand3.trend==DOWN && cand3.bull && // проверяем направление тренда и направление свечи
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG) && // проверка "длинной" свечи
         cand2.type==CAND_DOJI && // проверяем является вторая свеча доджем
         cand3.close<cand1.open && cand3.close>cand1.close) // третья закрывается внутри тела первой
        {
         comment=_language?"Брошенный младенец (Б)":"Abandoned Baby";
         if(!_forex)// если не форекс
           {
            if(cand1.low>cand2.high && cand3.low>cand2.high) // разрыв между свечами
              {
               DrawSignal(prefix+"Abandoned Baby the bull model"+string(objcount++),cand1,cand1,cand3,InpColorBull,comment);

              }
           }
        }
      // The Abandoned Baby the bear model / Брошенный младенец медвежья модель
      if(cand1.trend==UPPER && cand1.bull && cand3.trend==UPPER && !cand3.bull && // проверяем направление тренда и направление свечи
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG) && // проверка "длинной" свечи
         cand2.type==CAND_DOJI && // проверяем является вторая свеча доджи
         cand3.close>cand1.open && cand3.close<cand1.close) // // третья закрывается внутри тела первой
        {
         comment=_language?"Брошенный младенец (М)":"Abandoned Baby";
         if(!_forex)// если не форекс
           {
            if(cand1.high<cand2.low && cand3.high<cand2.low) // разрыв между свечами
              {
               DrawSignal(prefix+"Abandoned Baby the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);

              }
           }
        }
Название модели  Ордер Классическая модель Форекс Распознавание модели
Утренняя звезда
(бычья)
Morning Star

Buy

 Тренд нисходящий.
 Первая и третья сессии — «длинные» свечи.
 Тени звезды короткие, цвет значения не имеет.
 Отрыв звезды от Close первой свечи.
 Форекс: Close первой свечи и Open звезды равны.
 Третья свеча закрывается внутри тела первой.
 Вечерняя звезда
(медвежья
)
Evening Star
 

Sell

 

 

 Тренд восходящий.
 Первая и третья сессии — «длинные» свечи.
 Тени звезды короткие, цвет значения не имеет.
 Отрыв звезды от Close первой свечи.
 Форекс: Close первой свечи и Open звезды равны.
 Третья свеча закрывается внутри тела первой.
      // Morning star the bull model / Утренняя звезда бычья модель
      if(cand1.trend==DOWN && !cand1.bull && cand3.trend==DOWN && cand3.bull && // проверяем направление тренда и направление свечи
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG) && // проверка "длинной" свечи
         cand2.type==CAND_SHORT && // проверка "короткая"
         cand3.close>cand1.close && cand3.close<cand1.open) // третья закрывается внутри тела первой
        {
         comment=_language?"Утренняя звезда (Б)":"Morning star";
         if(_forex)// если форекс
           {
            if(cand2.open<=cand1.close) // открытие второй ниже равно закрытию первой
              {
               DrawSignal(prefix+"Morning star the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
         else // другой рынок
           {
            if(cand2.open<cand1.close && cand2.close<cand1.close) // отрыв второй от первой
              {
               DrawSignal(prefix+"Morning star the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
        }
      // Evening star the bear model / Вечерняя звезда медвежья модель
      if(cand1.trend==UPPER && cand1.bull && cand3.trend==UPPER && !cand3.bull && // проверяем направление тренда и направление свечи
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG) && // проверка "длинной" свечи
         cand2.type==CAND_SHORT && // проверка "короткая"
         cand3.close<cand1.close && cand3.close>cand1.open) // третья закрывается внутри тела первой
        {
         comment=_language?"Вечерняя звезда (М)":"Evening star";
         if(_forex)// если форекс
           {
            if(cand2.open>=cand1.close) // открытие второй выше равно закрытию первой
              {
               DrawSignal(prefix+"Evening star the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
              }
           }
         else // другой рынок
           {
            if(cand2.open>cand1.close && cand2.close>cand1.close) // отрыв второй от первой
              {
               DrawSignal(prefix+"Evening star the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
              }
           }
        }
Название модели  Ордер Классическая модель Форекс Распознавание модели
Звезда доджи утренняя
(бычья)
Morning Doji Star

Buy

 Тренд нисходящий.
 Первая свеча модели — «длинная» черная.
 Вторая сессия — доджи с разрывом в направлении тренда.
 Форекс: без разрыва.
 Тени доджи короткие.
 Третья свеча закрывается внутри тела первой.
Звезда доджи вечерняя
(медвежья)
Evening Doji Star

Sell

 Тренд восходящий.
 Первая свеча модели — «длинная» белая.
 Вторая сессия — доджи с разрывом в направлении тренда.
 Форекс: без разрыва.
 Тени доджи короткие.
 Подтверждение обязательно.
      //------      
      // Morning Doji Star the bull model / Утренняя доджи-звезда бычья модель
      if(cand1.trend==DOWN && !cand1.bull && cand3.trend==DOWN && cand3.bull && // проверяем направление тренда и направление свечи
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG) && // проверка "длинной" свечи
         cand2.type==CAND_DOJI && // проверка "doji"
         cand3.close>cand1.close && cand3.close<cand1.open) // третья закрывается внутри тела первой
        {
         comment=_language?"Утренняя доджи-звезда (Б)":"Morning Doji Star";
         if(_forex)// если форекс
           {
            if(cand2.open<=cand1.close) // открытие доджи ниже равно закрытию первой
              {
               DrawSignal(prefix+"Morning Doji Star the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
         else // другой рынок
           {
            if(cand2.open<cand1.close) // отрыв доджи от первой
              {
               DrawSignal(prefix+"Morning Doji Star the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
        }
      // Evening Doji Star the bear model / Вечерняя доджи-звезда медвежья модель
      if(cand1.trend==UPPER && cand1.bull && cand3.trend==UPPER && !cand3.bull && // проверяем направление тренда и направление свечи
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG) && // проверка "длинной" свечи
         cand2.type==CAND_DOJI && // проверка "doji"
         cand3.close<cand1.close && cand3.close>cand1.open) // третья закрывается внутри тела первой
        {
         comment=_language?"Вечерняя доджи-звезда (М)":"Evening Doji Star";
         if(_forex)// если форекс
           {
            if(cand2.open>=cand1.close) // открытие доджи выше равно закрытию первой
              {
               DrawSignal(prefix+"Evening Doji Star the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
              }
           }
         else // другой рынок
           {
            if(cand2.open>cand1.close) // отрыв доджи от первой
               // проверка close 2 и open 3
              {
               DrawSignal(prefix+"Evening Doji Star the bear model"+string(objcount++),cand1,cand3,cand3,InpColorBear,comment);
              }
           }
        }
Название модели Ордер Классическая модель Форекс Распознавание модели
Две взлетевшие вороны (медвежья)
Bearish Upside Gap Two Crows

Sell

Модель
не
реализуется
 Тренд восходящий.
 Первая свеча «длинная» белая.
 Разрыв между белой и черными свечами.
 Третья свеча открывается выше второй и поглощает ее.
 Подтверждение обязательно.
 Смысл модели: если в 4-ю сессию ценам не удалось подняться наверх, следует ожидать падения цен.
Две вороны
(медвежья)
Two Crows

Sell

Модель
не
реализуется
 Тренд восходящий.
 Первая свеча модели — «длинная» белая.
 Разрыв между белой и первой черной свечой.
 Третья свеча черная обязательно «длинная»; открывается внутри либо выше второй и закрывается внутри или ниже белой свечи, перекрывая  разрыв.
 Подтверждение обязательно.
 Если вторая ворона (третья свеча) поглощает белую свечу, то подтверждения не требуется.
      //------      
      // Upside Gap Two Crows the bear model / Две взлетевшие вороны медвежья модель
      if(cand1.trend==UPPER && cand1.bull && cand2.trend==UPPER && !cand2.bull && cand3.trend==UPPER && !cand3.bull && // проверяем направление тренда и направление свечи
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && // проверка "длинной" свечи
         cand1.close<cand2.close && cand1.close<cand3.close && // отрыв второй и третьей от первой
         cand2.open<cand3.open && cand2.close>cand3.close) // третья свеча поглащает вторую
        {
         comment=_language?"Две взлетевшие вороны (М)":"Upside Gap Two Crows";
         if(!_forex)// если не форекс
           {
            DrawSignal(prefix+"Upside Gap Two Crows the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
           }
        }
      //------      
      // Two Crows the bear model / Две вороны медвежья модель
      if(cand1.trend==UPPER && cand1.bull && cand2.trend==UPPER && !cand2.bull && cand3.trend==UPPER && !cand3.bull && // проверяем направление тренда и направление свечи
         (cand1.type==CAND_LONG|| cand1.type==CAND_MARIBOZU_LONG) &&(cand3.type==CAND_LONG|| cand3.type==CAND_MARIBOZU_LONG) && // проверка "длинной" свечи
         cand1.close<cand2.close && // отрыв второй от первой
         cand3.open>cand2.close && // третья открывается выше закрытия второй
         cand3.close<cand1.close) // третья закрывается ниже закрытия первой
        {
         comment=_language?"Две вороны (М)":"Two Crows";
         if(!_forex)// если не форекс
           {
            DrawSignal(prefix+"Two Crows the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
           }
        }

Название модели  Ордер Классическая модель Форекс Распознавание модели
Три звезды на юге
(бычья)
Three Star in the South

Buy

 Тренд нисходящий.
 Первая свеча — длинный черный день с длинной нижней тенью.
 Вторая свеча короче первой, ее Low выше Low первой свечи.
 Третья свеча — маленький черный марибози или звезда, внутренний день по отношению ко второй сессии.
 Подтверждение обязательно.
Размышление
(медвежья)
Deliberation

Sell

 Тренд восходящий.
 Три белых свечи со все более высокими ценами закрытия. Первые две свечи — длинные дни.
 Цена открытия каждой свечи находится внутри тела предыдущей.
 Форекс: цены открытий/закрытий белых свечей совпадают.
 Третья свеча открывается примерно на уровне закрытия второй свечи.
 Третья свеча — звезда или волчок.
 Подтверждение обязательно.

      //------      
      // Three Star in the South the bull model / Три звезды на юге бычья моднль

      if(cand1.trend==DOWN && !cand1.bull && !cand2.bull && !cand3.bull && // проверяем направление тренда и направление свечи
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand3.type==CAND_MARIBOZU || cand3.type==CAND_SHORT) && // проверка "длинной" свечи и "марибози"
         cand1.bodysize>cand2.bodysize && cand1.low<cand2.low && cand3.low>cand2.low && cand3.high<cand2.high)
        {
         comment=_language?"Три звезды на юге (Б)":"Three Star in the South";
         if(_forex)// если форекс
           {
            DrawSignal(prefix+"Three Star in the South the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
           }
         else // другой рынок
           {
            if(cand1.close<cand2.open && cand2.close<cand3.open) // открытие внутри передыдущей свечи
              {
               DrawSignal(prefix+"Three Star in the South the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
        }
      // Deliberation the bear model / Размышление медвежья модель
      if(cand1.trend==UPPER && cand1.bull && cand2.bull && cand3.bull && // проверяем направление тренда и направление свечи
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && // проверка "длинной" свечи
         (cand3.type==CAND_SPIN_TOP || cand3.type==CAND_SHORT)) // третья свеча волчок или звезда
        {
         comment=_language?"Размышление (М)":"Deliberation";
         if(_forex)// если форекс
           {
            DrawSignal(prefix+"Deliberation the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
           }
         else // другой рынок
           {
            if(cand1.close>cand2.open && cand2.close<=cand3.open) // открытие внутри предыдущей свечи
               // проверка close 2 и open 3
              {
               DrawSignal(prefix+"Deliberation the bear model"+string(objcount++),cand1,cand3,cand3,InpColorBear,comment);
              }
           }
        }

Название модели  Ордер Классическая модель Форекс Распознавание модели
Три белых солдата
(бычья)
Three White Soldiers

Buy

 Тренд нисходящий.
 Последовательно появляются три белых длинных свечи, цена закрытия каждой из которых выше, чем у предыдущей.
 Цена открытия каждого солдата находится внутри тела предыдущей свечи.
 Форекс: Close/Open у солдат совпадают.
 Верхние тени у солдат короткие.
 Подтверждение не требуется.
Три черные вороны
(медвежья)
Three Black Crows

Sell

Модель
не
реализуется
 Тренд восходящий.
 Последовательно появляются три черных длинных свечи, цена закрытия каждой из которых ниже, чем у предыдущей.
 Цена открытия каждой вороны находится внутри тела предыдущей свечи.
 Форекс: соответствует модели Три одинаковые вороны.
 Нижние тени у ворон короткие.
 Подтверждение не требуется.

      //------      
      // Three White Soldiers the bull model / Три белых солдата бычья моднль
      if(cand1.trend==DOWN && cand1.bull && cand2.bull && cand3.bull && // проверяем направление тренда и направление свечи
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && // проверка "длинной" свечи или "марибози"
         (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG)) // проверка "длинной" свечи или "марибози"
        {
         comment=_language?"Три белых солдата (Б)":"Three White Soldiers";
         if(_forex)// если форекс
           {
            DrawSignal(prefix+"Three White Soldiers the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
           }
         else // другой рынок
           {
            if(cand1.close>cand2.open && cand2.close>cand3.open) // открытие внутри передыдущей свечи
              {
               DrawSignal(prefix+"Three White Soldiers the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
        }
      // Three Black Crows the bear model / Три черные вороны медвежья модель
      if(cand1.trend==UPPER && !cand1.bull && !cand2.bull && !cand3.bull && // проверяем направление тренда и направление свечи
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && // проверка "длинной" свечи или "марибози"
         (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG) && // проверка "длинной" свечи или "марибози"
         cand1.close<cand2.open && cand2.close<cand3.open)
        {
         comment=_language?"Три черные вороны (М)":"Three Black Crows";
         if(!_forex) // не форекс
           {
               DrawSignal(prefix+"Three Black Crows the bear model"+string(objcount++),cand1,cand3,cand3,InpColorBear,comment);
           }
        }

Название модели  Ордер Классическая модель Форекс Распознавание модели
Три внешних дня вверх
(бычья)
Three Outside Up

Buy

 Тренд нисходящий.
 Сначала формируется модель Поглощение (б): тело второй свечи полностью перекрывает тело первой.
 Форекс: совпадают Close черной свечи и Open первой белой.
 Тени значения не имеют.
 Затем, на третий день, происходит более высокое закрытие.
 Подтверждение не требуется: модель сама по себе является подтверждением для модели Поглощение (б)
Три внешних дня вниз
(медвежья)
Three Outside Down

Sell

 Тренд восходящий.
 Сначала формируется модель Поглощение (м): тело второй свечи полностью перекрывает тело первой.
 Форекс: совпадают Close белой свечи и Open первой черной.
 Тени значения не имеют.
 Затем, на третий день, происходит более низкое закрытие.
 Подтверждение не требуется: модель сама по себе является подтверждением для модели Поглощение (м)

      //------      
      // Three Outside Up the bull model / Три внешних дня вверх бычья моднль
      if(cand1.trend==DOWN && !cand1.bull && cand2.trend==DOWN && cand2.bull && cand3.bull && // проверяем направление тренда и направление свечи
         cand2.bodysize>cand1.bodysize && // тело второй свечи больше тела первой
         cand3.close>cand2.close) // третий день закрывается выше второго
        {
         comment=_language?"Три внешних дня вверх (Б)":"Three Outside Up";
         if(_forex)// если форекс
           {
            if(cand1.close>=cand2.open && cand1.open<cand2.close) // тело первой свечи внутри тела второй
              {
               DrawSignal(prefix+"Three Outside Up the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
         else
           {
            if(cand1.close>cand2.open && cand1.open<cand2.close) // тело первой свечи внутри тела второй
              {
               DrawSignal(prefix+"Three Outside Up the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
        }
      // Three Outside Down the bear model / Три внешних дня вниз медвежья модель
      if(cand1.trend==UPPER && cand1.bull && cand2.trend==UPPER && !cand2.bull && !cand3.bull && // проверяем направление тренда и направление свечи
         cand2.bodysize>cand1.bodysize && // тело второй свечи больше тела первой
         cand3.close<cand2.close) // третий день закрывается ниже второго
        {
         comment=_language?"Три внешних дня вниз (М)":"Three Outside Down";
         if(_forex)// если форекс
           {
            if(cand1.close<=cand2.open && cand1.open>cand2.close) // тело первой свечи внутри тела второй
              {
               DrawSignal(prefix+"Three Outside Down the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
              }
           }
         else
           {
            if(cand1.close<cand2.open && cand1.open>cand2.close) // тело первой свечи внутри тела второй
              {
               DrawSignal(prefix+"Three Outside Down the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
              }
           }
        }

Название модели  Ордер Классическая модель Форекс Распознавание модели
Три дня изнутри вверх
(бычья)
Three Inside Up

Buy

 Тренд нисходящий.
 В первые две сессии формируется модель Харами (б): малое белое тело поглощается большим черным.
 Закрытие в третью сессию происходит выше максимума первых двух свечей.
 Подтверждение не требуется: модель сама по себе является подтверждением модели Харами (б).
Три дня изнутри вниз
(медвежья)
Three Inside Down

Sell

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

      //------      
      // Three Inside Up the bull model / Три дня изнутри вверх бычья модель
      if(cand1.trend==DOWN  &&  !cand1.bull  &&  cand2.bull && cand3.bull && // проверяем направление тренда и направление свечи
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) &&  // проверка "длинной" первой свечи
         cand1.bodysize>cand2.bodysize && // тело первой свечи больше тела второй
         cand3.close>cand2.close) // третий день закрывается выше второго
        {
         comment=_language?"Три дня изнутри вверх (Б)":"Three Inside Up";
         if(_forex)// если форекс
           {
            if(cand1.close<=cand2.open && cand1.close<=cand2.close && cand1.open>cand2.close) // тело второй свечи внутри тела первой свечи
              {
               DrawSignal(prefix+"Three Inside Up the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
         else
           {
            if(cand1.close<cand2.open && cand1.close<cand2.close && cand1.open>cand2.close) // тело второй свечи внутри тела первой свечи
              {
               DrawSignal(prefix+"Three Inside Up the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
        }
      // Three Inside Down the bear model / Три дня изнутри вниз медвежья модель
      if(cand1.trend==UPPER && cand1.bull && !cand2.bull && !cand3.bull &&// проверяем направление тренда и направление свечи
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && // проверка "длинной" первой свечи
         cand1.bodysize>cand2.bodysize && // тело первой свечи больше тела второй
         cand3.close<cand2.close) // третий день закрывается ниже второго
        {
         comment=_language?"Три дня изнутри вниз (М)":"Three Inside Down";
         if(_forex)// если форекс
           {
            if(cand1.close>=cand2.open && cand1.close>=cand2.close && cand1.close>=cand2.close) // внутри тела первой свечи
              {
               DrawSignal(prefix+"Three Inside Down the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
              }
           }
         else
           {
            if(cand1.close>cand2.open && cand1.close>cand2.close && cand1.open<cand2.close) // внутри тела первой свечи
              {
               DrawSignal(prefix+"Three Inside Down the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
              }
           }
        }

Название модели  Ордер Классическая модель Форекс Распознавание модели
Три звезды
(бычья)
Bullish Three Stars

Buy

 Тренд нисходящий.
 Разрыв между первым доджи и предыдущими свечами не обязателен.
 Все три свечи — доджи.
 Средний доджи имеет разрыв вверх или вниз.
 Форекс: все три доджи на одном уровне.
 Подтверждение обязательно.
Три звезды
(медвежья)
Bearish Three Stars

Sell

 Тренд восходящий.
 Разрыв между первым доджи и предыдущими свечами не обязателен.
 Все три свечи — доджи.
 Средний доджи имеет разрыв вверх или вниз.
 Форекс: все три доджи на одном уровне.
 Подтверждение обязательно.

      //------      
      // Three Stars the bull model / Три звезды бычья модель
      if(cand1.trend==DOWN  && // проверяем направление тренда
         cand1.type==CAND_DOJI && cand2.type==CAND_DOJI && cand3.type==CAND_DOJI) // проверка доджи
        {
         comment=_language?"Три звезды (Б)":"Bullish Three Stars";
         if(_forex)// если форекс
           {
               DrawSignal(prefix+"Three Stars the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
           }
         else
           {
            if(cand2.open!=cand1.close && cand2.close!=cand3.open) // вторая свеча на другом уровне
              {
               DrawSignal(prefix+"Three Stars the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
        }
      // Three Stars the bear model / Три звезды медвежья модель
      if(cand1.trend==UPPER && // проверяем направление тренда
         cand1.type==CAND_DOJI && cand2.type==CAND_DOJI && cand3.type==CAND_DOJI) // проверка доджи
        {
         comment=_language?"Три звезды (М)":"Bearish Three Stars";
         if(_forex)// если форекс
           {
               DrawSignal(prefix+"Three Stars the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
           }
         else
           {
            if(cand2.open!=cand1.close && cand2.close!=cand3.open) // вторая свеча на другом уровне
              {
               DrawSignal(prefix+"Three Stars the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
              }
           }
        }

Название модели Ордер Классическая модель Форекс Распознавание модели
Три одинаковые вороны
(медвежья)
Identical Three Crows

Sell

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

      // Identical Three Crows the bear model / Три одинаковые вороны медвежья модель
      if(cand1.trend==UPPER && !cand1.bull && !cand2.bull && !cand3.bull && // проверяем направление тренда и направление свечи
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && // проверка "длинной" свечи или "марибози"
         (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG)) // проверка "длинной" свечи или "марибози"
        {
         comment=_language?"Три одинаковые вороны (М)":"Identical Three Crows";
         if(_forex)// если форекс
           {
            DrawSignal(prefix+"Identical Three Crows the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
           }
         else // другой рынок
           {
            if(cand1.close>=cand2.open && cand2.close>=cand3.open) // открытие меньше равно закрытию предыдущей свечи
              {
               DrawSignal(prefix+"Identical Three Crows the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
              }
           }
        }

Название модели Ордер Классическая модель Форекс Распознавание модели
Особая впадина «три реки»
(бычья)
Unique Three River Bottom

Buy

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

      // Unique Three River Bottom the bull model / Особая впадина «три реки» бычья модель
      if(cand1.trend==DOWN && !cand1.bull && !cand2.bull && cand3.bull && // проверяем направление тренда и направление свечи
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && cand3.type==CAND_SHORT && // проверка "длинной" свечи или "марибози" третий день короткий
         cand2.open<cand1.open && cand2.close>cand1.close && cand2.low<cand1.low && // тело второй свеча внутри первой и минимум ниже первой
         cand3.close<cand2.close) // третья свеча ниже второй
        {
         comment=_language?"Особая впадина «три реки» (б)":"Unique Three River Bottom";
         if(!_forex)// не форекс
           {
            DrawSignal(prefix+"Unique Three River Bottom the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
           }
        }

3.1.4. Модели, состоящие из четырех свечей

/* Проверка паттернов с четырьмя свечами */
      CANDLE_STRUCTURE cand4;
      cand4=cand3;
      cand3=cand2;
      cand2=cand1;
      if(!RecognizeCandle(_Symbol,_Period,time[i-3],InpPeriodSMA,cand1))
         continue

Название модели Ордер Классическая модель Форекс Распознавание модели
Прячущаяся ласточка (бычья)
Concealing Baby Swallow

Buy

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

      //------      
      // Concealing Baby Swallow the bull model / Прячущаяся ласточка бычья модель
      if(cand1.trend==DOWN && !cand1.bull && !cand2.bull && !cand3.bull && !cand4.bull && // проверяем направление тренда и направление свечи
         cand1.type==CAND_MARIBOZU_LONG && cand2.type==CAND_MARIBOZU_LONG && cand3.type==CAND_SHORT && // проверка "марибози"
         cand3.open<cand2.close && cand3.high>cand2.close && // третья свеча с разрывом в низ максимум внутри второй свечи
         cand4.open>cand3.high && cand4.close<cand3.low) // четвертая свеча полностью поглащает третью
        {
         comment=_language?"Прячущаяся ласточка (Б)":"Concealing Baby Swallow";
         if(!_forex)// не форекс
           {
            DrawSignal(prefix+"Concealing Baby Swallow the bull model"+string(objcount++),cand1,cand2,cand4,InpColorBull,comment);
           }
        }

3.1.5. Модели, состоящие из пяти свечей

/* Проверка паттернов с пятью свечами */
      CANDLE_STRUCTURE cand5;
      cand5=cand4;
      cand4=cand3;
      cand3=cand2;
      cand2=cand1;
      if(!RecognizeCandle(_Symbol,_Period,time[i-4],InpPeriodSMA,cand1))
         continue

Название модели  Ордер Классическая модель Форекс Распознавание модели
Пробой
(бычья)
Bullish Breakaway

Buy

Модель
не
реализуется
 Тренд нисходящий.
 Первые две сессии — "длинная" черная свеча и "короткая" черная свеча (звезда) с разрывом.
 Третья сессия — "короткая", может иметь любой цвет.
 Четвертая свеча — "короткая" черная.
 Пятая — "длинная" белая с ценой закрытия внутри разрыва.
 Подтверждение обязательно.
Пробой
(медвежья)
Bearish Breakaway

Sell

Модель
не
реализуется
 Тренд восходящий.
 Первые две сессии — "длинная" белая свеча и "короткая" белая (звезда) с разрывом.
 Третья сессия — "короткая" свеча, может иметь любой цвет.
 Четвертый день — "короткая" белая.
 Пятый день — "длинная" черная с ценой закрытия внутри разрыва.
 Подтверждение обязательно.

      //------      
      // Breakaway the bull model / Пробой бычья модель
      if(cand1.trend==DOWN && !cand1.bull && !cand2.bull && !cand4.bull && cand5.bull && // проверяем направление тренда и направление свечи
         (cand1.type==CAND_LONG|| cand1.type==CAND_MARIBOZU_LONG) &&  // проверка "длинной" первой свечи
         cand2.type==CAND_SHORT && cand2.open<cand1.close && // вторая свеча "короткая" и оторвана от первой
         cand3.type==CAND_SHORT && cand4.type==CAND_SHORT && // третья и четвертая свеча "короткая"
         (cand5.type==CAND_LONG || cand5.type==CAND_MARIBOZU_LONG) && cand5.close<cand1.close && cand5.close>cand2.open) // пятая "длинная" белая с закрытием внутри  разрыва
        {
         comment=_language?"Пробой (Б)":"Breakaway";
         if(!_forex)// не форекс
           {
            DrawSignal(prefix+"Breakaway the bull model"+string(objcount++),cand1,cand2,cand5,InpColorBull,comment);
           }
        }
      // Breakaway the bear model / Пробой медвежья модель
      if(cand1.trend==UPPER && cand1.bull && cand2.bull && cand4.bull && !cand5.bull && // проверяем направление тренда и направление свечи
         (cand1.type==CAND_LONG|| cand1.type==CAND_MARIBOZU_LONG) &&  // проверка "длинной" первой свечи
         cand2.type==CAND_SHORT && cand2.open<cand1.close && // вторая свеча "короткая" и оторвана от первой
         cand3.type==CAND_SHORT && cand4.type==CAND_SHORT && // третья и четвертая свеча "короткая"
         (cand5.type==CAND_LONG || cand5.type==CAND_MARIBOZU_LONG) && cand5.close>cand1.close && cand5.close<cand2.open) // пятая "длинная" черная с закрытием внутри  разрыва
        {
         comment=_language?"Пробой (М)":"Breakaway";
         if(!_forex)// не форекс
           {
            DrawSignal(prefix+"Breakaway the bear model"+string(objcount++),cand1,cand2,cand5,InpColorBear,comment);
           }
        }

3.2. МОДЕЛИ ПРОДОЛЖЕНИЯ

Модели продолжения — время, когда рынок отдыхает.

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

3.2.1. Модели, состоящие из одной свечи

Название модели  Ордер Классическая модель Форекс Распознавание модели
Высокий прыжок
(бычья)
Bullish Kicking

Buy

Модель
не
реализуется
 За черным «марибози» следует белый «марибози».
 Между телами свечей существует разрыв.
 Подтверждение не требуется.
Высокий прыжок
(медвежья)
Bearish Kicking

Sell

Модель
не
реализуется
 За белым «марибози» следует черный «марибози».
 Между телами свечей существует разрыв.
 Подтверждение не требуется.

      //------      
      // Kicking the bull model / Высокий прыжок бычья модель
      if(!cand1.bull && cand2.bull && // проверяем направление тренда и направление свечи
         cand1.type==CAND_MARIBOZU_LONG && cand2.type==CAND_MARIBOZU_LONG && // два марибозу
         cand1.open<cand2.open) // разрыв между ними
        {
         comment=_language?"Высокий прыжок (Б)":"Kicking";
         if(!_forex)// если не форекс
           {
            DrawSignal(prefix+"Kicking the bull model"+string(objcount++),cand1,cand2,InpColorBull,comment);
           }
        }
      // Kicking the bear model / Встречающиеся свечи медвежья модель
      if(cand1.bull && !cand2.bull && // проверяем направление тренда и направление свечи
         cand1.type==CAND_MARIBOZU_LONG && cand2.type==CAND_MARIBOZU_LONG && // два марибозу
         cand1.open>cand2.open) // разрыв между ними
        {
         comment=_language?"Высокий прыжок (М)":"Kicking";
         if(!_forex)// если не форекс
           {
            DrawSignal(prefix+"Kicking the bear model"+string(objcount++),cand1,cand2,InpColorBear,comment);
           }
        }

3.2.2. Модели, состоящие из двух свечей

Название модели  Ордер Классическая модель Форекс Распознавание модели
 У линии шеи (медвежья)
Bearish On Neck Line
 

Sell

   Модель
не
реализуется
 Тренд нисходящий.
 Первая свеча модели — "длинная" черная.
 Белая свеча открывается ниже Low черной свечи и закрывается примерно на уровне Low черной свечи.
 Белая свеча — не обязательно длинный день.
 Подтверждение обязательно.
На линии шеи
(медвежья)
Bearish In Neck Line

Sell

Модель
не
реализуется
 Тренд нисходящий.
 Первая свеча модели — "длинная" черная.
 Белая свеча открывается ниже Low черной свечи и закрывается чуть выше Close черной свечи.
 Белая свеча — не обязательно длинный день.
 Тело белой свечи меньше тела черной свечи.
 Верхняя тень белой свечи очень маленькая.
 Подтверждение обязательно.
Толчок
(медвежья)
Thrusting Line

Sell

Модель
не
реализуется
 Тренд нисходящий.
 Первая свеча модели — "длинная" черная.
 Белая свеча открывается ниже Low черной свечи и закрывается выше Close черной свечи, однако цена закрытия остается ниже середины  черной свечи.
 Белая свеча — не обязательно длинный день.
 Подтверждение обязательно.

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

      //------ Проверка моделей линии шеи
      if(cand1.trend==DOWN && !cand1.bull && cand2.bull && // проверяем направление тренда и направление свечи
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG)) // первая свеча "длинная"
        {
         // On Neck Line the bear model / У линии шеи медвежья модель
         if(cand2.open<cand1.low && cand2.close==cand1.low) // вторая свеча открывается ниже первой и закрывается на уровне минммума первой
           {
            comment=_language?"У линии шеи (М)":"On Neck Line";
            if(!_forex)// если не форекс
              {
               DrawSignal(prefix+"On Neck Line the bear model"+string(objcount++),cand1,cand2,InpColorBear,comment);
              }
           }
         else
           {
            // In Neck Line the bear model / На линии шеи медвежья модель
            if(cand1.trend==DOWN && !cand1.bull && cand2.bull && // проверяем направление тренда и направление свечи
               (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && // первая свеча "длинная"
               cand1.bodysize>cand2.bodysize && // тело второй свечи еньшн тела первой
               cand2.open<cand1.low && cand2.close>=cand1.close && cand2.close<(cand1.close+cand1.bodysize*0.01)) // вторая свеча открывается ниже первой и закрывается чуть выше закрытия перой
              {
               comment=_language?"На линии шеи (М)":"In Neck Line";
               if(!_forex)// если не форекс
                 {
                  DrawSignal(prefix+"In Neck Line the bear model"+string(objcount++),cand1,cand2,InpColorBear,comment);
                 }
              }
            else
              {
               // Thrusting Line the bear model / Толчок медвежья модель
               if(cand1.trend==DOWN && !cand1.bull && cand2.bull && // проверяем направление тренда и направление свечи
                  (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && // первая свеча "длинная"
                  cand2.open<cand1.low && cand2.close>cand1.close && cand2.close<(cand1.open+cand1.close)/2) // вторая свеча открывается ниже первой и закрывается выше закрытия первой но ниже середины
                 {
                  comment=_language?"Толчок (М)":"Thrusting Line";
                  if(!_forex)// если не форекс
                    {
                     DrawSignal(prefix+"Thrusting Line the bear model"+string(objcount++),cand1,cand2,InpColorBear,comment);
                    }
                 }
              }
           }
        }

3.2.3. Модели, состоящие из трех свечей

Название модели Ордер Классическая модель Форекс Распознавание модели
Верхний разрыв  метода трех
(бычья)

Bullish Upside Gap Three Methods

Buy

Модель
не
реализуется
 Тренд восходящий.
 Первые две свечи — две «длинных» белых свечи с разрывом.
 Третья свеча открывается внутри тела второй и заполняет разрыв.
 Подтверждение обязательно.
Нижний разрыв метода трех
(медвежья)

Bearish Upside Gap Three Methods

Sell

Модель
не
реализуется
 Тренд нисходящий.
 Первые две свечи — две длинных черных свечи с разрывом.
 Третья свеча открывается внутри тела второй и заполняет разрыв.
 Подтверждение обязательно.

      //------      
      // Upside Gap Three Methods the bull model / Верхний разрыв метода трех бычья модель
      if(cand1.trend==UPPER && cand1.bull && cand2.bull && !cand3.bull && // проверяем направление тренда и направление свечи
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && // первые две свечи "длинные"
         cand2.open>cand1.close && // разрыв между первой и второй
         cand3.open>cand2.open && cand3.open<cand2.close && cand3.close<cand1.close) // третья свеча открывается внутри второй и заполняет разрыв
        {
         comment=_language?"Верхний разрыв метода трех (Б)":"Upside Gap Three Methods";
         if(!_forex)// не форекс
           {
            DrawSignal(prefix+"Upside Gap Three Methods the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
           }
        }
      //------      
      // Downside Gap Three Methods the bull model / Нижний разрыв метода трех медвежья модель
      if(cand1.trend==DOWN && !cand1.bull && !cand2.bull && cand3.bull && // проверяем направление тренда и направление свечи
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && // первые две свечи "длинные"
         cand2.open<cand1.close && // разрыв между первой и второй
         cand3.open<cand2.open && cand3.open>cand2.close && cand3.close>cand1.close) // третья свеча открывается внутри второй и заполняет разрыв
        {
         comment=_language?"Верхний разрыв метода трех (М)":"Downside Gap Three Methods";
         if(!_forex)// не форекс
           {
            DrawSignal(prefix+"Downside Gap Three Methods the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
           }
        }

Название модели Ордер Классическая модель Форекс Распознавание модели
Верхний разрыв тасуки
(бычья)

Bullish Upside Tasuki Gap

Buy

Модель
не
реализуется
 Тренд восходящий.
 Разрыв между двумя соседними белыми свечами. Белые свечи — не обязательно «длинные».
 Третья сессия открывается внутри тела второй свечи.
 Закрытие третьей сессии происходит внутри разрыва, однако разрыв остается частично незаполненным.
 Подтверждение желательно.
Нижний разрыв тасуки
(медвежья)

Bearish Upside Tasuki Gap

Sell

Модель
не
реализуется
 Тренд нисходящий.
 Разрыв между двумя соседними черными свечами. Черные свечи — не обязательно «длинные».
 Третья сессия открывается внутри тела второй свечи.
 Закрытие третьей сессии происходит внутри разрыва, однако разрыв остается частично незаполненным.
 Подтверждение желательно.

      //------      
      // Upside Tasuki Gap the bull model / Верхний разрыв тасуки бычья модель
      if(cand1.trend==UPPER && cand1.bull && cand2.bull && !cand3.bull && // проверяем направление тренда и направление свечи
         cand1.type!=CAND_DOJI && cand2.type!=CAND_DOJI && // первые две свечи не доджи
         cand2.open>cand1.close && // разрыв между первой и второй
         cand3.open>cand2.open && cand3.open<cand2.close && cand3.close<cand2.open && cand3.close>cand1.close) // третья свеча открывается внутри второй и закрывается внутри разрыва
        {
         comment=_language?"Верхний разрыв тасуки (Б)":"Upside Tasuki Gap";
         if(!_forex)// не форекс
           {
            DrawSignal(prefix+"Upside Tasuki Gap the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
           }
        }
      //------      
      // Downside Tasuki Gap the bull model / Нижний разрыв тасуки медвежья модель
      if(cand1.trend==DOWN && !cand1.bull && !cand2.bull && cand3.bull && // проверяем направление тренда и направление свечи
         cand1.type!=CAND_DOJI && cand2.type!=CAND_DOJI && // первые две свечи не доджи
         cand2.open<cand1.close && // разрыв между первой и второй
         cand3.open<cand2.open && cand3.open>cand2.close && cand3.close>cand2.open && cand3.close<cand1.close) // третья свеча открывается внутри второй и закрывается внутри разрыва
        {
         comment=_language?"Нижний разрыв тасуки (М)":"Downside Tasuki Gap";
         if(!_forex)// не форекс
           {
            DrawSignal(prefix+"Downside Tasuki Gap the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
           }
        }

3.2.4. Модели, состоящие из четырех свечей

Название модели Ордер Классическая модель Форекс Распознавание модели
Тройной удар
(бычья)
Bullish Three-Line Strike

Buy

 Бычий тренд продолжается тремя свечами, сходными с моделью Три белых солдата: длинные белые свечи с короткими тенями.
 Форекс: Цены закрытия/открытия белых свечей совпадают.
 Четвертая свеча открывается с разрывом вверх и закрывается ниже цены открытия первой белой свечи.
 Форекс: цены закрытия третьей и открытия четвертой свечи равны.
 Подтверждение обязательно.
Тройной удар (медвежья)
Bearish Three-Line Strike

Sell

 Медвежий тренд продолжается тремя свечами, сходными с моделью Три черные вороны: длинные черные свечи с короткими тенями.
 Форекс: Цены закрытия/открытия черных свечей совпадают (сходно с моделью Три одинаковые вороны).
 Четвертая свеча открывается с разрывом вниз и закрывается выше цены открытия первой черной свечи.
 Форекс: цены закрытия третьей и открытия четвертой свечи равны.
 Подтверждение обязательно.

      //------      
      // Three-line strike the bull model / Тройной удар бычья модель
      if(cand1.trend==UPPER && cand1.bull && cand2.bull && cand3.bull && !cand4.bull && // проверяем направление тренда и направление свечи
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && // проверка "длинной" свечи или "марибози"
         (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG) && // проверка "длинной" свечи или "марибози"
         cand2.close>cand1.close && cand3.close>cand2.close && cand4.close<cand1.open) // закрытие второй выше первой, третьей выше второй, четвертая свеча закрывается ниже первой
        {
         comment=_language?"Тройной удар (Б)":"Three-line strike";
         if(_forex)// если форекс
           {
            if(cand4.open>=cand3.close) // четвертая открывается выше равно третьей
              {
               DrawSignal(prefix+"Three-line strike the bull model"+string(objcount++),cand1,cand3,cand4,InpColorBull,comment);
              }
           }
         else // другой рынок
           {
            if(cand4.open>cand3.close) // четвертая открывается выше третьей
              {
               DrawSignal(prefix+"Three-line strike the bull model"+string(objcount++),cand1,cand3,cand4,InpColorBull,comment);
              }
           }
        }
      //------      
      // Three-line strike the bear model / Тройной удар медвежья модель
      if(cand1.trend==DOWN && !cand1.bull && !cand2.bull && !cand3.bull && cand4.bull && // проверяем направление тренда и направление свечи
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && // проверка "длинной" свечи или "марибози"
         (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG) && // проверка "длинной" свечи или "марибози"
         cand2.close<cand1.close && cand3.close<cand2.close && cand4.close>cand1.open) // закрытие второй ниже первой, третьей ниже второй, четвертая свеча закрывается выше первой
        {
         comment=_language?"Тройной удар (М)":"Three-line strike";
         if(_forex)// если форекс
           {
            if(cand4.open<=cand3.close) // четвертая открывается ниже равно третьей
              {
               DrawSignal(prefix+"Three-line strike the bear model"+string(objcount++),cand1,cand3,cand4,InpColorBear,comment);
              }
           }
         else // другой рынок
           {
            if(cand4.open<cand3.close) // четвертая открывается ниже третьей
              {
               DrawSignal(prefix+"Three-line strike the bear model"+string(objcount++),cand1,cand3,cand4,InpColorBear,comment);
              }
           }
        }

4. Реализация индикатора

Определимся с необходимыми нам входными параметрами.

Рисунок 3. Входные параметры индикатора Candlestick Patterns

Первый параметр "Период усреднения" необходим нам определения направления тренда, определения "длинных" и "коротких" свечей.

Следующий параметр "Вкл. сигнал" отвечает за включение/отключение сигнала. Сигнал сообщает о появлении новой свечной модели.

 

Рисунок 4. Сигналы, генерируемые индикатором Candlestick Patterns

Параметр "Кол-во баров для расчета" - предназначен для облегчения работы индикатора, если его значение меньше равно 0 (ноль), то производится поиск свечных моделей по всей доступной истории, иначе для поиска используется заданное количество баров, что заметно облегчает работу индикатора.

Ну, с цветами, я думаю, все понятно...

Далее "Включить комментарий" отвечает за включение/отключение названий свечных моделей.

"Размер шрифта" задает размер шрифта для комментариев.

Реализация индикатора очень проста.

Ожидаем появления нового бара:

//--- Ждем нового бара
   if(rates_total==prev_calculated)
     {
      return(rates_total);
     }

Затем вычисляем начальное значение счетчика для запуска цикла.

   int limit;
   if(prev_calculated==0)
     {
      if(InpCountBars<=0 || InpCountBars>=rates_total)
         limit=InpPeriodSMA*2;
      else
         limit=rates_total-InpCountBars;
     }
   else
      limit=prev_calculated-1;

В цикле проверяем комбинации свечей, и выводим их на экран в виде, показанном на рис. 5:

Рисунок 5. Пример работы индикатора Candlestick Patterns

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

void DrawSignal(string objname,CANDLE_STRUCTURE &cand,color Col,string comment)
void DrawSignal(string objname,CANDLE_STRUCTURE &cand1,CANDLE_STRUCTURE &cand2,color Col,string comment)
void DrawSignal(string objname,CANDLE_STRUCTURE &cand1,CANDLE_STRUCTURE &cand2,CANDLE_STRUCTURE &cand3,color Col,string comment)

Полный текст индикатора вы найдете в файле Candlestick_Patterns.mq5, прикрепленном в конце статьи.

Заключение

В данной статье мы рассмотрели большинство свечных моделей, методы их распознавания  и привели примеры их реализации на языке программирования MQL5.  В приложении к статье вы найдете два индикатора и включаемый файл. Для использования индикаторы разместите в папку \Indicators, а включаемый файл в папку \Include, после чего откомпилируйте.

Я надеюсь, что анализ свечных моделей повысит результативность вашей работы.

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