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

ocn ndx jurik smoothed histo mtf.mq5

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

#__slope direction line.mq5MQL5 / MetaTrader 5 · 1 общих теговrange breakout @meowforex1.pineTradingView · 1 общих тегов#1.mtf_collider_h4_close_13_v18bar.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit3.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit2.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit.mq4MQL4 / MetaTrader 4 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

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

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

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

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

НастройкаОписание
TimeFrame Таймфрейм — Выбор таймфрейма для расчёта индикатора (например, текущий, M1, H4, D1 и т.д.)
NDX_Period NDX_Period — Период расчёта основного аналитического значения
NDX_Price NDX_Price — Тип цены, используемой для расчёта (например, закрытие)
SmoothLength SmoothLength — Длина сглаживания основного сигнала
SmoothPhase SmoothPhase — Фазовый параметр сглаживания
SmoothDouble SmoothDouble — Включение или отключение двойного сглаживания
Interpolate Interpolate — Включение или отключение интерполяции значений между барами
HistoOnSlope HistoOnSlope — Переключение отображения гистограмм по направлению наклона
levelOb levelOb — Верхний уровень осциллятора
levelOs levelOs — Нижний уровень осциллятора
Получить полный код

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

#property indicator_separate_window
#property indicator_buffers    5
#property indicator_color1     LimeGreen
#property indicator_color2     Maroon
#property indicator_color3     Red
#property indicator_color4     DarkGreen
#property indicator_color5     DarkSlateGray   
#property indicator_width1     3
#property indicator_width2     3
#property indicator_width3     3
#property indicator_width4     3
#property indicator_width5     3
#property indicator_levelcolor DimGray

extern string TimeFrame    = "Current time frame";
extern int    NDX_Period   = 40;
extern int    NDX_Price    = PRICE_CLOSE;
extern double SmoothLength = 10;
extern double SmoothPhase  = 0;
extern bool   SmoothDouble = false;
extern bool   Interpolate  = true;
extern bool   HistoOnSlope = true;

extern int    levelOb      = 50;
extern int    levelOs      = -50; 

double ndx[];
double ndxhuu[];
double ndxhud[];
double ndxhdd[];
double ndxhdu[];
double trend[];
double slope[];
double tBuffer[][4];

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

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

int deinit() { return(0); }

#define iPrc 3

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

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

   if (calculateValue || timeFrame==Period())
   {
     if (ArrayRange(tBuffer,0) != Bars) ArrayResize(tBuffer,Bars);
     for(i=limit, r=Bars-i-1; i >= 0; i--,r++)
     {
        double currPrice = iMA(NULL,0,1,0,MODE_SMA,NDX_Price,i);
           if (currPrice > 0)
                 tBuffer[r][iPrc] = MathLog(currPrice);
           else  tBuffer[r][iPrc] = 0.00;

           double sumMom = 0;
           double sumDen = 0;
           double sumDif = 0;
           for (int k=1; k < NDX_Period; k++)
           {
              sumDif += MathAbs(tBuffer[r-k+1][iPrc]-tBuffer[r-k][iPrc]);
              if (sumDif !=0)
                    double stoch = (tBuffer[r][iPrc]-tBuffer[r-k][iPrc])/sumDif;
              else         stoch = 0;
              double coeff = 1.0/MathSqrt(k);

              sumMom += coeff*stoch;
              sumDen += coeff;
           }

           ndx[i] = iDSmooth(100.0*(sumMom/sumDen),SmoothLength,SmoothPhase,SmoothDouble,i);
           if (ndx[i] > 90) ndx[i] =  90+( ndx[i]-90)/2.0;
           if (ndx[i] <-90) ndx[i] = -90-(-ndx[i]-90)/2.0;

           ndxhuu[i] = EMPTY_VALUE;
           ndxhud[i] = EMPTY_VALUE;
           ndxhdd[i] = EMPTY_VALUE;
           ndxhdu[i] = EMPTY_VALUE;
           trend[i]  = trend[i+1]; 
           slope[i]  = slope[i+1];
                if (ndx[i] > 0)        trend[i] =  1;
                if (ndx[i] < 0)        trend[i] = -1;
                if (ndx[i] > ndx[i+1]) slope[i] =  1;
                if (ndx[i] < ndx[i+1]) slope[i] = -1;

                if (HistoOnSlope)
                {
                  if (trend[i] ==  1 && slope[i] ==  1) ndxhuu[i] = ndx[i];
                  if (trend[i] ==  1 && slope[i] == -1) ndxhud[i] = ndx[i];
                  if (trend[i] == -1 && slope[i] == -1) ndxhdd[i] = ndx[i];
                  if (trend[i] == -1 && slope[i] ==  1) ndxhdu[i] = ndx[i];
                }
                else
                {                  
                  if (trend[i] ==  1) ndxhuu[i] = ndx[i];
                  if (trend[i] == -1) ndxhdd[i] = ndx[i];
                }

          }  
     return(0);
     }

    limit = MathMax(limit,MathMin(Bars-1,iCustom(NULL,timeFrame,indicatorFileName,"returnBars",0,0)*timeFrame/Period()));
    for (i=limit;i>=0; i--)
    {
       int y = iBarShift(NULL,timeFrame,Time[i]);
          ndx[i]   = iCustom(NULL,timeFrame,indicatorFileName,"calculateValue",NDX_Period,NDX_Price,SmoothLength

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

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

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

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

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

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

Стоимость полного кода
710,80₽ ≈ $8.69