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

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

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

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

О программе

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

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

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

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

НастройкаОписание
TimeFrame Таймфрейм, на котором выполняется расчёт RSI (текущий или любой другой доступный)
Length Период расчёта RSI (количество баров, используемых для усреднения)
Price Тип цены, используемый для расчёта RSI (Close, Open, High, Low, Median, Typical или Weighted)
LevelUp Верхний пороговый уровень RSI, при пересечении которого срабатывают уведомления и меняется направление тренда
LevelDown Нижний пороговый уровень RSI, при пересечении которого срабатывают уведомления и меняется направление тренда
Interpolate Включает или отключает линейную интерполяцию значений RSI при отображении на мультитаймфрейме для сглаживания между барами
alertsOn Главный переключатель, активирующий всю систему уведомлений индикатора
alertsOnZoneEnter Включает уведомления при входе RSI в зону выше верхнего или ниже нижнего порогового уровня
alertsOnZoneExit Включает уведомления при выходе RSI из зоны (возврат из экстремальной зоны обратно в нормальный диапазон)
alertsOnCurrent Определяет, проверять ли условия алертов на текущем незаполненном баре или на предыдущем закрытом
alertsMessage Включает или отключает popup-уведомления на графике при срабатывании алертов
alertsSound Включает или отключает звуковой сигнал при срабатывании алертов
alertsEmail Включает или отключает отправку уведомлений по электронной почте при срабатывании алертов
Получить полный код

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

#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   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 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--)
      {
         rsi[i] = iRSI(NULL,0,Length,Price,i);

            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);
   }   

   limit = MathMax(limit,MathMin(Bars,iCustom(NULL,timeFrame,indicatorFileName,"returnBars",0,0)*timeFrame/Period()));
   for (i=limit;i>=0;i--)
   {
      int y = iBarShift(NULL,timeFrame,Time[i]);
         rsi[i]   = iCustom(NULL,timeFrame,indicatorFileName,"calculateValue",Length,Price,LevelUp,LevelDown,0,y);
         trend[i] = iCustom(NULL,timeFrame,indicator

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

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

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

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

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

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

Стоимость полного кода
567,30₽ ≈ $6.93