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

qqe-histo-alerts-mtf.mq5

Похожие материалы по тегам

!!!-mt4 x-xardg-rsi.mq5MQL5 / MetaTrader 5 · 2 общих тегов!!! rsi ma simple+arrows 1.2 (mtf).mq5MQL5 / MetaTrader 5 · 2 общих теговea robofibo source v.11.2.mq4MQL4 / MetaTrader 4 · 2 общих теговsureforexhedingvonepointoneone.mq4MQL4 / MetaTrader 4 · 2 общих теговsureforexhedging 1.10 optimized.mq4MQL4 / MetaTrader 4 · 2 общих теговsureforexhedging 1.09 a (2).mq4MQL4 / MetaTrader 4 · 2 общих тегов
Вы автор или правообладатель?

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

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

О программе

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

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

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

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

НастройкаОписание
TimeFrame Таймфрейм — Указывает таймфрейм, на котором выполняется расчёт индикатора (например, M1, H1, D1 или Current time frame).
SF Сглаживание — Параметр сглаживания, влияющий на скорость отклика расчётной линии.
RSIPeriod Период RSI — Период расчёта базового индикатора RSI, используемого в вычислениях.
WP Множитель тренда — Множитель, определяющий чувствительность расчётной линии тренда.
UpperBound Верхняя граница — Задаёт верхнюю границу для отображения гистограммы (значение по умолчанию 60).
LowerBound Нижняя граница — Задаёт нижнюю границу для отображения гистограммы (значение по умолчанию 40).
Interpolate Интерполяция — Включает или отключает интерполяцию расчётных значений между барами при работе на мультитаймфреймах.
alertsOn Уведомления включены — Общий переключатель, активирующий или деактивирующий всю систему уведомлений.
alertsSignalLineCross Пересечение сигнальной линии — При включении уведомления срабатывают при пересечении сигнальной линии; при выключении — при пересечении уровня 50.
alertsOnCurrent Проверка на текущем баре — Определяет, на каком баре проверять условие для уведомлений: на текущем или на предыдущем.
alertsMessage Всплывающие уведомления — Включает или отключает всплывающие сообщения на графике.
alertsSound Звуковые уведомления — Включает или отключает звуковые уведомления.
alertsEmail Уведомления по email — Включает или отключает отправку уведомлений по электронной почте.
Получить полный код

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

#property indicator_separate_window
#property indicator_buffers 5
#property indicator_color1  Green
#property indicator_color2  Gold
#property indicator_color3  Red
#property indicator_color4  DimGray
#property indicator_color5  Lime
#property indicator_width1  2
#property indicator_width2  2
#property indicator_width3  2
#property indicator_width4  2
#property indicator_width5  2
#property indicator_levelcolor DimGray

extern string TimeFrame   = "Current time frame";
extern int    SF          = 5;
extern int    RSIPeriod   = 14;
extern double WP          = 4.236;
extern double UpperBound  = 60; 
extern double LowerBound  = 40; 
extern bool   Interpolate = true;

extern bool alertsOn              = true;
extern bool alertsSignalLineCross = false;
extern bool alertsOnCurrent       = true;
extern bool alertsMessage         = true;
extern bool alertsSound           = false;
extern bool alertsEmail           = false;

double RsiMa[];
double Trend[];
double HistoU[];
double HistoM[];
double HistoD[];
double work[][6];

string indicatorFileName;
bool   calculateValue;
bool   returnBars;
int    timeFrame;

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

#define iEma 0
#define iEmm 1
#define iQqe 2
#define iRsi 3
#define tQqe 4
#define tQqs 5

int start()
{
      // код доступен только после оплаты
   }
   int counted_bars=IndicatorCounted();
   int i,n,k,r,limit;

   if(counted_bars < 0) return(-1);
   if(counted_bars > 0) counted_bars--;
           limit = MathMin(Bars-counted_bars,Bars-1);
           if (returnBars) { HistoU[0] = limit+1; return(0); }

   if (calculateValue || timeFrame==Period())
   {
      if (ArrayRange(work,0) != Bars) ArrayResize(work,Bars); 
            double alpha1 = 2.0/(SF+1.0);
            double alpha2 = 2.0/(RSIPeriod*2.0);
      for (i=limit, r=Bars-i-1; i>=0; i--,r++)
      {  
         work[r][iRsi] = work[r-1][iRsi] + alpha1*(iRSI(NULL,0,RSIPeriod,PRICE_CLOSE,i)   - work[r-1][iRsi]);
         work[r][iEma] = work[r-1][iEma] + alpha2*(MathAbs(work[r-1][iRsi]-work[r][iRsi]) - work[r-1][iEma]);
         work[r][iEmm] = work[r-1][iEmm] + alpha2*(work[r][iEma] - work[r-1][iEmm]);

         double rsi0 = work[r  ][iRsi];
         double rsi1 = work[r-1][iRsi];
         double dar  = work[r  ][iEmm]*WP;
         double tr   = work[r-1][iQqe];
         double dv   = tr;

            if (rsi0 < tr) { tr = rsi0 + dar; if ((rsi1 < dv) && (tr > dv)) tr = dv; }
            if (rsi0 > tr) { tr = rsi0 - dar; if ((rsi1 > dv) && (tr < dv)) tr = dv; }

         work[r][iQqe] = tr;
         work[r][tQqe] = work[r-1][tQqe];
         work[r][tQqs] = work[r-1][tQqs];
         RsiMa[i]      = work[r][iRsi]-50;
         Trend[i]      = tr           -50;
         HistoU[i]     =  EMPTY_VALUE;
         HistoM[i]     =  EMPTY_VALUE;
         HistoD[i]     =  EMPTY_VALUE;

         if (RsiMa[i] > (UpperBound-50))                           HistoU[i] = RsiMa[i];
         if (RsiMa[i] < (LowerBound-50))                           HistoD[i] = RsiMa[i];
         if (HistoU[i] == EMPTY_VALUE && HistoD[i] == EMPTY_VALUE) HistoM[i] = RsiMa[i];

         if (RsiMa[i] > 0)        work[r][tQqe] =  1;
         if (RsiMa[i] < 0)        work[r][tQqe] = -1;
         if (RsiMa[i] > Trend[i]) work[r][tQqs] =  1;
         if (RsiMa[i] < Trend[i]) work[r][tQqs] = -1;
      }
      manageAlerts();
      return(0);
   }

   if (ArrayRange(work,0) != Bars) ArrayResize(work,Bars); 
   limit = MathMax(limit,MathMin(Bars,iCustom(NULL,timeFrame,indicatorFileName,"returnBars",0,0)*timeFrame/Period()));
   for (i=limit, r=Bar

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

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

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

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

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

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

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