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

rsi_t3_slope_mtf_nmc.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, в котором изменения цены предварительно сглаживаются алгоритмом T3. Результат нормализуется в диапазон от -50 до +50 и представлен на отдельном графике в виде нескольких гистограмм и линии.

Индикатор разделяет отображение по знаку значения RSI и направлению наклона: положительные и отрицательные значения с ростом или падением отрисовываются разными цветами. Дополнительно выводится линия текущего значения RSI. Горизонтальные уровни задаются параметрами LevelUp и LevelDown.

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

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

НастройкаОписание
TimeFrame TimeFrame — Таймфрейм, на котором выполняется расчёт индикатора
RsiPeriod RsiPeriod — Период расчёта RSI
RsiPrice RsiPrice — Тип цены, используемой для расчёта RSI (например, PRICE_CLOSE)
Hot Hot — Коэффициент сглаживания алгоритма T3, влияющий на скорость реакции расчёта
OriginalT3 OriginalT3 — Переключатель между стандартной и оригинальной формулой расчёта коэффициентов T3
LevelUp LevelUp — Верхний горизонтальный уровень на графике индикатора
LevelDown LevelDown — Нижний горизонтальный уровень на графике индикатора
Interpolate Interpolate — Включает или отключает интерполяцию значений между барами при многотаймфрейтном режиме
Получить полный код

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

#property indicator_separate_window
#property indicator_buffers 5
#property indicator_color1  LimeGreen
#property indicator_color2  LimeGreen
#property indicator_color3  PaleVioletRed
#property indicator_color4  PaleVioletRed
#property indicator_color5  DarkGray
#property indicator_width1  2
#property indicator_width3  2
#property indicator_width5  2
#property indicator_minimum -50
#property indicator_maximum +50
#property indicator_levelcolor DarkGray

extern string TimeFrame   = "Current time frame";
extern double RsiPeriod   = 25;
extern int    RsiPrice    = PRICE_CLOSE;
extern double Hot         = 0.7;
extern bool   OriginalT3  = false;
extern double LevelUp     =  30;
extern double LevelDown   = -30;
extern bool   Interpolate = true;

double rsi[];
double rsihuu[];
double rsihud[];
double rsihdu[];
double rsihdd[];
double slope[];

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

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

int start()
{
      // код доступен только после оплаты
   }
   int 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) { rsihuu[0] = limit+1; return(0); }

   if (calculateValue || timeFrame == Period())
   {
      for(int i = limit; i >= 0; i--)
      {
         rsi[i] = iRsi(iMA(NULL,0,1,0,MODE_SMA,RsiPrice,i),RsiPeriod,Hot,OriginalT3,i);
         rsihuu[i] = EMPTY_VALUE;
         rsihud[i] = EMPTY_VALUE;
         rsihdd[i] = EMPTY_VALUE;
         rsihdu[i] = EMPTY_VALUE;

         slope[i] = slope[i+1];
            if (rsi[i] > rsi[i+1]) slope[i] =  1;
            if (rsi[i] < rsi[i+1]) slope[i] = -1;
            if (rsi[i]>0)
            if (slope[i]==1)
                  rsihuu[i] = rsi[i];
            else  rsihud[i] = rsi[i];
            if (rsi[i]<0)
            if (slope[i]==1)
                  rsihdu[i] = rsi[i];
            else  rsihdd[i] = rsi[i];
      }      
      return(0);
   }

   limit = MathMax(limit,MathMin(Bars-1,iCustom(NULL,timeFrame,indicatorFileName,"returnBars",0,0)*timeFrame/Period()));
   for(i=limit; i>=0; i--)
   {
      int y = iBarShift(NULL,timeFrame,Time[i]);
         rsihuu[i] = EMPTY_VALUE;
         rsihud[i] = EMPTY_VALUE;
         rsihdd[i] = EMPTY_VALUE;
         rsihdu[i] = EMPTY_VALUE;
         rsi[i]    = iCustom(NULL,timeFrame,indicatorFileName,"calculateValue",RsiPeriod,RsiPrice,Hot,OriginalT3,4,y);
         slope[i]  = iCustom(NULL,timeFrame,indicatorFileName,"calculateValue",RsiPeriod,RsiPrice,Hot,OriginalT3,5,y);
            if (rsi[i]>0)
               if (slope[i]==1)
                     rsihuu[i] = rsi[i];
               else  rsihud[i] = rsi[i];
            if (rsi[i]<0)
               if (slope[i]==1)
                     rsihdu[i] = rsi[i];
               else  rsihdd[i] = rsi[i];

         if (!Interpolate || y==iBarShift(NULL,timeFrame,Time[i-1])) continue;

         datetime time = iTime(NULL,timeFrame,y);
            for(int n = 1; i+n < Bars && Time[i+n] >= time; n++) continue;	
            for(int k = 1; k < n; k++)
            {
               rsi[i+k] = rsi[i] + (rsi[i+n]-rsi[i])*k/n;
               if (rsihuu[i]!=EMPTY_VALUE) rsihuu[i+k]= rsi[i+k];
               if (rsihud[i]!=EMPTY_VALUE) rs

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

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

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

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

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

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

Стоимость полного кода
620,80₽ ≈ $7.59