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

pattern alert.mq5

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

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

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

О программе

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

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

НастройкаОписание
Show_Text_Labels Показать текстовые метки — Включает или отключает отображение текстовых подписей с названиями обнаруженных паттернов на графике.
Show_Bearish_Engulfing_Patterns Показать медвежьи паттерны поглощения — Включает или отключает обнаружение и отображение медвежьего паттерна поглощения.
Show_Bullish_Engulfing_Patterns Показать бычьи паттерны поглощения — Включает или отключает обнаружение и отображение бычьего паттерна поглощения.
Show_Star_Patterns Показать звёздные паттерны — Включает или отключает обнаружение и отображение звёздных паттернов, включая утреннюю и вечерную звезду и их разновидности с доджи.
Show_Tweezer_Bottoms Показать паттерны клещей вниз — Включает или отключает обнаружение и отображение паттерна клещей на дне (совпадение минимумов двух свечей).
Show_Tweezer_Tops Показать паттерны клещей вверх — Включает или отключает обнаружение и отображение паттерна клещей на вершине (совпадение максимумов двух свечей).
Получить полный код

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

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

extern bool Show_Text_Labels = true;
extern bool Show_Bearish_Engulfing_Patterns = true;
extern bool Show_Bullish_Engulfing_Patterns = true;
extern bool Show_Star_Patterns = true;
extern bool Show_Tweezer_Bottoms = true;
extern bool Show_Tweezer_Tops = true;

double ExtMapBuffer1[];
double ExtMapBuffer2[];
string PatternText[2000];

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

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

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

   Comment("Pattern Alert v1.1 Official");

   static datetime prevtime = 0;
   int shift;
   int shift1;
   int shift2;
   int shift3;
   string pattern;
   int setPattern = 0;
   int alert = 0;
   int arrowShift;
   int textShift;

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

   switch (Period()) {
      case 1:
         arrowShift = 1;
         textShift = 3;
         break;
      case 5:
         arrowShift = 3;
         textShift = 8;
         break;
      case 30:
         arrowShift = 7;
         textShift = 13;
         break;
      case 15:
         arrowShift = 7;
         textShift = 15;
         break;
      case 60:
         arrowShift = 9;
         textShift = 25;
         break;
      case 1440:
         arrowShift = 3;
         textShift = 7;
         break;
      case 10080:
         arrowShift = 95;
         textShift = 235;
         break;
      case 43200:
         arrowShift = 150;
         textShift = 260;
         break;
   }

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

   for (shift = 0; shift < Bars; shift++) {
      shift1 = shift + 1;
      shift2 = shift + 2;
      shift3 = shift + 3;

      if (Show_Bearish_Engulfing_Patterns == true) {
         if ((Close[shift2] > Open[shift2]) && (Open[shift1] > Close[shift2]) && (Close[shift1] < Open[shift2])) {
            if (Show_Text_Labels) {
               ObjectCreate(PatternText[shift], OBJ_TEXT, 0, Time[shift1], High[shift1] + (Point * textShift));
               ObjectSetText(PatternText[shift], "Bearish Engulfing", 9, "Times New Roman", Red);
            }
            ExtMapBuffer1[shift1] = High[shift1] + (Point * arrowShift);         
            if (setPattern == 0) {
               pattern="Bearish Engulfing Pattern";
               setPattern = 1;
               alert = 1;
            }
            continue;
         }
      }

      if (Show_Bullish_Engulfing_Patterns == true) {
         if ((Close[shift2] < Open[shift2]) && (Open[shift1] < Close[shift2]) && (Close[shift1] > Open[shift2])) {
            if (Show_Text_Labels == true) {
               ObjectCreate(PatternText[shift], OBJ_TEXT, 0, Time[shift1], High[shift1] + (Point * textShift));
               ObjectSetText(PatternText[shift], "Bullish Engulfing", 9, "Times New Roman", Red);
            }
            ExtMapBuffer1[shift1] = High[shift1] + (Point * arrowShift);
            if (setPattern == 0) {
               pattern="Bullish Engulfing Pattern";
               setPattern = 1;
               alert = 1;
            }
            continue;
         }
      }

      if ((Close[2] > Open[2]) && (Open[1] > High[2]) && (Close[1] < ((Open[2] + Close[2]) / 2)) && (Close[1] > Open[2])) {

         if (Show_Text_Labels == true) {
            ObjectCreate(PatternText[shift], OBJ_TEXT, 0, Time[shift1], High[shift1] + (Point * textShift));
            ObjectSetText(PatternText[shift], "Dark Cloud Cover", 9, "Times New Roman", Red);
         }
         ExtMapBuffer1[shift1] = High[shift1] + (Point * arrowShift);
         if (setPattern == 0) {
            pattern="Dark Cloud Cover";
            setPattern = 1;
            alert = 1;
         }
           continue;
       }

      if (Show_Star_Patterns == true) {

         if (
            (Close[3] > Open[3]) //Bullish candle
            && (Open[2] == Close[2]) && (Low[2] < Open[2]) && (High[2] > Open[2]) // Doji
            && (Low[2] >= Close[3]) // Doji close higher or equal to Bullish close
            && (High[1] <= Close[2]) && (Open[1] <= Low[2]) && (Open[1] >= Close[3]) &&
            (Close[1] < ((Open[3] + Close[3]) / 2)) && (Close[1] > Open[3]) // Bearish candle in pattern
            ) {
               if (Show_Text_Labels == true) {
                  ObjectCreate(PatternText[shift], OBJ_TEXT, 0, Time[shift1], High[shift1] + (Point * textShift));
                

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

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

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

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

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

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

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