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

one_more_average_rsi_bands_mtfalerts_2.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 4, написанный на языке MQL4. Он отображает в отдельном окне аналитические линии и буферы, связанные с расчётом RSI и скользящей средней с адаптивной сглаживающей, а также строит полосы отклонения вокруг центральной линии.

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

Настройки включают параметры расчёта RSI, скорости адаптивного сглаживания, периода и метода скользящей средней, расстояния между полосами, уровней перекупленности и перепроданности, а также гибкое управление типами и условиями срабатывания уведомлений.

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

НастройкаОписание
Time frame to use (TimeFrame) Таймфрейм — Таймфрейм, на котором выполняется расчёт индикатора. Значение PERIOD_CURRENT означает текущий график.
Price to use (RsiPrice) Тип цены для RSI — Тип цены, используемый для расчёта RSI (Close, Open, High, Low, Median, Typical, Weighted и другие, включая Heikin Ashi).
Rsi Period (RsiPeriod) Период RSI — Период расчёта индикатора RSI, определяющий количество баров для анализа.
Oma Speed (OmaSpeed) Скорость сглаживания — Константа скорости, влияющая на интенсивность адаптивного сглаживания (параметр constant в алгоритме).
Use Oma Adaptive true or false (OmaAdaptive) Адаптивное сглаживание — Включает или отключает адаптивный режим сглаживания, при котором период расчёта автоматически подстраивается под характеристики цены.
Bands Ma Period (MaPeriod) Период скользящей средней полос — Период скользящей средней, используемой для построения центральной линии полос.
Bands Ma Method (MaMethod) Метод скользящей средней полос — Выбор метода скользящей средней для расчёта центральной линии полос (например, SMA, EMA, SMMA или LWMA).
Distance between bands (koridor) Расстояние между полосами — Расстояние (в пунктах/значениях) между верхней и нижней полосами и центральной скользящей средней.
Turn alerts on (alertsOn) Включить уведомления — Включает или отключает всю систему уведомлений индикатора.
Alerts on current (still opened) bar (alertsOnCurrent) Уведомления на текущем баре — Определяет, будут ли уведомления срабатывать на текущем (открытом) баре или только на закрытых.
Alerts should display alert message (alertsMessage) Всплывающие сообщения — Включает или отключает отображение всплывающих сообщений с информацией о событиях.
Alerts should play alert sound (alertsSound) Звуковые уведомления — Включает или отключает воспроизведение звукового сигнала при срабатывании события.
Alerts should send alert email? (alertsEmail) Email-уведомления — Включает или отключает отправку уведомлений по электронной почте при срабатывании событий.
Alerts should send alert notification (alertsNotify) Push-уведомления — Включает или отключает отправку push-уведомлений на мобильные устройства.
Alerts soundfile name (soundfile) Звуковой файл — Имя звукового файла, который воспроизводится при срабатывании звукового уведомления.
Interpolate in multi time frame mode? (Interpolate) Интерполяция (MTF) — Включает или отключает интерполяцию значений в многотаймфреймовом режиме для более плотной отрисовки линий.
Draw as dots or regular line (drawDots) Отрисовка в виде точек — Определяет стиль отрисовки: точки (стрелки) или обычные линии для центральной скользящей средней.
Oversold level (levelOs) Уровень перепроданности — Уровень перепроданности для отображения горизонтальной линии на графике.
Overbought level (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

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

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 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;
           trend[i]   = trend[i+1];
           if (rsi[i]>rsiMa[i]) trend[i]= 1;
           if (rsi[i]<rsiMa[i]) 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,koridor,alertsOn,alertsOnCurrent,alertsMessage,alertsSound,alertsEmail,alertsNotify,soundfile,0,y);
         upBand[i]  = iCustom(NULL,TimeFrame,indicatorFileName,PERIOD_CURRENT,RsiPrice,RsiPeriod,OmaSpeed,OmaAdaptive,MaPeriod,MaMethod,koridor,alertsOn,alertsOnCurrent,alertsMessage,alertsSound,alertsEmail,alertsNotify,soundfile,1,y);
         dnBand[i]  = iCustom(NULL,TimeFrame,indicatorFileName,PERIOD_CURRENT,RsiPrice,RsiPeriod,OmaSpeed,OmaAdaptive,MaPeriod,MaMethod,koridor,alertsOn,alertsOnCurrent,alertsMessage,alertsSound,alertsEmail,alertsNotify,soundfile,2,y);
         rsiMa[i]   = iCustom(NULL,TimeFrame,indicatorFileName,PERIOD_CURRENT,RsiPrice,RsiPeriod,OmaSpeed,OmaAdaptive,MaPeriod,MaMethod,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,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; i+n < Bars && Time[i+n] >= time; n++) continue;
            for(k = 1; k < n; k++) 
            {
               rsi[i+k]    = rsi[i]    + (rsi[i+n]    - rsi[i])   * k/n;
               upBand[i+k] = upBand[i] + (upBand[i+n] - upBand[i])* k/n;
               dnBand[i

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

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

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

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

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

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

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