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

HiLow 2 Jurik DS RV

hilow 2 jurik double smooth rv mtf sw nmc.mq5
Вы автор или правообладатель?

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

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

О программе

Индикатор HiLow 2 Jurik DS RV для MetaTrader 4 отображает направление ценового потока на основе двойного сглаживания Жюрика. Рассчитывает канальные значения верхней и нижней границы и определяет, находится ли текущая цена выше или ниже этого канала. Поддерживает многофреймовый анализ с интерполяцией данных между барами выбранного таймфрейма.

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

НастройкаОписание
TimeFrame Таймфрейм — Таймфрейм, на котором выполняется расчёт индикатора; позволяет анализировать данные более высоких временных интервалов.
Interpolate Интерполяция — Включает или отключает интерполяцию значений между барами при использовании таймфрейма, отличного от текущего.
SmoothPeriod Период сглаживания — Основной период, определяющий степень сглаживания канальных линий.
SmoothPhase Фаза сглаживания — Параметр фазы, влияющий на характер сглаживания кривых.
Reverse Инверсия — Переключает направление отображения канальных значений при определении верхней и нижней границы.
PricePeriod Период цены — Период скользящей средней отображаемой цены, показываемой на графике.
MODE_EMA; (Method) Метод усреднения — Метод расчёта скользящей средней для отображаемой цены (например, SMA, EMA).
WEIGHTED; // (Price) Тип цены — Тип ценового значения, используемого для расчёта скользящей средней (например, Close, Weighted).
ShowPrice Показать цену — Отображать или скрывать линию скользящей средней цены на графике индикатора.
alertsOn Уведомления включены — Общий переключатель для включения или отключения всех типов уведомлений.
alertsOnCurrent Уведомления на текущем баре — Определяет, генерировать ли уведомление на текущем баре или на следующем.
alertsMessage Сообщения — Включает или отключает вывод текстовых уведомлений в журнал терминала.
alertsSound Звуковые сигналы — Включает или отключает воспроизведение звукового файла при срабатывании уведомления.
alertsEmail Электронная почта — Включает или отключает отправку email-уведомлений при изменении направления.
Получить полный код

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

#property indicator_separate_window  //chart_window
#property indicator_buffers 4
#property indicator_color1  clrOrange
#property indicator_color2  clrLimeGreen
#property indicator_color3  clrLimeGreen
#property indicator_color4  clrMagenta  //DodgerBlue
#property indicator_width1  2
#property indicator_width2  2
#property indicator_width3  2
#property indicator_width4  1

extern ENUM_TIMEFRAMES TimeFrame  = PERIOD_CURRENT;
extern bool   Interpolate     = false;
extern int    SmoothPeriod    = 16;
extern int    SmoothPhase     = 0;
extern bool   Reverse         = true;

extern int            PricePeriod = 4;
extern ENUM_MA_METHOD     Method  = MODE_SMA;  //MODE_EMA;
extern ENUM_APPLIED_PRICE Price   = PRICE_CLOSE;  //WEIGHTED;  //
extern bool           ShowPrice   = true;

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

double sslda[];
double sslua[];
double sslub[];
double PRICE[];
double Hlv[];

bool   returnBars;
string IndikName;

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

int start()
{
      // код доступен только после оплаты
   }
   double calcSmoothPeriod = MathSqrt(SmoothPeriod);
   int CountedBars=IndicatorCounted();
   int i,limit;

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

   if (TimeFrame > _Period)       limit = MathMax(limit,MathMin(Bars,iCustom(NULL,TimeFrame,IndikName,-99,0,0)*TimeFrame/_Period));  
   if (Hlv[limit]==1) CleanPoint(limit,sslua,sslub);

   if (TimeFrame != _Period)
   {
      for(i=limit;i>=0;i--)
      {
         int      bar  = iBarShift(NULL,TimeFrame,Time[i]);
         datetime	time = iTime    (NULL,TimeFrame,bar);

            sslda[i] = iCustom(NULL,TimeFrame,IndikName,PERIOD_CURRENT,Interpolate,SmoothPeriod,SmoothPhase,Reverse,PricePeriod,Method,Price,ShowPrice,0,bar); 
            sslua[i] = EMPTY_VALUE;
            sslub[i] = EMPTY_VALUE;
            PRICE[i] = iCustom(NULL,TimeFrame,IndikName,PERIOD_CURRENT,Interpolate,SmoothPeriod,SmoothPhase,Reverse,PricePeriod,Method,Price,ShowPrice,3,bar); 
            Hlv[i]   = iCustom(NULL,TimeFrame,IndikName,PERIOD_CURRENT,Interpolate,SmoothPeriod,SmoothPhase,Reverse,PricePeriod,Method,Price,ShowPrice,4,bar); 

                  if (TimeFrame <= _Period || bar==iBarShift(NULL,TimeFrame,Time[i-1])) continue;
                  if (!Interpolate) continue;

            for(int n = 1; i+n < Bars && Time[i+n] >= time; n++) continue;	
            double factor = 1.0 / n;
               for(int k = 1; k < n; k++) {
         		      sslda[i+k] = k*factor*sslda[i+n] + (1.0-k*factor)*sslda[i];
         		      PRICE[i+k] = k*factor*PRICE[i+n] + (1.0-k*factor)*PRICE[i]; }
      }   
      for(i=limit;i>=0;i--) if (Hlv[i] ==1) PlotPoint(i,sslua,sslub,sslda);
   }

   else

   {
      for(i=limit;i>=0;i--)
      {
         double hiPrice = iDSmooth(High[i+1],calcSmoothPeriod,SmoothPhase,i+1, 0);
         double loPrice = iDSmooth(Low[i+1] ,calcSmoothPeriod,SmoothPhase,i+1,20);
         double clPrice = iDSmooth(Close[i] ,calcSmoothPeriod,SmoothPhase,i  ,40);
         PRICE[i]       = iMA(NULL,0,PricePeriod,0,Method,Price,i);

         Hlv[i] = Hlv[i+1];
            if(clPrice>hiPrice) Hlv[i] =  1;     
            if(clPrice<loPrice) Hlv[i] = -1;

            if(Hlv[i] == 1)
               {

                  sslda[i] = (Reverse) ? loPrice : hiPrice;
               }               
            if(Hlv[i] == -1)
               {

                  sslda[i] = (Reverse) ? hiPrice : loPrice;
               } 
            sslua[i] = EMPTY_VALUE;
            sslub[i] = EMPTY_VALUE;
            if (Hlv[i] ==1) PlotPoint(i,sslua,sslub,sslda);               
      }
   }

   if (alertsOn)
   {
      if (alertsOnCurrent)
           int whi

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

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

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

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

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

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

Стоимость полного кода
708,90₽ ≈ $8.66