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

RSI_2SigMA

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

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

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

О программе

Индикатор RSI_2SigMA рассчитывает сглаженный RSI-показатель на основе собственной функции двойного экспоненциального сглаживания, а затем применяет к нему две скользящие средние с настраиваемыми периодами и методами. Разница между двумя скользящими средними используется для определения направления тренда и его изменения, что визуализируется четырьмя гистограммами разного цвета.

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

Индикатор отрисовывает 8 буферов в отдельном окне: четыре гистограммы (зелёная, пурпурная, серая и синяя) отражают комбинацию направления тренда и его ускорения, а также линия разницы между скользящими средними. Уровни 20 и -20 заданы как визуальные ориентиры.

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

НастройкаОписание
TimeFrame Таймфрейм, с которого берутся данные для расчёта индикатора. Можно задать строковое обозначение (M1, M5, H1, D1 и т.д.) или «Current time frame» для текущего графика. Также поддерживаются режимы «returnBars» и «calculateValue».
RSI_Period Период сглаживания, используемый при расчёте сглаженного RSI-показателя. По умолчанию 14.
RSI_Price Тип цены (индекс), используемый в качестве исходных данных для расчёта RSI. По умолчанию 0 (Close).
MA1_Period Период первой скользящей средней, применяемой к сглаженному RSI. По умолчанию 3.
MA1_Mode Метод расчёта первой скользящей средней (0 — SMA, 1 — EMA, 2 — SMMA, 3 — LWMA). По умолчанию EMA.
MA2_Period Период второй скользящей средней. По умолчанию 5.
MA2_Mode Метод расчёта второй скользящей средней, применяемой к первой скользящей средней. (0 — SMA, 1 — EMA, 2 — SMMA, 3 — LWMA). По умолчанию EMA.
MA_Method_Price Строковая таблица соответствия кодов ценовых типов для расчёта скользящих средних: 0 — Close, 1 — Open, 2 — High, 3 — Low, 4 — Median, 5 — Typical, 6 — Weighted Close.
Получить полный код

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

#property indicator_separate_window

#property indicator_buffers 8
#property indicator_color1  LimeGreen
#property indicator_color2  LimeGreen
#property indicator_color3  PaleVioletRed
#property indicator_color4  PaleVioletRed
#property indicator_color5  DimGray
#property indicator_color6  RoyalBlue
#property indicator_color7  Green
#property indicator_color8  Red
#property indicator_width1  2
#property indicator_width3  2
#property indicator_width6  3
#property indicator_width7  2
#property indicator_width8  2
#property indicator_level1  20
#property indicator_level2   0
#property indicator_level3 -20
#property indicator_levelcolor DarkOliveGreen

extern string TimeFrame   = "Current time frame";
extern int    RSI_Period  = 14;
extern int    RSI_Price   =  0;
extern int    MA1_Period  =  3;
extern int    MA1_Mode    =  1;
extern int    MA2_Period  =  5;
extern int    MA2_Mode    =  1;
extern string TimeFrames="M1;5,15,30,60H1;240H4;1440D1;10080W1;43200MN|0-CurrentTF";
extern string MA_Method_Price="SMA0 EMA1 SMMA2 LWMA3||0C,1O 2H3L,4Md 5Tp 6WghC: Md(HL/2)4,Tp(HLC/3)5,Wgh(HLCC/4)6";

double RSI_Buffer[];
double MA1_Buffer[];
double MA2_Buffer[];
double hiUu[];
double hiUd[];
double hiDd[];
double hiDu[];
double hiLi[];

string indicatorFileName;
bool   returnBars;
bool   calculateValue;
int    timeFrame;

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

double work[][2];
#define _trend 0
#define _slope 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 (returnBars) { hiUu[0] = MathMin(limit+1,Bars-1); return(0); }
           if (ArrayRange(work,0)!=Bars) ArrayResize(work,Bars);

   if (calculateValue || timeFrame == Period())
   {
      for(i=limit; i>=0; i--)
      {
         double mom  = iMA(NULL,0,1,0,MODE_SMA,RSI_Price,i)-iMA(NULL,0,1,0,MODE_SMA,RSI_Price,i+1);
         double moa  = MathAbs(mom);
         double tmom = iSmooth(mom,RSI_Period,1,i,0);
         double tmoa = iSmooth(moa,RSI_Period,1,i,1);
         if (tmoa != 0)
              RSI_Buffer[i] = MathMax(MathMin((tmom/tmoa+1.0)*50.0,100.00),0.00)-50; 
         else RSI_Buffer[i] = 0;
      }
      for(i=limit;           i>=0;i--)      MA1_Buffer[i] = iMAOnArray(RSI_Buffer,0,MA1_Period,0,MA1_Mode,i);
      for(i=limit,r=Bars-i-1;i>=0;i--,r++){ MA2_Buffer[i] = iMAOnArray(MA1_Buffer,0,MA2_Period,0,MA2_Mode,i);
         hiLi[i] = MA1_Buffer[i]-MA2_Buffer[i];
         hiUu[i] = EMPTY_VALUE;
         hiUd[i] = EMPTY_VALUE;
         hiDd[i] = EMPTY_VALUE;
         hiDu[i] = EMPTY_VALUE;
            work[r][_trend] = work[r-1][_trend];
            work[r][_slope] = work[r-1][_slope];
               if (hiLi[i]>0)         work[r][_trend] =  1;
               if (hiLi[i]<0)         work[r][_trend] = -1;
               if (hiLi[i]>hiLi[i+1]) work[r][_slope] =  1;
               if (hiLi[i]<hiLi[i+1]) work[r][_slope] = -1;
               if (work[r][_trend]==1)
                  if (work[r][_slope]==1) 
                        

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

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

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

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

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

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

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