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

rsi_t3_slope_mtf_1.01.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 общих тегов
Вы автор или правообладатель?

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

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

О программе

Индикатор отображает модифицированный RSI с T3-сглаживанием в отдельном окне графика. Значения индикатора нормализованы в диапазоне от -50 до +50 и распределены по четырём гистограммным буферам в зависимости от знака значения и направления изменения.

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

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

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

НастройкаОписание
TimeFrame TimeFrame — Временной горизонт, на котором рассчитывается индикатор
RsiPeriod RsiPeriod — Период расчёта индикатора
RsiPrice RsiPrice — Тип цены, используемый для расчёта индикатора
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 ENUM_TIMEFRAMES    TimeFrame   = PERIOD_CURRENT;
extern double             RsiPeriod   = 25;
extern ENUM_APPLIED_PRICE 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[];

string indicatorFileName;
bool   returnBars;

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 (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,-99,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,PERIOD_CURRENT,RsiPeriod,RsiPrice,Hot,OriginalT3,4,y);
         slope[i]  = iCustom(NULL,TimeFrame,indicatorFileName,PERIOD_CURRENT,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);
  

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

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

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

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

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

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

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