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

rsx_on_oma_filter.mq5

Вы автор или правообладатель?

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

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

О программе

RSX on OMA Filter — пользовательский индикатор для MetaTrader 5, отображающий сглажённый осциллятор RSX (от 0 до 100, центр — 50) в отдельном окне. Основная линия рассчитывается на основе скользящей средней OMA, а результат визуализируется в виде двух гистограмм: восходящего тренда (голубой) и нисходящего тренда (красный).

Индикатор определяет направление тренда по уровням RSX (uptrendlevel и dntrendlevel), а торговые сигналы формируются при пересечении дополнительных уровней (uptradelevel и dntradelevel) в рамках подтверждённого тренда. Адаптивный режим OMA позволяет автоматически подстраивать период сглаживания под текущее состояние рынка.

Индикатор использует четыре буфера: два видимых гистограммных и два скрытых (для вспомогательных расчётов). Настройки включают период RSX, применяемую цену, уровни тренда и торговли, а также параметры OMA. Продукт предназначен для технического анализа ценовых данных.

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

НастройкаОписание
RsxLength Период расчёта осциллятора RSX, определяющий глубину сглаживания и чувствительность основного показателя.
Price Тип цены, используемой для расчёта индикатора. Указывается как числовой код применяемой цены.
uptrendlevel Уровень RSX для подтверждения восходящего тренда. При значении RSX выше этого уровня тренд считается восходящим.
dntrendlevel Уровень RSX для подтверждения нисходящего тренда. При значении RSX ниже этого уровня тренд считается нисходящим.
uptradelevel Уровень RSX для формирования сигнала о восходящем тренде. Сигнал генерируется при пересечении этого уровня вверх в рамках подтверждённого восходящего тренда.
dntradelevel Уровень RSX для формирования сигнала о нисходящем тренде. Сигнал генерируется при пересечении этого уровня вниз в рамках подтверждённого нисходящего тренда.
OmaLength Период сглаживания для расчёта оптимизированной скользящей средней OMA, используемой в качестве основного фильтра.
OmaSpeed Параметр скорости сглаживания OMA, влияющий на отзывчивость фильтра к изменению цены. Допустимые значения не менее -1.5.
OmaAdaptive Включает или отключает адаптивный режим сглаживания OMA. При активном состоянии период сглаживания автоматически корректируется в зависимости от соотношения сигнала и шума на ценовых данных.
Получить полный код

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

#property indicator_separate_window
#property indicator_minimum -2
#property indicator_maximum 2
#property indicator_buffers 4
#property indicator_color2 Aqua
#property indicator_color3 Crimson
#property indicator_width2 3
#property indicator_width3 3
#property indicator_level1 0
#property indicator_levelstyle STYLE_DOT
#property indicator_levelcolor Magenta

extern int    RsxLength   = 14;
extern int    Price       = 0;
extern int    uptrendlevel= 51;
extern int    dntrendlevel= 49;
extern int    uptradelevel= 25;
extern int    dntradelevel= 75;
extern int    OmaLength   = 5;
extern double OmaSpeed    = 8.0;
extern bool   OmaAdaptive = true;

double rsx[];
double UpBuffer[];
double DnBuffer[];
double TrBuffer[];
double wrkBuffer[][13];
double stored[][7];

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

int start()
{
      // код доступен только после оплаты
   }
   int counted_bars=IndicatorCounted();
   int i,r,limit;

   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
         limit = Bars-counted_bars;
         if (ArrayRange(wrkBuffer,0) != Bars) { ArrayResize(wrkBuffer,Bars); ArrayResize(stored,Bars); }

   double Kg = (3.0)/(2.0+RsxLength);
   double Hg = 1.0-Kg;
   for(i=limit, r=Bars-i-1; i>=0; i--, r++)
   {
      wrkBuffer[r][12] = iAverage(iMA(NULL,0,1,0,MODE_SMA,Price,i),OmaLength,OmaSpeed,OmaAdaptive,r);

         if (i==(Bars-1)) { for (int c=0; c<12; c++) wrkBuffer[r][c] = 0; continue; }  

      double roc = wrkBuffer[r][12]-wrkBuffer[r-1][12];
      double roa = MathAbs(roc);
      for (int k=0; k<3; k++)
      {
         int kk = k*2;
            wrkBuffer[r][kk+0] = Kg*roc                + Hg*wrkBuffer[r-1][kk+0];
          

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

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

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

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

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

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

Стоимость полного кода
362,60₽ ≈ $4.43