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

RSI-TL

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

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

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

О программе

RSI-TL — это пользовательский индикатор для MetaTrader 4, рассчитывающий значение Relative Strength Index (RSI) и автоматически строящий трендовые линии на основе пиков и впадин индикатора. Расчёт RSI выполняется с использованием метода начального накопления и последующего сглаженного скользящего среднего. Дополнительные буферы (PosBuffer и NegBuffer) используются для промежуточного подсчёта положительных и отрицательных изменений цен.

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

НастройкаОписание
RSIPeriod Период RSI — Период расчёта индикатора RSI — целочисленный параметр, задающий количество баров, используемых для вычисления значений RSI.
1 or 2 (TL_bars) Бары для трендовой линии — Количество баров для подтверждения трендовой точки (1 или 2). Определяет, сколько соседних баров проверяется для выявления пиков и впадин индикатора при построении трендовых линий.
Получить полный код

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

#property indicator_separate_window
#property indicator_minimum 0
#property indicator_maximum 100
#property indicator_buffers 1
#property indicator_color1 DodgerBlue

extern int RSIPeriod=14;
extern int TL_bars=2;  // 1 or 2

double RSIBuffer[];
double PosBuffer[];
double NegBuffer[];

string short_name;

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

int deinit()
{
   ObjectDelete("RSI-TL_S"+DoubleToStr(TL_bars,0));
   ObjectDelete("RSI-TL_R"+DoubleToStr(TL_bars,0));
}

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-1)+sump)/RSIPeriod;
         negative=(NegBuffer[i+1]*(RSIPeriod-1)+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);
      i--;
     }

   int h1=0, h2=0, l1=0, l2=0;

   for(i=TL_bars+1;i<Bars;i++)
   {
      if (h1==0)
      {
         if (TL_bars==1)
         {
            if ((RSIBuffer[i-1]<RSIBuffer[i]) && (RSIBuffer[i+1]<RSIBuffer[i])) { h1=i; }
         }
         if (TL_bars==2)
         {
            if ( (RSIBuffer[i-1]<RSIBuffer[i]) && (RSIBuffer[i+1]<RSIBuffer[i]) && (RSIBuffer[i-2]<RSIBuffer[i]) && (RSIBuffer[i+2]<RSIBuff

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

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

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

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

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

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

Стоимость полного кода
341,10₽ ≈ $4.17