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

one more average rsi bands mtf 2alerts 2.1.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) с адаптивным сглаживанием по методу OMA (One More Average). Индикатор отображает RSI, скользящую среднюю от RSI и верхнюю/нижнюю полосы отклонения в отдельном подокне графика.

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

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

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

НастройкаОписание
TimeFrame Указывает таймфрейм, на котором осуществляется расчёт индикатора
RsiPrice Выбирает тип цены для расчёта RSI (закрытие, открытие, максимум, минимум и другие варианты)
RsiPeriod Период расчёта индекса относительной силы (RSI)
OmaSpeed Параметр скорости (константа) для алгоритма сглаживания OMA, влияет на отзывчивость сглаженной линии
OmaAdaptive Включает или отключает адаптивный расчёт периода сглаживания OMA в зависимости от отношения сигнала к шуму
MaPeriod Период скользящей средней, применяемой для построения полос на основе RSI
MaMethod Выбирает метод расчёта скользящей средней для полос (например, простая, экспоненциальная, линейно-взвешенная и т.д.)
ColorOn Определяет условие изменения цвета линии: по пересечению сигнальной линии или по изменению наклона
koridor Расстояние между верхней и нижней полосами отклонения от скользящей средней RSI
alertsOn Включает или отключает систему уведомлений индикатора
alertsOnCurrent Определяет, отслеживать ли изменение тренда на текущем (открытом) баре или на закрытом
alertsMessage Включает или отключает отображение всплывающего текстового сообщения при срабатывании уведомления
alertsSound Включает или отключает воспроизведение звукового сигнала при срабатывании уведомления
alertsEmail Включает или отключает отправку электронной почты при срабатывании уведомления
alertsNotify Включает или отключает отправку push-уведомления при срабатывании уведомления
soundfile Имя звукового файла, воспроизводимого при срабатывании звукового уведомления
Interpolate Включает или отключает интерполяцию значений при работе в многотаймфреймном режиме
drawDots Определяет режим отрисовки линии скользящей средней: в виде точек или сплошной линии
levelOs Уровень перепроданности, отображаемый горизонтальной линией в окне индикатора
levelOb Уровень перекупленности, отображаемый горизонтальной линией в окне индикатора
Получить полный код

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

#property indicator_separate_window
#property indicator_buffers    6
#property indicator_color1     clrYellow
#property indicator_color2     clrAqua
#property indicator_color3     clrAqua
#property indicator_color4     clrLime
#property indicator_color5     clrRed
#property indicator_color6     clrRed
#property indicator_width1     3
#property indicator_minimum    0
#property indicator_maximum    100
#property indicator_levelcolor clrDarkSlateGray
#property strict

enum enPrices
{
   pr_close,      // Close
   pr_open,       // Open
   pr_high,       // High
   pr_low,        // Low
   pr_median,     // Median
   pr_typical,    // Typical
   pr_weighted,   // Weighted
   pr_average,    // Average (high+low+open+close)/4
   pr_medianb,    // Average median body (open+close)/2
   pr_tbiased,    // Trend biased price
   pr_haclose,    // Heiken ashi close
   pr_haopen ,    // Heiken ashi open
   pr_hahigh,     // Heiken ashi high
   pr_halow,      // Heiken ashi low
   pr_hamedian,   // Heiken ashi median
   pr_hatypical,  // Heiken ashi typical
   pr_haweighted, // Heiken ashi weighted
   pr_haaverage,  // Heiken ashi average
   pr_hamedianb,  // Heiken ashi median body
   pr_hatbiased   // Heiken ashi trend biased price
};
enum enColorOn
{
   clr_slp, // Color change on slope change
   clr_sig  // Color change on signal cross
};
extern ENUM_TIMEFRAMES TimeFrame       = PERIOD_CURRENT; // Time frame to use
extern enPrices        RsiPrice        = pr_close;       // Price to use 
extern double          RsiPeriod       = 34;             // Rsi Period
extern double          OmaSpeed        = 2.0;            // Oma Speed
extern bool            OmaAdaptive     = true;           // Use Oma Adaptive true or false
extern int             MaPeriod        = 34;             // Bands Ma Period
extern ENUM_MA_METHOD  MaMethod        = 3;              // Bands Ma Method
extern enColorOn       ColorOn         = clr_sig;        // Color change on :
extern int             koridor         = 5;              // Distance between bands
extern bool            alertsOn        = true;           // Turn alerts on
extern bool            alertsOnCurrent = true;           // Alerts on current (still opened) bar
extern bool            alertsMessage   = true;           // Alerts should display alert message
extern bool            alertsSound     = true;           // Alerts should play alert sound
extern bool            alertsEmail     = false;          // Alerts should send alert email?
extern bool            alertsNotify    = false;          // Alerts should send alert notification
extern string          soundfile       = "alert2.wav";   // Alerts soundfile name
extern bool            Interpolate     = true;           // Interpolate in multi time frame mode?
extern bool            drawDots        = true;           // Draw as dots or regular line
extern double          levelOs         = 20;             // Oversold level
extern double          levelOb         = 80;             // Overbought level

double rsi[];
double upBand[];
double dnBand[];
double rsiMaDa[];
double rsiMaDb[];
double rsiMa[];
double trend[];
string indicatorFileName;
bool   returnBars;

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

int start()
{
      // код доступен только после оплаты
   }
   int counted_bars=IndicatorCounted();
   int i,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 (TimeFrame==Period())
   {
     if (!drawDots) if (trend[limit] == -1) CleanPoint(limit,rsiMaDa,rsiMaDb);
     for (i=limit; i>=0; i--) rsi[i] = iRsi(getPrice(RsiPrice,Open,Close,High,Low,i),RsiPeriod,OmaSpeed,OmaAdaptive,i);
     for (i=limit; i>=0; i--) 
     {
        rsiMa[i]  = iMAOnArray(rsi,0,MaPeriod,0,MaMethod,i);
        upBand[i] = rsiMa[i]+koridor;
        dnBand[i] = rsiMa[i]-koridor;
        rsiMaDa[i] = EMPTY_VALUE;
        rsiMaDb[i] = EMPTY_VALUE;
        if (i<Bars-1)
         {
            trend[i] = trend[i+1];
            if (ColorOn==clr_sig)
            {
               if (rsi[i]>rsiMa[i]) trend[i]= 1;
               if (rsi[i]<rsiMa[i]) trend[i]=-1;
            }
            else
            {
               if (rsiMa[i]>rsiMa[i+1]) trend[i]= 1;
               if (rsiMa[i]<rsiMa[i+1]) trend[i]=-1;
            }               
            if (trend[i]==-1) 
               if    (drawDots) rsiMaDa[i] = rsiMa[i];
               else  PlotPoint(i,rsiMaDa,rsiMaDb,rsiMa);
         }                             
      }

   if (alertsOn)
   {
      int whichBar = 1; if (alertsOnCurrent) whichBar = 0;
      if (trend[whichBar] != trend[whichBar+1])
      {
         if (trend[whichBar] ==  1) doAlert(whichBar,"up");
         if (trend[whichBar] == -1) doAlert(whichBar,"down");
      }
   }
   return(0);
   }

   limit = (int)MathMax(limit,MathMin(Bars-1,iCustom(NULL,TimeFrame,indicatorFileName,-99,0,0)*TimeFrame/Period()));
   if (trend[limit]==-1) CleanPoint(limit,rsiMaDa,rsiMaDb);
   for(i=limit; i>=0; i--)
   {
      int y = iBarShift(NULL,TimeFrame,Time[i]);
         rsi[i]     = iCustom(NULL,TimeFrame,indicatorFileName,PERIOD_CURRENT,RsiPrice,RsiPeriod,OmaSpeed,OmaAdaptive,MaPeriod,MaMethod,ColorOn,koridor,alertsOn,alertsOnCurrent,alertsMessage,alertsSound,alertsEmail,alertsNotify,soundfile,0,y);
         upBand[i]  = iCustom(NULL,TimeFrame,indicatorFileName,PERIOD_CURRENT,RsiPrice,RsiPeriod,OmaSpeed,OmaAdaptive,MaPeriod,MaMethod,ColorOn,koridor,alertsOn,alertsOnCurrent,alertsMessage,alertsSound,alertsEmail,alertsNotify,soundfile,1,y);
         dnBand[i]  = iCustom(NULL,TimeFrame,indicatorFileName,PERIOD_CURRENT,RsiPrice,RsiPeriod,OmaSpeed,OmaAdaptive,MaPeriod,MaMethod,ColorOn,koridor,alertsOn,alertsOnCurrent,alertsMessage,alertsSound,alertsEmail,alertsNotify,soundfile,2,y);
         rsiMa[i]   = iCustom(NULL,TimeFrame,indicatorFileName,PERIOD_CURRENT,RsiPrice,RsiPeriod,OmaSpeed,OmaAdaptive,MaPeriod,MaMethod,ColorOn,koridor,alertsOn,alertsOnCurrent,alertsMessage,alertsSound,alertsEmail,alertsNotify,soundfile,3,y);
         rsiMaDa[i] = EMPTY_VALUE;
         rsiMaDb[i] = EMPTY_VALUE;
         trend[i]   = iCustom(NULL,TimeFrame,indicatorFileName,PERIOD_CURRENT,RsiPrice,RsiPeriod,OmaSpeed,OmaAdaptive,MaPeriod,MaMethod,ColorOn,koridor,alertsOn,alertsOnCurrent,alertsMessage,alertsSound,alertsEmail,alertsNotify,soundfile,6,y);
         if (drawDots && trend[i]==-1) rsiMaDa[i] = rsiMa[i]; 

         if (!Interpolate || (i>0 && y==iBarShift(NULL,TimeFrame,Time[i-1]))) continue;

         int n,k; datetime time = iTime(NULL,TimeFrame,y);
            for(n = 1; 

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

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

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

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

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

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

Стоимость полного кода
1 105,90₽ ≈ $13.52