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

parabolic_rsi_2.mq5

Похожие материалы по тегам

ares_indicator.pineTradingView · 1 общих теговgold_trend_revers.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!!-mt4 x-xardg-rsi.mq5MQL5 / MetaTrader 5 · 1 общих тегов! cycle-identifier.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!! rsi ma simple+arrows 1.2 (mtf).mq5MQL5 / MetaTrader 5 · 1 общих теговprecisionflowea.mq5MQL5 / MetaTrader 5 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

Данный продукт представляет собой пользовательский индикатор для платформы MetaTrader 5, который объединяет анализ RSI с сигналами Parabolic SAR. Индикатор рассчитывает сглаженные значения RSI и применяет к ним алгоритм Parabolic SAR для определения точек разворота тренда. Результаты отображаются в отдельном окне: линия RSI и стрелки, отмечающие точки разворота SAR.

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

Все основные параметры, включая период и сглаживание RSI, шаг и предел ускорения SAR, а также настройки уведомлений, задаются пользователем и доступны в окне свойств индикатора.

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

НастройкаОписание
RsiPeriod Период RSI — Период расчёта индикатора RSI — количество баров, используемых для основного расчёта.
RsiSmooth Период сглаживания RSI — Период сглаживания RSI — количество баров, используемых для дополнительного сглаживания значений RSI.
AccStep Шаг ускорения SAR — Шаг ускорения Parabolic SAR — приращение ускорения при каждом новом экстремуме цены.
AccLimit Предел ускорения SAR — Предел ускорения Parabolic SAR — максимальное значение ускорения, ограничивающее скорость изменения точки SAR.
alertsOn Включить уведомления — Включает или отключает систему уведомлений индикатора.
alertsOnCurrent Отслеживать на текущем баре — Определяет, на каком баре отслеживать смену сигнала: на текущем (0) или на предыдущем (1).
alertsMessage Текстовые уведомления — Включает или отключает отображение текстовых уведомлений (Alert) при смене сигнала SAR.
alertsSound Звуковые уведомления — Включает или отключает воспроизведение звукового сигнала при смене сигнала SAR.
alertsEmail Уведомления по электронной почте — Включает или отключает отправку уведомлений по электронной почте при смене сигнала SAR.
Получить полный код

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

#property indicator_separate_window
#property indicator_buffers 5
#property indicator_color1  DarkGray
#property indicator_color2  LimeGreen
#property indicator_color3  PaleVioletRed
#property indicator_color4  LimeGreen
#property indicator_color5  PaleVioletRed
#property indicator_width4  2
#property indicator_width5  2

extern int    RsiPeriod       = 14;
extern int    RsiSmooth       = 3;
extern double AccStep         = 0.01;
extern double AccLimit        = 0.1;
extern bool   alertsOn        = false;
extern bool   alertsOnCurrent = true;
extern bool   alertsMessage   = true;
extern bool   alertsSound     = false;
extern bool   alertsEmail     = false;

double rsi[];
double sarUp[];
double sarDn[];
double saraUp[];
double saraDn[];

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

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

double workTma[][2];
double iTma(double price, double period, int r, int instanceNo=0)
{
   if (ArrayRange(workTma,0)!= Bars) ArrayResize(workTma,Bars); r=Bars-r-1;
   if (period<=1) return(price);

   workTma[r][instanceNo] = price;

      double half = (period+1.0)/2.0;
      double sum  = price;
      double sumw = 1;

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

double workRsi[][6];
#define _price  0
#define _change 1
#define _changa 2

double iRsi(double price, double period, int r, int forz=0)
{
   if (ArrayRange(workRsi,0)!=Bars) ArrayResize(workRsi,Bars);
      int    z     = forz*3; 
      int    i     = Bars-r-1;
      double alpha = 1.0/period; 

   workRsi[i][_price+z] = price;
   if (i<period)
      {
         int k; double sum = 0; for (k=0; k<period && (i-k-1)>=0; k++) sum += MathAbs(workRsi[i-k][_price+z]-workRsi[i-k-1][_price+z]);
            workRsi[i][_change+z] = (workRsi[i][_price+z]-workRsi[0][_price+z])/MathMax(k,1);
            workRsi[i][_changa+z] =                                         sum/MathMax(k,1);
      }
   else
      {
         double change = workRsi[i][_price+z]-workRsi[i-1][_price+z];
                         workRsi[i][_change+z] = workRsi[i-1][_change+z] + alpha*(        change  - workRsi[i-1][_change+z]);
                         workRsi[i][_changa+z] = workRsi[i-1][_changa+z] + alpha*(MathAbs(change) - workRsi[i-1][_changa+z]);
      }
   if (workRsi[i][_changa+z] != 0)
         return(50.0*(workRsi[i][_change+z]/workRsi[i][_changa+z]+1));
   else  return(0);
}

double work[][7];
#define _high     0
#define _low      1
#define _ohigh    2
#define _olow     3
#define _open     4
#define

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

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

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

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

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

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

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