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

Rsiv

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

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

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

О программе

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

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

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

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

НастройкаОписание
RsivPeriod Период RSIV — Период расчёта RSIV-осциллятора
LinearRegressionPeriod Период линейной регрессии — Период линейной регрессии, используемой при расчёте импульса
Price Тип цены — Тип цены, используемой в расчётах (например, PRICE_CLOSE)
DzLookBackBars Количество баров для динамических зон — Количество баров для расчёта динамических зон вероятности
DzStartBuyProbability Начальная вероятность покупки — Начальная вероятность для расчёта верхней (покупательской) динамической зоны
DzStartSellProbability Начальная вероятность продажи — Начальная вероятность для расчёта нижней (продажной) динамической зоны
Smooth Длина сглаживания — Длина сглаживания RSIV-значения
SmoothPhase Фаза сглаживания — Фазовый параметр алгоритма сглаживания
SmoothDouble Двойное сглаживание — Включает или отключает двойное сглаживание RSIV
Получить полный код

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

#property indicator_separate_window
#property indicator_buffers 4
#property indicator_color1  PaleVioletRed
#property indicator_color2  DeepSkyBlue
#property indicator_color3  DimGray
#property indicator_color4  DeepSkyBlue
#property indicator_width4  2
#property indicator_style3  STYLE_DOT

#import "dynamicZone.dll"
   double dzBuyP(double& sourceArray[],double probabiltyValue, int lookBack, int bars, int i, double precision );
   double dzSellP(double& sourceArray[],double probabiltyValue, int lookBack, int bars, int i, double precision );
#import

extern int    RsivPeriod             = 30;
extern int    LinearRegressionPeriod = 40;
extern int    Price                  = PRICE_CLOSE;
extern int    DzLookBackBars         = 35;
extern double DzStartBuyProbability  = 0.16;
extern double DzStartSellProbability = 0.16;
extern double Smooth                 = 5;
extern double SmoothPhase            = 0;
extern bool   SmoothDouble           = true;

double bufferUp[];
double bufferDn[];
double bufferMi[];
double rsiv[];

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

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

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]-work[r-1][_diff];
            }
            if (work[r][_diff]<work[r-1][_diff])
            {
               work[r][_dnScore] = 1; 
               work[r][_dnDiff]  = work[r-1][_diff]-work[r][_diff];
            }

         double pos     = 0; 
         double neg     = 0;         
         double posDiff = 0;
         double negDiff = 0;
         for (int k=0; k<RsivPeriod && (r-k)>=0; k++)
         {
            pos += work[r-k][_upScore]; posDiff += work[r-k][_upDiff];
            neg += work[r-k][_dnScore]; negDiff += work[r-k][_dnDiff];
         }

      rsiv[i] = iDSmooth(100-(100.0/(1.0+(pos*posDiff/(ne

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

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

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

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

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

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

Стоимость полного кода
438₽ ≈ $5.35