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

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 общих тегов
Вы автор или правообладатель?

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

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

О программе

Индикатор «QQE histo» отображает гистограмму на основе метода QQE (Quantitative Qualitative Estimation) в отдельном окне графика. Он рассчитывает три столбца гистограммы: верхний (зелёный), средний (золотой) и нижний (красный), а также рисует линии RSI-средней и тренда. Расчёт основан на сглаженном RSI с экспоненциальными скользящими средними и заданным коэффициентом детализации.

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

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

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

НастройкаОписание
TimeFrame Выбранный таймфрейм для расчёта и отображения индикатора. Можно указать любой стандартный период или оставить текущий.
SF Коэффициент сглаживания экспоненциальной скользящей средней, применяемой при расчёте QQE.
RSIPeriod Период расчёта индекса относительной силы (RSI), используемого в формуле QQE.
WP Множитель, определяющий амплитуду отклонения линии QQE от предыдущего значения при расчёте тренда.
UpperBound Верхняя граница диапазона для определения верхнего столбца гистограммы. Значения RSI-средней выше этой границы отображаются как верхний столбец.
LowerBound Верхняя граница диапазона для определения нижнего столбца гистограммы. Значения RSI-средней ниже этой границы отображаются как нижний столбец.
Interpolate Включает или отключает интерполяцию значений между барами для более плавного отображения индикатора на графике.
alertsOn Главный переключатель, включающий или отключающий всю систему уведомлений индикатора.
alertsSignalLineCross При включении уведомления срабатывают при пересечении линии QQE сигнальной линией. При выключении — при пересечении уровня 50.
alertsOnCurrent Определяет, на каком баре проверять условие уведомления: на текущем или на предыдущем.
alertsMessage Включает или отключает всплывающие сообщения на графике при срабатывании условия уведомления.
alertsSound Включает или отключает звуковой сигнал при срабатывании условия уведомления.
alertsEmail Включает или отключает отправку электронных писем при срабатывании условия уведомления.
Получить полный код

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

#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, 

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

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

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

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

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

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

Стоимость полного кода
612,10₽ ≈ $7.48