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

RSI slope divergence

dynamic_double_zone_smooth_rsi_slope_divergence.mq5

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

ares_indicator.pineTradingView · 1 общих теговgold_trend_revers.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!!-mt4 x-xardg-rsi.mq5MQL5 / MetaTrader 5 · 1 общих тегов! cycle-identifier.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!! rsi ma simple+arrows 1.2 (mtf).mq5MQL5 / MetaTrader 5 · 1 общих теговprecisionflowea.mq5MQL5 / MetaTrader 5 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

Данный индикатор работает в отдельном окне MetaTrader 4 и рассчитывает сглаженную версию RSI с поддержкой нескольких вариантов расчёта (стандартный RSI, Wilder RSI, RSX, Cuttler RSI). К значениям RSI применяется собственный алгоритм двойного сглаживания, а также строится экспоненциальная скользящая средняя от сглаженного RSI.

Индикатор интегрирует анализ динамических зон через внешнюю библиотеку dynamicZone.dll, вычисляя зоны покупательской и продавательской вероятности на основе настраиваемых порогов и глубины анализа. Дополнительно рассчитывается линия медианной вероятности.

Также выполняется линейная регрессия для сглаженного RSI и опорной цены (SMA), по результатам которой рисуются трендовые линии и каналы с доверительными полосами в виде графических объектов на графике. Параметры позволяют настраивать периоды, цвета, стили линий и ширину канала регрессии.

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

НастройкаОписание
RsiPeriod Период расчёта RSI — Период расчёта RSI
RsiPrice Тип цены для расчёта RSI — Тип цены для расчёта RSI
_rsimethods Справочник методов RSI — Справочник методов RSI: 0=rsi, 1=wilder rsi, 2=rsx, 3=cuttler rsi
RsiMethod Метод расчёта RSI — Метод расчёта RSI (0=RSI, 1=Wilder RSI, 2=RSX, 3=Cuttler RSI)
SmoothLength Длина сглаживания — Длина сглаживания
SmoothPhase Фаза сглаживания — Фаза сглаживания
SmoothDouble Переключатель двойного сглаживания — Переключатель двойного сглаживания
MaPeriod Период скользящей средней от RSI — Период скользящей средней от RSI
MaType Тип скользящей средней от RSI — Тип скользящей средней от RSI
DzLookBackBars Количество баров для анализа динамических зон — Количество баров для анализа динамических зон
DzStartBuyProbability1 Порог вероятности покупки для первой зоны покупки — Порог вероятности покупки для первой зоны покупки
DzStartBuyProbability2 Порог вероятности покупки для второй зоны покупки — Порог вероятности покупки для второй зоны покупки
DzStartSellProbability1 Порог вероятности продажи для первой зоны продажи — Порог вероятности продажи для первой зоны продажи
DzStartSellProbability2 Порог вероятности продажи для второй зоны продажи — Порог вероятности продажи для второй зоны продажи
LinearRegressionLength Длина периода линейной регрессии — Длина периода линейной регрессии
LinearRegressionChannelWidth Множитель ширины канала линейной регрессии — Множитель ширины канала линейной регрессии
IndicatorUniqueID Уникальный идентификатор индикатора — Уникальный идентификатор индикатора для именования графических объектов
ChartLineColor Цвет линии регрессии цены — Цвет линии регрессии цены
ChartLineMiddleStyle Стиль средней линии тренда цены — Стиль средней линии тренда цены
ChartLineStyle Стиль линии тренда цены — Стиль линии тренда цены
RsiLineColor Цвет линии RSI — Цвет линии RSI
RsiLineMiddleStyle Стиль средней линии RSI — Стиль средней линии RSI
RsiLineStyle Стиль линии RSI — Стиль линии RSI
Получить полный код

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

#property indicator_separate_window
#property indicator_buffers 7
#property indicator_color1  LimeGreen
#property indicator_color2  Red
#property indicator_color3  DeepSkyBlue
#property indicator_color4  DeepSkyBlue
#property indicator_color5  PaleVioletRed
#property indicator_color6  PaleVioletRed
#property indicator_color7  DarkSlateGray
#property indicator_style4  STYLE_DOT
#property indicator_style5  STYLE_DOT
#property indicator_style7  STYLE_DASH
#property indicator_width1  2
#property indicator_style2  STYLE_DASH

#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    RsiPeriod                    = 2;
extern int    RsiPrice                     = PRICE_CLOSE;
extern string _rsimethods                  = "0=rsi,1=wilder rsi,2=rsx,3=cuttler rsi ";
extern int    RsiMethod                    = 0;
extern double SmoothLength                 = 9;
extern double SmoothPhase                  = 0;
extern bool   SmoothDouble                 = false; 
extern int    MaPeriod                     = 7;
extern int    MaType                       = MODE_LWMA;
extern int    DzLookBackBars               = 70;
extern double DzStartBuyProbability1       = 0.025;
extern double DzStartBuyProbability2       = 0.15;
extern double DzStartSellProbability1      = 0.025;
extern double DzStartSellProbability2      = 0.15;
extern int    LinearRegressionLength       = 50;
extern double LinearRegressionChannelWidth = 2.0;
extern string IndicatorUniqueID            = "RSI slope divergence";
extern color  ChartLineColor               = DarkGray;
extern int    ChartLineMiddleStyle         = STYLE_DOT;
extern int    ChartLineStyle               = STYLE_SOLID;
extern color  RsiLineColor                 = Gold;
extern int    RsiLineMiddleStyle           = STYLE_DOT;
extern int    RsiLineStyle                 = STYLE_SOLID;

double rsi[];
double ema[];
double bl1[];
double bl2[];
double sl2[];
double sl1[];
double zli[];
string shortName;

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

int deinit()
{
   for (int i=ObjectsTotal(); i>=0; i--)
   {
      string name = ObjectName(i); if (StringFind(name,IndicatorUniqueID)==0) ObjectDelete(name);
   }
   return(0);
}

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

void createLine(int window, double price1, double price2, string addName, color theColor, int theStyle, int theMiddleStyle, double error)
{
   string name = IndicatorUniqueID+addName;
      if (ObjectFind(name)==-1)
           ObjectCreate(name,OBJ_TREND,window,0,0,0,0);
              ObjectSet(name,OBJPROP_PRICE1,price1);
              ObjectSet(name,OBJPROP_PRICE2,price2);
              ObjectSet(name,OBJPROP_TIME1,Time[0]);
              ObjectSet(name,OBJPROP_TIME2,Time[LinearRegressionLength-1]);
              ObjectSet(name,OBJPROP_RAY,false);
              ObjectSet(name,OBJPROP_COLOR,theColor);
              ObjectSet(name,OBJPROP_STYLE,theMiddleStyle);
                  if (error<=0) return;
      name = IndicatorUniqueID+addName+"up";
      if (ObjectFind(name)==-1)
           ObjectCreate(name,OBJ_TREND,window,0,0,0,0);
              ObjectSet(name,OBJPROP_PRICE1,price1+error);
              ObjectSet(name,OBJPROP_PRICE2,price2+error);
              ObjectSet(name,OBJPROP_TIME1,Time[0]);
              ObjectSet(name,OBJPROP_TIME2,Time[LinearRegressionLength-1]);
              ObjectSet(name,OBJPROP_RAY,false);
              ObjectSet(name,OBJPROP_COLOR,theColor);
              ObjectSet(name,OBJPROP_STYLE,theStyle);
      name = IndicatorUniqueID+addName+"down";
      if (ObjectFind(name)==-1)
           ObjectCreate(name,OBJ_TREND,window,0,0,0,0);
              ObjectSet(name,OBJPROP_PRICE1,price1-error);
              ObjectSet(name,OBJPROP_PRICE2,price2-error);
              ObjectSet(name,OBJPROP_TIME1,Time[0]);
              ObjectSet(name,OBJPROP_TIME2,Time[LinearRegressionLength-1]);
              ObjectSet(name,OBJPROP_RAY,false);
              ObjectSet(name,OBJPROP_COLOR,theColor);
              ObjectSet(name,OBJPROP_STYLE,theStyle);
}

double workLr[][2];
void fillLrArray(int i, int instanceNo, double value)
{
   if (ArrayRange(workLr,0)!=Bars) ArrayResize(workLr,Bars); i = Bars-i-1; workLr[i][instanceNo] = value;
}
double iLrValue(double value, int period, double& slope, double& error, int r, int instanceNo=0)
{
   if (ArrayRange(workLr,0)!=Bars) ArrayResize(workLr,Bars); r = Bars-r-1; workLr[r][instanceNo] = value;
   if (r<period || period<2) return(value);

      double sumx=0, sumxx=0, sumxy=0, sumy=0, sumyy=0;
         for (int k=0; k<period; k++)
         {
            double price = work

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

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

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

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

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

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

Стоимость полного кода
1 044₽ ≈ $12.76