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

RK-Special RSI ARROW

rk special rsi arrows alerts mtf nmc.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 общих тегов
Вы автор или правообладатель?

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

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

О программе

Индикатор «RK-Special RSI ARROW» рассчитывает разницу между двумя RSI с различными периодами и сглаживает её экспоненциальным скользящим средним. На основе соотношения сглаженной линии и линии пересечения определяется направление тренда, которое отображается стрелками в отдельном окне. Поддерживается работа на множественных таймфреймах с возможностью интерполяции данных.

Индикатор предоставляет настраиваемые уведомления о смене тренда: всплывающие сообщения, звуковые сигналы и уведомления по электронной почте. Пользователь может выбрать режим срабатывания — для текущего бара или предыдущего. Два метода определения пересечения позволяют гибко настраивать логику распознавания разворота тренда.

Индикатор работает в отдельном окне графика с четырьмя буферами: основной сглаженный показатель, линия пересечения, стрелки вверх и стрелки вниз. Уровни индикатора установлены на отметках +2, -2, +4 и -4.

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

НастройкаОписание
TimeFrame Таймфрейм для анализа. Может принимать название таймфрейма (например, M1, H1, D1) или специальное значение для расчёта.
RSIPeriod1 Период первого RSI для расчёта разницы индикаторов.
RSIPeriod2 Период второго RSI для расчёта разницы индикаторов.
Cross1 Период сглаживания линии пересечения (экспоненциальное скользящее среднее).
difference Пороговое значение разницы для определения пересечения при использовании режима UseDifferenceCrosses.
UseDifferenceCrosses Переключатель режима определения тренда. При истинном значении используется пороговое пересечение с параметром difference, при ложном — сравнение линий Cross и индикатора.
alertsOn Включает или отключает все уведомления о смене тренда.
alertsOnCurrent При истинном значении уведомления срабатывают на текущем баре, при ложном — на предыдущем.
alertsMessage Включает всплывающие сообщения об изменении тренда.
alertsSound Включает звуковой сигнал при смене тренда.
alertsEmail Включает отправку электронной почты при смене тренда.
Interpolate Включает интерполяцию данных при работе на мультитаймфрейме для сглаживания отображения между барами.
Получить полный код

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

#property indicator_separate_window
#property indicator_buffers 4
#property indicator_color1  Green
#property indicator_color2  Blue
#property indicator_color3  LimeGreen
#property indicator_color4  Red
#property indicator_width1  2
#property indicator_width2  2
#property indicator_level1  2
#property indicator_level2 -2
#property indicator_level3  4  
#property indicator_level4 -4
#property indicator_level5  0
#property indicator_levelcolor Peru  

extern string TimeFrame  = "Current time frame";
extern int    RSIPeriod1 =  14;
extern int    RSIPeriod2 =  28;
extern int    Cross1     =  10;
extern double difference = 2.0;
extern bool   UseDifferenceCrosses = false;

extern string note             = "turn on Alert = true; turn off = false";
extern bool   alertsOn         = true;
extern bool   alertsOnCurrent  = true;
extern bool   alertsMessage    = true;
extern bool   alertsSound      = true;
extern bool   alertsEmail      = false;
extern bool   Interpolate      = true;

double   ind_buffer1[];
double   Cross[];
double   UpArrow[];
double   DnArrow[];
double   trend[];

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

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

int start()
{
      // код доступен только после оплаты
   }
   int i,limit;
   int counted_bars=IndicatorCounted();
   if (counted_bars>0) counted_bars--;
            limit=MathMin(Bars-counted_bars,Bars-1);
            if (returnBars) { ind_buffer1[0] = limit+1; return(0); }

   if (calculateValue || timeFrame == Period())
   {
      double alpha1 = 2.0 / (1.0+14.0);   // replace 14 with any other smoothing period for EMA smoothing
      double alpha2 = 2.0 / (1.0+Cross1);

      for(i=limit; i>=0; i--) 
      {
         double rsiDiff = (iRSI(NULL, 0, RSIPeriod1, PRICE_CLOSE, i)-iRSI(NULL, 0, RSIPeriod2,PRICE_CLOSE,i));
         ind_buffer1[i] = ind_buffer1[i+1]+alpha1*(rsiDiff-ind_buffer1[i+1]);   
         Cross[i]       = Cross[i+1]      +alpha2*(ind_buffer1[i]-Cross[i+1]);
         trend[i]       = trend[i+1];
         UpArrow[i]     = EMPTY_VALUE;
         DnArrow[i]     = EMPTY_VALUE;

         if (UseDifferenceCrosses)
         {
            if(Cross[i]>(Cross[i+1]+(difference/1000))) if(trend[i]< 1) trend[i] =  1;
            if(Cross[i]<(Cross[i+1]-(difference/1000))) if(trend[i]>-1) trend[i] = -1;
         }
         else               
         {
            if (Cross[i]<ind_buffer1[i]) trend[i] =  1;
            if (Cross[i]>ind_buffer1[i]) trend[i] = -1;
         }               
         if (trend[i]!=trend[i+1])
         if (trend[i] == 1)
               UpArrow[i] = Cross[i];
         else  DnArrow[i] = Cross[i];
      } 
      manageAlerts();
      return(0);
   }      

   limit = MathMax(limit,MathMin(Bars,iCustom(NULL,timeFrame,indicatorFileName,"returnBars",0,0)*timeFrame/Per

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

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

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

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

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

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

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