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

adxm nrp 2.mq5

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

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

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

О программе

Данный продукт представляет собой пользовательский индикатор для платформы MetaTrader 5, отображаемый в отдельном окне. Он рассчитывает значения направленного индекса (DI) и усредненного направленного индекса (ADX) с применением сглаживания ценовых данных, а также отрисовывает уровни и стрелки в точках изменения направления ADX.

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

Стрелки-метки рисуются при обнаружении разворотов индикаторной линии, что позволяет визуально оценивать изменение тренда. Все элементы графика можно настраивать через параметры цвета, размера и префикса имен объектов.

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

НастройкаОписание
period Период — Период расчёта индикатора, определяющий глубину анализируемых баров.
Level Уровень — Значение горизонтальных уровней, отображаемых на графике индикатора.
Smooth Сглаживание — Параметр сглаживания, используемый при расчёте индикаторных значений.
Prefix Префикс — Префикс имён графических объектов, создаваемых индикатором на графике.
arrowsUpColor Цвет стрелки вверх — Цвет стрелки, рисуемой вверх при развороте индикатора.
arrowsDnColor Цвет стрелки вниз — Цвет стрелки, рисуемой вниз при развороте индикатора.
arrowsUpCode Код стрелки вверх — Код стрелки, рисуемой вверх при развороте индикатора.
arrowsDnCode Код стрелки вниз — Код стрелки, рисуемой вниз при развороте индикатора.
arrowsUpSize Размер стрелки вверх — Размер стрелки, рисуемой вверх при развороте индикатора.
arrowsDnSize Размер стрелки вниз — Размер стрелки, рисуемой вниз при развороте индикатора.
Получить полный код

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

#property indicator_separate_window
#property indicator_buffers 6
#property indicator_color3 LightSlateGray
#property indicator_color4 DodgerBlue
#property indicator_color5 SandyBrown
#property indicator_color6 SandyBrown
#property indicator_style3 STYLE_DOT
#property indicator_width4 2
#property indicator_width5 2
#property indicator_width6 2

extern int    period = 14;
extern int    Level  = 25;
extern double Smooth = 15;
extern string Prefix = "ADXm nrp 2";
extern color  arrowsUpColor = clrDodgerBlue;  //
extern color  arrowsDnColor = clrSandyBrown; //
extern int    arrowsUpCode  = 233;          //
extern int    arrowsDnCode  = 234;          //
extern int    arrowsUpSize  = 3;            //
extern int    arrowsDnSize  = 3;            //
double ADX[],ADXLa[],ADXLb[],DI[],UP[],DN[];

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

int deinit()
{
   ObjectDelete(Prefix);
   deleteArrows();
   return(0);
}

double work[][4];
#define zdh   0
#define zdl   1
#define zdx   2
#define slope 3

int start()
{
      // код доступен только после оплаты
   }
   int i,r,counted_bars = IndicatorCounted();
      if(counted_bars < 0) return(-1);
      if(counted_bars > 0) counted_bars--;
         double alpha = 2.0/(period+1);
         int limit    = MathMin(Bars-counted_bars,Bars-1);
         if (ArrayRange(work,0)!=Bars) ArrayResize(work,Bars);

   if (work[limit][slope]==-1) CleanPoint(limit,ADXLa,ADXLb);
   for (i=limit,r=Bars-i-1; i>=0; i--,r++)
   {

      ObjectDelete(Prefix+":1:"+TimeToStr(Time[i]));
      string lookFor = Prefix+":"+TimeToStr(Time[i]); ObjectDelete(lookFor);

      if (i==Bars-1) { work[r][zdh] = 0; work[r][zdl] = 0; work[r][zdx] = 0;  continue; }

         double hc = iSsm(High[i]   ,Smooth,i,0);
         double lc = iSsm(Low[i]    ,Smooth,i,1);
         double cp = iSsm(Close[i+1],Smooth,i,2);
         double hp = iSsm(High[i+1] ,Smooth,i,3);
         double lp = iSsm(Low[i+1]  ,Smooth,i,4);
         double dh = MathMax(hc-hp,0);
         double dl = MathMax(lp-lc,0);

      if(dh==dl) {dh=0; dl=0;} else if(dh<dl) dh=0; else if(dl<dh) dl=0;

         double num1 = MathAbs(hc-lc);
         double num2 = MathAbs(hc-cp);
         double num3 = MathAbs(lc-cp);
         double tr   = MathMax(MathMax(num1,num2),num3);
         double dhk  = 0;
         double dlk  = 0;

            if(tr!=0) { dhk = 100.0*dh/tr; dlk = 100.0*dl/tr; }

         work[r][zdh] = work[r-1][zdh] + alpha*(dhk-work[r-1][zdh]);
         work[r][zdl] = work[r-1][zdl] + alpha*(dlk-work[r-1][zdl]);
         DI[i]        = work[r][zdh] - work[r][zdl];

            double div  = MathAbs(work[r][zdh] + work[r][zdl]);
            double temp = 0; if( div != 0.0)  temp = 100*(MathAbs(DI[i])/div); 
               if (work[r][zdh]<work[r][zdl]) temp = -temp;

         work[r][zdx]   = work[r-1][zdx] + alpha*(temp-work[r-1][zdx]);
         ADX[i]         = work[r][zdx];
         ADXLa[i]       = EMPTY_VALUE;
         ADXLb[i]       = EMPTY_VALUE;
         work[r][slope] = work[r-1][slope];

      if (ADX[i]>ADX[i+1]) work[r][slope] =  1;
      if (ADX[i]<ADX[i+1]) work[r][slope] = -1;
      if (work[r][slope]==-1) PlotPoint(i,ADXLa,ADXLb,ADX);

      if (ADX[i]>ADX[i+1] && ADX[i+1]<ADX[i+2]) 
      {
      UP[i]=1;
      drawArrowUP("1",1,i,arrowsUpColor,arrowsUpCode,arrowsUpSize);
      } 
      else UP[i]=EMPTY_VALUE;

      if (ADX[i]<ADX[i+1] && ADX[i+1]>ADX[i+

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

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

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

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

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

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

Стоимость полного кода
561,70₽ ≈ $6.87