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

smoothed rsi.mq5

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

!!!-mt4 x-xardg-rsi.mq5MQL5 / MetaTrader 5 · 2 общих тегов!!! rsi ma simple+arrows 1.2 (mtf).mq5MQL5 / MetaTrader 5 · 2 общих теговea robofibo source v.11.2.mq4MQL4 / MetaTrader 4 · 2 общих теговsureforexhedingvonepointoneone.mq4MQL4 / MetaTrader 4 · 2 общих теговsureforexhedging 1.10 optimized.mq4MQL4 / MetaTrader 4 · 2 общих теговsureforexhedging 1.09 a (2).mq4MQL4 / MetaTrader 4 · 2 общих тегов
Вы автор или правообладатель?

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

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

О программе

Данный индикатор рассчитывает значение RSI (индекс относительной силы) с возможностью дополнительного сглаживания. Он отображает результат в отдельном окне графика MetaTrader 5 и поддерживает настройку периода расчёта, типа цены и таймфрейма.

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

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

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

НастройкаОписание
TimeFrame Временной интервал (таймфрейм), на котором рассчитывается индикатор. Можно задать текстовое название (например, M15, H1, D1) или специальное значение Current time frame для текущего графика.
Length Период расчёта RSI — количество баров, используемых для вычисления индекса. Минимальное значение равно 1.
Price Тип цены для расчёта RSI: Close (закрытие), Open (открытие), High (максимум), Low (минимум), Median (медиана), Typical (типичная цена) или Weighted (взвешенная цена).
LevelUp Верхний уровень RSI. При пересечении этого уровня определяется направление тренда и формируются соответствующие цветовые сегменты.
LevelDown Нижний уровень RSI. При пересечении этого уровня определяется направление тренда и формируются соответствующие цветовые сегменты.
Smooth Включает сглаживание расчётной линии RSI с использованием взвешенной скользящей средней, что делает индикатор менее чувствительным к краткосрочным колебаниям.
Interpolate Включает интерполяцию значений RSI при работе на старшем таймфрейме для более плавного отображения линии между барами.
alertsOn Главный переключатель системы уведомлений. При отключении все оповещения подавляются независимо от остальных настроек.
alertsOnZoneEnter Разрешает отправку уведомления при входе RSI в зону — пересечении верхнего уровня вверх или нижнего уровня вниз.
alertsOnZoneExit Разрешает отправку уведомления при выходе RSI из зоны — пересечении нижнего уровня вверх или верхнего уровня вниз.
alertsOnCurrent Определяет, на каком баре проверять условие: на текущем баре (true) или на предыдущем (false).
alertsMessage Разрешает отправку текстового уведомления (Alert) на графике при срабатывании условий пересечения уровней.
alertsSound Разрешает воспроизведение звукового сигнала при срабатывании условий пересечения уровней.
alertsEmail Разрешает отправку email-уведомления при срабатывании условий пересечения уровней.
Получить полный код

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

#property indicator_separate_window
#property indicator_buffers  5
#property indicator_color1   DimGray
#property indicator_color2   DeepSkyBlue
#property indicator_color3   DeepSkyBlue
#property indicator_color4   PaleVioletRed
#property indicator_color5   PaleVioletRed
#property indicator_width2   3
#property indicator_width3   3
#property indicator_width4   3
#property indicator_width5   3
#property indicator_minimum  0
#property indicator_maximum  100

extern string TimeFrame         = "Current time frame";
extern int    Length            = 14;
extern int    Price             = PRICE_CLOSE;
extern double LevelUp           = 70;
extern double LevelDown         = 30;
extern bool   Smooth            = true;
extern bool   Interpolate       = true;
extern bool   alertsOn          = false;
extern bool   alertsOnZoneEnter = true;
extern bool   alertsOnZoneExit  = true;
extern bool   alertsOnCurrent   = true;
extern bool   alertsMessage     = true;
extern bool   alertsSound       = false;
extern bool   alertsEmail       = false;

double rsi[];
double rsiUa[];
double rsiUb[];
double rsiDa[];
double rsiDb[];
double prc[];
double trend[];

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

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

int start()
{
      // код доступен только после оплаты
   }
   int counted_bars=IndicatorCounted();
   int i,k,n,limit;

   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
         limit = MathMin(Bars-counted_bars,Bars-1);
         if (returnBars) { rsi[0] = MathMin(limit+1,Bars-1); return(0); }

   if (calculateValue || timeFrame == Period())
   {
      if (!calculateValue && trend[limit]== 1) CleanPoint(limit,rsiUa,rsiUb);
      if (!calculateValue && trend[limit]==-1) CleanPoint(limit,rsiDa,rsiDb);
      for(i=limit; i >= 0; i--)
      {
         if (Smooth)
               prc[i] = (iMA(NULL,0,1,0,MODE_SMA,Price,i)+2.0*iMA(NULL,0,1,0,MODE_SMA,Price,i+1)+iMA(NULL,0,1,0,MODE_SMA,Price,i+2))/4.0;
         else  prc[i] =  iMA(NULL,0,1,0,MODE_SMA,Price,i);
         if (i>=Bars-Length) continue;

         double cu = 0;
         double cd = 0;
         for (k=0; k<Length; k++)
            {
               double diff = prc[i+k]-prc[i+k+1];
                  if (diff > 0)
                        cu += diff;
                  else  cd -= diff;
            }
         if ((cu+cd)!=0)
               rsi[i] = 50.0*((cu-cd)/(cu+cd)+1.0);
         else  rsi[i] = 0;

            trend[i] = trend[i+1];
               if (rsi[i]>LevelUp)                     trend[i]= 1;
               if (rsi[i]<LevelDown)                   trend[i]=-1;
               if (rsi[i]<LevelUp && rsi[i]>LevelDown) trend[i]= 0;
               if (!calculateValue && trend[i] ==  1) PlotPoint(i,rsiUa,rsiUb,rsi);
               if (!calculateValue && trend[i] == -1) PlotPoint(i,rsiDa,rsiDb,rsi);
      }
      manageAlerts();
      return(0);
   }  

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

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

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

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

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

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

Стоимость полного кода
613,50₽ ≈ $7.50