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

Pattern Recognition

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

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

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

О программе

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

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

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

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

НастройкаОписание
Show_Alert Показывать уведомления — Включает или отключает отправку уведомлений при обнаружении нового паттерна на текущем баре.
Display_Bearish_Engulfing Отображение медвежьего поглощения — Включает или отключает отображение паттерна медвежьего поглощения на графике.
Display_Three_Outside_Down Отображение три снаружи вниз — Включает или отключает отображение паттерна три снаружи вниз на графике.
Display_Three_Inside_Down Отображение три внутри вниз — Включает или отключает отображение паттерна три внутри вниз на графике.
Display_Dark_Cloud_Cover Отображение тёмного облачного покрова — Включает или отключает отображение паттерна тёмного облачного покрова на графике.
Display_Three_Black_Crows Отображение трёх чёрных ворон — Включает или отключает отображение паттерна трёх чёрных ворон на графике.
Display_Bullish_Engulfing Отображение бычьего поглощения — Включает или отключает отображение паттерна бычьего поглощения на графике.
Display_Three_Outside_Up Отображение три снаружи вверх — Включает или отключает отображение паттерна три снаружи вверх на графике.
Display_Three_Inside_Up Отображение три внутри вверх — Включает или отключает отображение паттерна три внутри вверх на графике.
Display_Piercing_Line Отображение проникающей линии — Включает или отключает отображение паттерна проникающей линии на графике.
Display_Three_White_Soldiers Отображение трёх белых солдат — Включает или отключает отображение паттерна три белых солдата на графике.
Display_Stars Отображение звёздных паттернов — Включает или отключает отображение звёздных паттернов (вечерняя и утренняя звезда) на графике.
Display_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