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

d_rsi.mq5

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

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

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

О программе

Индикатор рассчитывает и отображает индикатор относительной силы (RSI) в отдельном окне графика MetaTrader 4. Значения индикатора ограничены диапазоном от 0 до 100 и отрисовываются в виде линии. На уровне 30 и 70 проведены горизонтальные уровни для визуальной оценки перекупленности и перепроданности.

Параметр RSIPeriod задаёт период расчёта индикатора. Индикатор использует внутренние буферы для накопления данных и сглаживания результатов перед отрисовкой. Обработка выполняется для каждого видимого бара при обновлении графика.

Индикатор предназначен для аналитических целей и не выполняет торговых действий.

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

НастройкаОписание
RSIPeriod Период RSI — Целочисленный период расчёта индикатора относительной силы
Получить полный код

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

#property indicator_separate_window
#property indicator_minimum 0
#property indicator_maximum 100
#property indicator_buffers 1
#property indicator_color1 Blue
#property indicator_level1 30
#property indicator_level2 70

extern int RSIPeriod=11;

double RSIBuffer[];

double PosBuffer[];
double NegBuffer[];

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

int start()
  {
      // код доступен только после оплаты
   }
   int    i,counted_bars=IndicatorCounted();
   double rel,negative,positive;

   if(Bars<=RSIPeriod) return(0);

   if(counted_bars<1)
      for(i=1;i<=RSIPeriod;i++) RSIBuffer[Bars-i]=0.0;

   i=Bars-RSIPeriod-1;
   if(counted_bars>=RSIPeriod) i=Bars-counted_bars-1;
   while(i>=0)
     {
      double sumn=0.0,sump=0.0;
      if(i==Bars-RSIPeriod-1)
        {
         int k=Bars-2;

         while(k>=i)
           {
            rel=Close[k]-Close[k+1];
            if(rel>0) sump+=rel;
            else      sumn-=rel;
            k--;
           }
         positive=sump/RSIPeriod;
         negative=sumn/RSIPeriod;
        }
      else
        {

         rel=Close[i]-Close[i+1];
         if(rel>0) sump=rel;
         else      sumn=-rel;
         positive=(PosBuffer[i+1]*(RSIPeriod-2)+sump)/RSIPeriod;
         negative=(NegBuffer[i+1]*(RSIPeriod-2)+sumn)/RSIPeriod;

        }
      PosBuffer[i]=positive;
      NegBuffer[i]=negative;

 if(negative==0.0) RSIBuffer[i]=0.0;
 else RSIBuffer[i]=100.0-100.0/(1+positive/negative);

RSIBuffer[i] =   
 0.433154403793*RSIBuffer[i+0]
 +0.364936248838*RSIBuffer[i+1]
 +0.2483161287091*RSIBuffer[i+2]
 +0.1159127094262*RSIBuffer[i+3]
 +0.001920177025782*RSIBuffer[i+4]
 -0.0690619159350*RSIBuffer[i+5]
 -0.0890366343384*RSIBuffer[i+6]
 -0.0670352313955*RSIBuffer[i+7]
 -0.02354570920082*RSIBuffer[i+8]
 +0.01860246173456*RSIBuffer[i+9]
 +0.0426761569010*RSIBuffer[i+10]
 +0.0429876844454*RSIBuffer[i+11]
 +0.02477765082083*RSIBuffer[i+12]
 -0.0001576627378414*RSIBuffer[i+13]
 -0.01967662445848*RSIBuffer[i+14]
 -0.02646547548004*RSIBuffer[i+15]
 -0.02024560032283*RSIBuffer[i+16]
 -0.00623702818584*RSIBuffer[i+17]
 +0.00780018663194*RSIBuffer[i+18]
 +0.01584087110996*RSIBuffer[i+19]
 +0.01529850741755*RSIBuffer[i+20]
 +0.00776771039355*RSIBuffer[i+21]
 -0.002822554123202*RSIBuffer[i+22

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

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

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

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

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

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

Стоимость полного кода
441,70₽ ≈ $5.40