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

forex_rsi_signal.mq5

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

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

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

О программе

Индикатор для MetaTrader 5, отображающий в отдельном окне осциллятор, рассчитанный на основе разницы двух экспоненциальных скользящих средних (EMA) и их сглаженной сигнальной линии. По сути, это RSI-подобный индикатор, построенный не на ценовых данных, а на разности MACD-линии и сигнальной линии. Диапазон значений от 0 до 100 с уровнями 30 и 70.

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

Настройки позволяют задать периоды EMA и сигнальной SMA, метод сглаживания, период расчёта RSI, а также управлять видимостью и цветами стрелок. Индикатор использует стандартные функции MQL5 для работы с буферами и графическими объектами.

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

НастройкаОписание
FastEMA Период быстрой экспоненциальной скользящей средней, используемой для расчёта основной линии осциллятора. По умолчанию 12.
SlowEMA Период медленной экспоненциальной скользящей средней, используемой для расчёта основной линии осциллятора. По умолчанию 24.
MODE_MA Метод сглаживания для расчёта скользящих средних. По умолчанию 3 (MODE_EMA).
SignalSMA Период простой скользящей средней (SMA), применяемой для сглаживания основной линии осциллятора. По умолчанию 10.
RSIPeriod Период расчёта RSI-подобного значения на основе разницы между основной и сигнальной линиями. По умолчанию 7.
ShowArrowsForRsiLevel50 Включает отображение стрелок при смене направления основного значения при пересечении уровня 50. По умолчанию отключено (false).
ShowArrowsForRsiSlope Включает отображение стрелок при изменении наклона осциллятора. По умолчанию включено (true).
arrowsUpColor1 Цвет стрелок вверх первого типа (при пересечении уровня 50). По умолчанию бирюзовый.
arrowsDnColor1 Цвет стрелок вниз первого типа (при пересечении уровня 50). По умолчанию жёлтый.
arrowsUpColor2 Цвет стрелок вверх второго типа (при изменении наклона). По умолчанию зелёный.
arrowsDnColor2 Цвет стрелок вниз второго типа (при изменении наклона). По умолчанию красный.
Получить полный код

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

#property  indicator_separate_window
#property indicator_minimum 0
#property indicator_maximum 100
#property indicator_level1 30
#property indicator_level3 70

#property  indicator_buffers 1
#property  indicator_color1 White
#property  indicator_width1  1

#property indicator_levelcolor Aqua
#property indicator_levelstyle STYLE_SOLID

extern int FastEMA=12;
extern int SlowEMA=24;
extern int MODE_MA =3;
extern int SignalSMA=10;
extern int RSIPeriod=7;
extern bool   ShowArrowsForRsiLevel50   = false;
extern bool   ShowArrowsForRsiSlope     = true;
string arrowsIdentifier          = "RsiArrows1";
extern color  arrowsUpColor1            = Aqua;
extern color  arrowsDnColor1            = Yellow;
extern color  arrowsUpColor2            = Lime;
extern color  arrowsDnColor2            = Red;

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

double     MacdBuffer[];
double     SignalBuffer[];
double trend1[];
double trend2[];

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

   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;

   for(int i=0; i<limit; i++)
      MacdBuffer[i]=iMA(NULL,0,FastEMA,0,MODE_MA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_MA,PRICE_CLOSE,i);

   for(i=0; i<limit; i++)
      SignalBuffer[i]=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i);
   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=(MacdBuffer[k]-SignalBuffer[k])-(MacdBuffer[k+1]-SignalBuffer[k+1]);
            if(rel>0) sump+=rel;
            else      sumn-=rel;
            k--;
           }
         positive=sump/RSIPeriod;
         negative=sumn/RSIPeriod;
        }
      else
      

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

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

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

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

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

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

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