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

DRSI filtered

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

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

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

О программе

DRSI filtered — это пользовательский индикатор для платформы MetaTrader 5, отображаемый в отдельном подокне графика. Он рассчитывает показатель направленной силы на основе анализа ценовых разниц с предварительным сглаживанием заданным фильтром и нормализует результат в диапазон от 0 до 100 с уровнем 50.

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

Индикатор рисуется одним буфером линией цветом PaleVioletRed толщиной 2 пикселя. Его назначение — визуализация относительной силы движения цены в отфильтрованном виде для помощи в техническом анализе.

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

НастройкаОписание
period Период расчёта индикатора — количество баров, участвующих в суммировании значений.
filter Период фильтрации — задаёт длину сглаживающей фильтрации для исходных данных.
Получить полный код

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

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1  PaleVioletRed
#property indicator_width1  2
#property indicator_minimum 0
#property indicator_maximum 100
#property indicator_level1  50

extern int period = 14;
extern int filter = 15;
double drsi[];

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

double workDrsi[][2];
#define _dmp 0
#define _dmm 1
int start()
{
      // код доступен только после оплаты
   }
   int i,r,counted_bars=IndicatorCounted();
      if(counted_bars<0) return(-1);
      if(counted_bars>0) counted_bars--;
         int limit = MathMin(Bars-counted_bars,Bars-1);
         if (ArrayRange(workDrsi,0)!=Bars) ArrayResize(workDrsi,Bars);

   for(i=limit, r=Bars-i-1; i>=0; i--,r++)
   {
      double lm = iGflt(Low[i+1]-Low[i],filter,i,0);
      double hm = iGflt(High[i]-High[i+1],filter,i,1);
         if (hm>0 && hm>lm)
               workDrsi[r][_dmp] = hm;
         else  workDrsi[r][_dmp] = 0;
         if (lm>0 && lm>hm)
               workDrsi[r][_dmm] = lm;
         else  workDrsi[r][_dmm] = 0;

      double dmp = 0;
      double dmm = 0;
      for (i

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

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

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

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

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

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

Стоимость полного кода
167,30₽ ≈ $2.04