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

Rsiv

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

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

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

О программе

Rsiv — это пользовательский индикатор для MetaTrader 5, отображаемый в отдельном окне с тремя буферами данных. Он рассчитывает соотношение набранных очков роста и падения цены за заданный период RsivPeriod и преобразует его в процентный индикатор, аналогичный RSI, но с иной формулой нормализации.

Индикатор использует линейную регрессию (LinearRegressionPeriod) для оценки тренда и волатильность на основе ATR и EMA (VolatilityPeriod) для построения динамических уровней верхней и нижней границ. Базовые уровни задаются параметрами BasicLevelUp и BasicLevelDown.

Результат расчёта выводится в три линии: основная линия Rsiv (bufferMi), верхний уровень (bufferUp) и нижний уровень (bufferDn). Все вычисления выполняются на каждом тике в функции start().

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

НастройкаОписание
RsivPeriod Период Rsiv — Период усреднения для расчёта соотношения очков роста и падения в основном индикаторе.
LinearRegressionPeriod Период линейной регрессии — Период расчёта линейной регрессии, используемой для оценки склона цены.
VolatilityPeriod Период волатильности — Период расчёта волатильности на основе ATR и EMA для формирования динамических уровней.
Price Тип цены — Тип цены, используемый в расчётах индикатора (например, PRICE_CLOSE).
BasicLevelUp Верхний базовый уровень — Верхний базовый уровень для отображения динамической верхней границы индикатора.
BasicLevelDown Нижний базовый уровень — Нижний базовый уровень для отображения динамической нижней границы индикатора.
Получить полный код

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

#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1  DeepSkyBlue
#property indicator_color2  PaleVioletRed
#property indicator_color3  DeepSkyBlue
#property indicator_width3  2
#property indicator_style1  STYLE_DOT
#property indicator_style2  STYLE_DOT

extern int    RsivPeriod             = 30;
extern int    LinearRegressionPeriod = 40;
extern int    VolatilityPeriod       = 7;
extern int    Price                  = PRICE_CLOSE;
extern double BasicLevelUp           = 70;
extern double BasicLevelDown         = 30;

double bufferUp[];
double bufferDn[];
double bufferMi[];
double prices[];

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

double work[][7];
#define _diff    0
#define _upScore 1
#define _upDiff  2
#define _dnScore 3
#define _dnDiff  4
#define _lrValue 5
#define _levelMo 6

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

   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
           limit=MathMin(Bars-counted_bars,Bars-1);
           if (ArrayRange(work,0)!=Bars) ArrayResize(work,Bars);

   for(i=limit, r=Bars-i-1; i>=0; i--, r++)
   {
      double price = iMA(NULL,0,1,0,MODE_SMA,Price,i);
         work[r][_lrValue] = 3.0*iMA(NULL,0,LinearRegressionPeriod,0,MODE_LWMA,Price,i)-2.0*iMA(NULL,0,LinearRegressionPeriod,0,MODE_SMA,Price,i);
         work[r][_diff]    = price - work[r][_lrValue];

         work[r][_upScore] = 0;
         work[r][_upDiff]  = 0;
         work[r][_dnScore] = 0;
         work[r][_dnDiff]  = 0;
            if (work[r][_diff]>work[r-1][_diff])
            {
               work[r][_upScore] = 1; 
               work[r][_upDiff]  = work[r][_diff]

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

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

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

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

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

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

Стоимость полного кода
277,20₽ ≈ $3.39