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

rsi ma simple+arrows 1.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, построенный на основе выбранного метода сглаживания цены, а также дополнительную среднюю линию сигнала. В коде предусмотрены различные типы RSI и методы усреднения, что позволяет гибко настраивать отображение.

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

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

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

НастройкаОписание
RSI period (RsiPeriod) Период RSI — Период расчёта RSI.
RSI method (RsiMethod) Метод RSI — Выбор метода расчёта RSI.
Price to use (RsiPrice) Цена для RSI — Цена, используемая для расчёта RSI.
Average signal period (AveragePeriod) Период средней — Период для расчёта средней линии сигнала.
Average signal and MA-RSI type (AverageType) Тип средней — Метод сглаживания, используемый для средней линии и для RSI.
Average signal are visible? (ShowAverage) Показывать среднюю — Показывает или скрывает среднюю линию сигнала.
Average signal style? (Averagestyle) Стиль средней — Стиль отображения средней линии сигнала.
Average signal color (Average_color_lines) Цвет средней — Цвет средней линии сигнала.
RSI UP color (UpcolorRSI) Цвет RSI вверх — Цвет линии RSI при восходящем тренде.
RSI DOWN color (DncolorRSI) Цвет RSI вниз — Цвет линии RSI при нисходящем тренде.
RSI NEUTRAL color (NecolorRSI) Цвет RSI нейтральный — Цвет линии RSI в нейтральной зоне.
RSI Lines width (LineWidthRSI) Толщина линий RSI — Толщина линий RSI.
Horizontal Levels are visible? (ShowHorlev) Показывать уровни — Показывает или скрывает горизонтальные уровни.
Zero level style? (levelstyle) Стиль уровней — Стиль отображения горизонтальных уровней.
Levels color (Level_color_lines) Цвет уровней — Цвет горизонтальных уровней.
UP level ? (LevelUp) Верхний уровень — Значение верхнего горизонтального уровня.
DOWN level ? (LevelDown) Нижний уровень — Значение нижнего горизонтального уровня.
Arrows on: (ColorOn) Условие окраски — Определяет условие, по которому меняется цвет линий RSI и стрелок.
Turn alerts on? (AlertsOn) Включить оповещения — Включает или выключает систему оповещений индикатора.
Alerts on still opened bar? (AlertsOnCurrent) Оповещать на текущем баре — Если включено, оповещения срабатывают на текущем (ещё не закрытом) баре, иначе — только на закрытом.
Alerts should display message? (AlertsMessage) Показывать сообщение — Разрешает вывод всплывающего сообщения при срабатывании оповещения.
Alerts should play a sound? (AlertsSound) Проигрывать звук — Разрешает воспроизведение звукового файла при срабатывании оповещения.
Alerts should send a notification? (AlertsNotify) Отправлять уведомление — Разрешает отправку push-уведомления на мобильное устройство при срабатывании оповещения.
Alerts should send an email? (AlertsEmail) Отправлять email — Разрешает отправку email-сообщения при срабатывании оповещения.
Sound file (AlertsSoundFile) Звуковой файл — Имя звукового файла, который воспроизводится при срабатывании оповещения.
Arrows visible true/false? (arrowsVisible) Показывать стрелки — Показывает или скрывает стрелки на графике.
Unique ID for arrows (arrowsIdentifier) Идентификатор стрелок — Уникальный идентификатор для имён объектов стрелок.
Upper arrow gap (arrowsUpperGap) Отступ стрелки вверх — Отступ для стрелки вверх от максимума бара.
Lower arrow gap (arrowsLowerGap) Отступ стрелки вниз — Отступ для стрелки вниз от минимума бара.
Up arrow color (arrowsUpColor) Цвет стрелки вверх — Цвет стрелки вверх.
Down arrow color (arrowsDnColor) Цвет стрелки вниз — Цвет стрелки вниз.
Up arrow code (arrowsUpCode) Код стрелки вверх — Код символа для стрелки вверх.
Down arrow code (arrowsDnCode) Код стрелки вниз — Код символа для стрелки вниз.
Up arrow size (arrowsUpSize) Размер стрелки вверх — Размер стрелки вверх.
Down arrow size (arrowsDnSize) Размер стрелки вниз — Размер стрелки вниз.
Получить полный код

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

#property indicator_separate_window
#property indicator_buffers 8

enum enRsiTypes
{
   rsi_rsi,  // Regular RSI
   rsi_wil,  // Slow RSI
   rsi_rap,  // Rapid RSI
   rsi_har,  // Harris RSI
   rsi_rsx,  // RSX
   rsi_cut   // Cuttlers RSI
};

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_tbiased2,   // Trend biased (extreme) 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
   pr_hatbiased2, // Heiken ashi trend biased (extreme) price
   pr_habclose,   // Heiken ashi (better formula) close
   pr_habopen ,   // Heiken ashi (better formula) open
   pr_habhigh,    // Heiken ashi (better formula) high
   pr_hablow,     // Heiken ashi (better formula) low
   pr_habmedian,  // Heiken ashi (better formula) median
   pr_habtypical, // Heiken ashi (better formula) typical
   pr_habweighted,// Heiken ashi (better formula) weighted
   pr_habaverage, // Heiken ashi (better formula) average
   pr_habmedianb, // Heiken ashi (better formula) median body
   pr_habtbiased, // Heiken ashi (better formula) trend biased price
   pr_habtbiased2 // Heiken ashi (better formula) trend biased (extreme) price
};

enum enMaTypes
{
   ma_sma,    // Simple moving average
   ma_ema,    // Exponential moving average
   ma_smma,   // Smoothed MA
   ma_lwma,   // Linear weighted MA
   ma_tema    // Tripple exponential moving average
};

enum enArrowOn
{
   cc_onRSIcrosslevel,   // Color on RSI cross level
   cc_RSIcrossMA,  // Color on RSI cross MA 
   cc_onSLOPE,   // Color on RSI slope

};

extern int             RsiPeriod            = 14;             // RSI period
extern enRsiTypes      RsiMethod            = rsi_rsi;        // RSI method
extern enPrices        RsiPrice             = pr_close;       // Price to use
extern int             AveragePeriod        = 21;             // Average signal period
extern enMaTypes       AverageType          = ma_ema;         // Average signal and MA-RSI type
extern bool            ShowAverage          = true;           // Average signal are visible?
input ENUM_LINE_STYLE  Averagestyle         =  STYLE_DOT;     // Average signal style?
input color           Average_color_lines  = clrLightYellow; // Average signal color

input color            UpcolorRSI     = clrSeaGreen;          // RSI UP color
input color            DncolorRSI     = clrCrimson;           // RSI DOWN color
input color            NecolorRSI     = clrGray;              // RSI NEUTRAL color
extern int             LineWidthRSI   =   2;                  // RSI Lines width

extern bool            ShowHorlev         = true;             // Horizontal Levels are visible?
input ENUM_LINE_STYLE  levelstyle         =  STYLE_DOT;       // Zero level style?
input color            Level_color_lines  = clrGray;          // Levels color
input double           LevelUp            =  60;              // UP level ?
input double           LevelDown          = 40;               // DOWN level ?

extern enArrowOn       ColorOn      = cc_onRSIcrosslevel;      // Arrows on:

extern bool            AlertsOn            = false;          // Turn alerts on?
extern bool            AlertsOnCurrent     = false;          // Alerts on still opened bar?
extern bool            AlertsMessage       = true;           // Alerts should display message?
extern bool            AlertsSound         = false;          // Alerts should play a sound?
extern bool            AlertsNotify        = false;          // Alerts should send a notification?
extern bool            AlertsEmail         = false;          // Alerts should send an email?
extern string          AlertsSoundFile     = "alert2.wav";   // Sound file

input bool            arrowsVisible             = false;              // Arrows visible true/false?
input string          arrowsIdentifier          = " RSI MA";     // Unique ID for arrows

input double          arrowsUpperGap            = 1;                // Upper arrow gap
input double          arrowsLowerGap            = 0.5;                // Lower arrow gap
input color           arrowsUpColor             = clrMediumSeaGreen;       // Up arrow color
input color           arrowsDnColor             = clrCrimson;          // Down arrow color
input int             arrowsUpCode              = 233;                // Up arrow code
input int             arrowsDnCode              = 234;                // Down arrow code
input int             arrowsUpSize              = 2;                  // Up arrow size
input int             arrowsDnSize              = 2;                  // Down arrow size

string _avgNames[]={"SMA","EMA","SMMA","LWMA","TEMA"};

double rsi[];
double maDa[],maDb[],maUa[],maUb[],avg[],valup[],valdn[];

double trend[];

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

int deinit()
{
  deleteArrows(); 

   return(0);
}

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

#define _maInstances 2
#define _maWorkBufferx1 _maInstances
#define _maWorkBufferx3 _maInstances*3
double iCustomMa(int mode, double price, double length, int r, int bars, int instanceNo=0)
{
   bars = Bars; r=bars-r-1;
   switch (mode)
   {
      case ma_sma   : return(iSma(price,(int)length,r,bars,instanceNo));
      case ma_ema   : return(iEma(price,length,r,bars,instanceNo));
      case ma_smma  : return(iSmma(price,(int)length,r,bars,instanceNo));
      case ma_lwma  : return(iLwma(price,(int)length,r,bars,instanceNo));
      case ma_tema  : return(iTema(price,(int)length,r,bars,instanceNo));
      default       : return(price);
   }
}

double workSma[][_maWorkBufferx1];
double iSma(double price, int period, int r, int _bars, int instanceNo=0)
{
   if (ArrayRange(workSma,0)!= _bars) ArrayResize(workSma,_bars);

   workSma[r][instanceNo+0] = price;
   double sma = price;  int k=1; for(; k<period && (r-k)>=0; k++) sma += workSma[r-k][instanceNo+0];  sma /= (double)k;
   return(sma);
}

double workEma[][_maWorkBufferx1];
double iEma(double price, double period, int r, int _bars, int instanceNo=0)
{
   if (ArrayRange(workEma,0)!= _bars) ArrayResize(workEma,_bars);

   workEma[r][instanceNo] = price;
   if (r>0 && period>1)
          workEma[r][instanceNo] = workEma[r-1][instanceNo]+(2.0/(1.0+period))*(price-workEma[r-1][instanceNo]);
   return(workEma[r][instanceNo]);
}

double workSmma[][_maWorkBufferx1];
double iSmma(double price, double period, int r, int _bars, int instanceNo=0)
{
   if (ArrayRange(workSmma,0)!= _bars) ArrayResize(workSmma,_bars);

   workSmma[r][instanceNo] = price;
   if (r>1 && period>1)
          workSmma[r][instanceNo] = workSmma[r-1][instanceNo]+(price-workSmma[r-1][instanceNo])/period;
   return(workSmma[r][instanceNo]);
}

double workLwma[][_maWorkBufferx1];
double iLwma(double price, double period, int r, int _bars, int instanceNo=0)
{
   if (ArrayRange(workLwma,0)!= _bars) ArrayResize(workLwma,_bars);

   workLwma[r][instanceNo] = price; if (period<1) return(price);
      double sumw = period;
      double sum  = period*price;

      for(int k=1; k<period && (r-k)>=0; k++)
      {
         double weight = period-k;
                sumw  += weight;
                sum   += weight*workLwma[r-k][instanceNo];  
      }             
      return(sum/sumw);
}

double workTema[][_maWorkBufferx3];
#define _tema1 0
#define _tema2 1
#define _tema3 2

double iTema(double price, double period, int r, int bars, int instanceNo=0)
{
   if (ArrayRange(workTema,0)!= bars) ArrayResize(workTema,bars); instanceNo*=3;

   workTema[r][_tema1+instanceNo] = price;
   workTema[r][_tema2+instanceNo] = price;
   workTema[r][_tema3+instanceNo] = price;
   if (r>0 && period>1)
   {
      double alpha = 2.0 / (1.0+period);
          workTema[r][_tema1+instanceNo] = workTema[r-1][_tema1+instanceNo]+alpha*(price                         -workTema[r-1][_tema1+instanceNo]);
          workTema[r][_tema2+instanceNo] = workTema[r-1][_tema2+instanceNo]+alpha*(workTema[r][

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

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

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

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

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

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

Стоимость полного кода
1 596,10₽ ≈ $19.51