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

FILTER-EXTRA

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

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

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

О программе

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

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

Настройки охватывают параметры анализа, визуализации и уведомлений. Все параметры объявлены как extern-переменные и доступны в диалоге настроек терминала.

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

НастройкаОписание
timeFrame Таймфрейм — Таймфрейм для расчёта (целое число)
Length Длина диапазона — Длина диапазона для поиска экстремумов (целое число)
barsback Количество баров назад — Количество баров для анализа (целое число)
alertsOn Уведомления включены — Включить систему уведомлений (переключатель)
alertsOnCurrent Уведомления для текущего бара — Отправлять уведомления для текущего бара (переключатель)
alertsMessage Всплывающие сообщения — Включить всплывающие сообщения (переключатель)
alertsSound Звуковое оповещение — Включить звуковое оповещение (переключатель)
alertsNotify Push-уведомления — Включить push-уведомления (переключатель)
alertsEmail Email-уведомления — Включить отправку email-уведомлений (переключатель)
soundfile Звуковой файл — Имя звукового файла для оповещения (текстовый параметр)
arrowsVisible Отображать стрелки — Отображение стрелок на графике (переключатель)
arrowsIdentifier Идентификатор стрелок — Идентификатор стрелок на графике (текстовый параметр)
arrowsDisplacement Смещение стрелок — Смещение стрелок от цены (число)
arrowsUpColor Цвет стрелки вверх — Цвет стрелки вверх (цвет)
arrowsDnColor Цвет стрелки вниз — Цвет стрелки вниз (цвет)
arrowsUpCode Код стрелки вверх — Код стрелки вверх (целое число)
arrowsDnCode Код стрелки вниз — Код стрелки вниз (целое число)
arrowsUpSize Размер стрелки вверх — Размер стрелки вверх (целое число)
arrowsDnSize Размер стрелки вниз — Размер стрелки вниз (целое число)
Получить полный код

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

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue
#property indicator_width1 3
#property indicator_width2 3

extern int    timeFrame          = 1440;
extern int    Length             = 1;
extern int    barsback           = 500;
extern bool   alertsOn           = true;
extern bool   alertsOnCurrent    = true;
extern bool   alertsMessage      = true;
extern bool   alertsSound        = true;
extern bool   alertsNotify       = false;
extern bool   alertsEmail        = false;
extern string soundfile          = "alert2.wav"; 
extern bool   arrowsVisible      = true;
extern string arrowsIdentifier   = "filterArrows";
extern double arrowsDisplacement = 0.1;
extern color  arrowsUpColor      = DeepSkyBlue;
extern color  arrowsDnColor      = Red;
extern int    arrowsUpCode       = 233;
extern int    arrowsDnCode       = 234;
extern int    arrowsUpSize       = 1;
extern int    arrowsDnSize       = 1;

double buffer1[];
double buffer2[];
bool cer;
bool cer2;
bool cer3 = TRUE;
string fileName;

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

int deinit() {
   string lookFor       = arrowsIdentifier+":";
   int    lookForLength = StringLen(lookFor);
   for (int i=ObjectsTotal()-1; i>=0; i--)
   {
      string objectName = ObjectName(i);
         if (StringSubstr(objectName,0,lookForLength) == lookFor) ObjectDelete(objectName);
   }
   return (0);
}

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

   if (timeFrame!=Period())
   {
      int limit = MathMin(Bars-1,barsback*timeFrame/Period());
      for (int i = limit; i >= 0; i--)
      {
         int y = iBarShift(NULL,timeFrame,Time[i]);
         buffer1[i] = iCustom(NULL,timeFrame,fileName,0,Length,barsback,alertsOn,alertsOnCurrent,alertsMessage,alertsSound,alertsNotify,alertsEmail,soundfile,arrowsVisible,arrowsIdentifier,arrowsDisplacement,arrowsUpColor,arrowsDnColor,arrowsUpCode,arrowsDnCode,arrowsUpSize,arrowsDnSize,0,y);
         buffer2[i] = iCustom(NULL,timeFrame,fileName,0,Length,barsback,alertsOn,alertsOnCurrent,alertsMessage,alertsSound,alertsNotify,alertsEmail,soundfile,arrowsVisible,arrowsIdentifier,arrowsDisplacement,arrowsUpColor,arrowsDnColor,arrowsUpCode,arrowsDnCode,arrowsUpSize,arrowsDnSize,1,y);
      }
      return(0);
   }

   double low1;
   double high1;
   double cero[10000][3];
   if (!cer3) return (0);

   int pep = 0;
   int bep = 0;
   int tep = 0;

   double high60 = High[barsback];
   double low68 = Low[barsback];

   int li3 = barsback;
   int li6 = barsback;
   for (int li2 = barsback; li2 >= 0; li2--) {
      low1 = 10000000;
      high1 = -100000000;
      for (int li8 = li2 + Length; li8 >= li2 + 1; li8--) {
         if (Low[li8] < low1) low1 = Low[li8];
         if (High[li8] > high1) high1 = High[li8];
      }
      if (Low[li2] < low1 && High[li2] > high1) {
         bep = 2;
         if (pep == 1) li3 = li2 + 1;
         if (pep == -1) li6 = li2 + 1;

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

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

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

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

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

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

Стоимость полного кода
441,30₽ ≈ $5.39