← К каталогу
Исходный код · ID 1199

Pattern Recognition

pattern recognition.mq5
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Pattern Recognition — это пользовательский индикатор для платформы MetaTrader 4, который обнаруживает и визуализирует классические свечные модели на графике цены. Индикатор размещает текстовые метки и стрелки в окне графика, указывая на найденные медвежьи и бычьи паттерны. Логика работы основана на анализе соотношения цен открытия, закрытия, максимумов и минимумов на нескольких свечах подряд.

Индикатор использует два буфера отрисовки: стрелки вниз (красные) для медвежьих паттернов и стрелки вверх (красные) для бычьих. Текстовые объекты с названиями паттернов создаются на соответствующей свече и удаляются при деинициализации индикатора. Поддерживаются все основные таймфреймы от M1 до MN.

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

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

Настройки программы

НастройкаОписание
Show_Alert Показывать оповещения — Включает или отключает отправку алерта при обнаружении нового паттерна.
Display_Bearish_Engulfing Медвежьее поглощение — Включает или отключает отображение паттерна медвежьее поглощение (Bearish Engulfing) на графике.
Display_Three_Outside_Down Три снаружи вниз — Включает или отключает отображение паттерна три снаружи вниз (Three Outside Down) на графике.
Display_Three_Inside_Down Три внутри вниз — Включает или отключает отображение паттерна три внутри вниз (Three Inside Down) на графике.
Display_Dark_Cloud_Cover Тёмное облачное покрытие — Включает или отключает отображение паттерна тёмное облачное покрытие (Dark Cloud Cover) на графике.
Display_Three_Black_Crows Три чёрные воронки — Включает или отключает отображение паттерна три чёрные воронки (Three Black Crows) на графике.
Display_Bullish_Engulfing Бычьее поглощение — Включает или отключает отображение паттерна бычьее поглощение (Bullish Engulfing) на графике.
Display_Three_Outside_Up Три снаружи вверх — Включает или отключает отображение паттерна три снаружи вверх (Three Outside Up) на графике.
Display_Three_Inside_Up Три внутри вверх — Включает или отключает отображение паттерна три внутри вверх (Three Inside Up) на графике.
Display_Piercing_Line Проникающая линия — Включает или отключает отображение паттерна проникающая линия (Piercing Line) на графике.
Display_Three_White_Soldiers Три белых солдата — Включает или отключает отображение паттерна три белых солдата (Three White Soldiers) на графике.
Display_Stars Звёздочные паттерны — Включает или отключает отображение звёздочных паттернов (Evening Doji Star, Evening Star, Morning Doji Star) на графике.
Display_Harami Хареми — Включает или отключает отображение паттерна хареми (Harami) на графике.
Получить полный код

Поиск по коду файла

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Red

extern bool Show_Alert = true;
extern bool Display_Bearish_Engulfing = true;
extern bool Display_Three_Outside_Down = true;
extern bool Display_Three_Inside_Down = true;
extern bool Display_Dark_Cloud_Cover = true;
extern bool Display_Three_Black_Crows = true;
extern bool Display_Bullish_Engulfing = true;
extern bool Display_Three_Outside_Up = true;
extern bool Display_Three_Inside_Up = true;
extern bool Display_Piercing_Line = true;
extern bool Display_Three_White_Soldiers = true;
extern bool Display_Stars = true;
extern bool Display_Harami = true;

double upArrow[];
double downArrow[];
string PatternText[5000];

int init() {
      // код доступен только после оплаты
   }

int deinit() {
   ObjectsDeleteAll(0, OBJ_TEXT);
   return(0);
}

int start(){
      // код доступен только после оплаты
   }

   double Range, AvgRange;
   int counter, setalert;
   static datetime prevtime = 0;
   int shift;
   int shift1;
   int shift2;
   int shift3;
   string pattern, period;
   int setPattern = 0;
   int alert = 0;
   int arrowShift;
   int textShift;
   double O, O1, O2, C, C1, C2, L, L1, L2, H, H1, H2;

   if(prevtime == Time[0]) {
      return(0);
   }
   prevtime = Time[0];

   switch (Period()) {
      case 1:
         period = "M1";
         break;
      case 5:
         period = "M5";
         break;
      case 15:
         period = "M15";
         break;
      case 30:
         period = "M30";
         break;      
      case 60:
         period = "H1";
         break;
      case 240:
         period = "H4";
         break;
      case 1440:
         period = "D1";
         break;
      case 10080:
         period = "W1";
         break;
      case 43200:
         period = "MN";
         break;
   }

   for (int j = 0; j < Bars; j++) { 
         PatternText[j] = "pattern-" + j;
   }

   for (shift = 0; shift < Bars; shift++) {

      setalert = 0;
      counter=shift;
      Range=0;
      AvgRange=0;
      for (counter=shift ;counter<=shift+9;counter++) {
         AvgRange=AvgRange+MathAbs(High[counter]-Low[counter]);
      }
      Range=AvgRange/10;
      shift1 = shift + 1;
      shift2 = shift + 2;
      shift3 = shift + 3;

      O = Open[shift1];
      O1 = Open[shift2];
      O2 = Open[shift3];
      H = High[shift1];
      H1 = High[shift2];
      H2 = High[shift3];
      L = Low[shift1];
      L1 = Low[shift2];
      L2 = Low[shift3];
      C = Close[shift1];
      C1 = Close[shift2];
      C2 = Close[shift3];

      if ((C1>O1)&&(O>C)&&(O>=C1)&&(O1>=C)&&((O-C)>(C1-O1))) {
         if (Display_Bearish_Engulfing == true) {
            ObjectCreate(PatternText[shift], OBJ_TEXT, 0, Time[shift1], High[shift1] + Range*1.5);
            ObjectSetText(PatternText[shift], "Bearish Engulfing", 9, "Times New Roman", Red);
            downArrow[shift1] = High[shift1] + Range*0.5;
         }
         if (setalert == 0 && Show_Alert == true) {
            pattern = "Bearish Engulfing Pattern";
            setalert = 1;
         }
      }

      if ((C2>O2)&&(O1>C1)&&(O1>=C2)&&(O2>=C1)&&((O1-C1)>(C2-O2))&&(O>C)&&(C<C1)) {
         if (Display_Three_Outside_Down == true) {   
            ObjectCreate(PatternText[shift], OBJ_TEXT, 0, Time[shift1], Low[shift1] - Range*1.5);
            ObjectSetText(PatternText[shift], "Three Oustide Down", 9, "Times New Roman", Red);
            upArrow[shift1] = Low[shift1] - Range*0.5;
         }
         if (setalert == 0 && Show_Alert == true) {
            pattern="Three Oustide Down Pattern";
            setalert = 1;
         }
      }

      if ((C1>O1)&&(((C1+O1)/2)>C)&&(O>C)&&(O>C1)&&(C>O1)&&((O-C)/(0.001+(H-L))>0.6)) {
         if (Display_Dark_Cloud_Cover == true) {   
            ObjectCreate(PatternText[shift], OBJ_TEXT, 0, Time[shift1], High[shift1] + Range*1.5);
            ObjectSetText(PatternText[shift], "Dark Cloud Cover", 9, "Times New Roman", Red);
            downArrow[shift1] = High[shift1] + Range*0.5;
         }
         if (setalert == 0 && Show_Alert == true) {
            pattern="Dark Cloud Cover Pattern";
            setalert = 1;
         }
      }

      if ((C2>O2)&&((C2-O2)/(0.001+H2-L2)>0.6)&&(C2<O1)&&(C1>O1)&&((H1-L1)>(3*(C1-O1)))&&(O>C)&&(O<O1)) {
         if (Display_Stars == true) {
            ObjectCreate(PatternText[shift], OBJ_TEXT, 0, Time[shift1], High[shift1] + Range*1.5);
            ObjectSetText(PatternText[shift], "Evening Doji Star", 9, "Times New Roman", Red);
            downArrow[shift1] = High[shift1] + Range*0.5;
         }
         if (setalert == 0 && Show_Alert == true) {
            pattern="Evening Doji Star Pattern";
            setalert = 1;
         }
      }

      if ((C1>O1)&&(O>C)&&(O<=C1)&&(O1<=C)&&((O-C)<(C1-O1))) {
         if (Display_Harami == true) {   
            ObjectCreate(PatternText[shift], OBJ_TEXT, 0, Time[shift1], High[shift1] + Range*1.5);
            ObjectSetText(PatternText[shift], "Bearish Harami", 9, "Times New Roman", Red);
            downArrow[shift1] = High[shift1] + Range*0.5;
         }
         if (shift == 0 && Show_Alert == true) {
            pattern="Bearish Harami Pattern";
            setalert = 1;
         }
      }

      if ((C2>O2)&&(O1>C1)&&(O1<=C2)&&(O2<=C1)&&((O1-C1)<(C2-O2))&&(O>C)&&(C<C1)&&(O<O1)) {
         if (Display_Three_Inside_Down == true) {   
         

Показано первые 50% кода (символов: 7850)

Открыть по тарифу

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

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
785₽ ≈ $9.59