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

AdaptiveLaguerreRSI_v3

adaptivelaguerrersi_v3.mq4

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

!!!-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 общих тегов
Вы автор или правообладатель?

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

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

О программе

AdaptiveLaguerreRSI_v3 — это пользовательский индикатор для MetaTrader 4, рассчитывающий значение RSI на основе фильтра Лагерра с возможностью адаптивной настройки сглаживания. Индикатор отображает основной график в отдельном окне и дополнительные линии направления тренда при включённом режиме цветовой индикации.

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

Вспомогательные линии тренда (upTrend1, upTrend2) строятся при активном цветовом режиме для визуализации направления изменения значений индикатора. Уровни 25, 50 и 75 отображаются горизонтальными линиями на графике.

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

НастройкаОписание
Time Frame in min (TimeFrame) TimeFrame — Таймфрейм в минутах для расчёта индикатора
Applied Price: 0-C,1-O,2-H,3-L,4-Median,5-Typical,6-Weighted (Price) Price — Применяемая цена: 0 — Close, 1 — Open, 2 — High, 3 — Low, 4 — Median, 5 — Typical, 6 — Weighted
Length (Length) Length — Длина фильтра Лагерра
Laguerre Filter Order (Order) Order — Порядок фильтра Лагерра
Adaptive Mode:0-off,1-on (AdaptiveMode) AdaptiveMode — Включение или отключение адаптивного режима (0 — выключен, 1 — включён)
Adaptive Factor Smoothing Period (AdaptiveSmooth) AdaptiveSmooth — Период сглаживания адаптивного коэффициента
Adaptive Factor Smoothing Mode:0-SMA,1-EMA,2-Wilder,3-LWMA,4-Median (AdaptiveSmoothMode) AdaptiveSmoothMode — Режим сглаживания адаптивного коэффициента: 0 — SMA, 1 — EMA, 2 — Wilder, 3 — LWMA, 4 — Median
Color Mode(0-off,1-on) (ColorMode) ColorMode — Включение или отключение цветового режима отображения тренда (0 — выключен, 1 — включён)
Получить полный код

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

#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1  Tomato
#property indicator_width1  2  
#property indicator_color2  DeepSkyBlue
#property indicator_width2  2
#property indicator_color3  DeepSkyBlue
#property indicator_width3  2

#property indicator_level1  50
#property indicator_level2  25
#property indicator_level3  75

extern int  TimeFrame            =     0;    //Time Frame in min
extern int  Price                =     0;    //Applied Price: 0-C,1-O,2-H,3-L,4-Median,5-Typical,6-Weighted
extern int  Length               =    24;    //Length  
extern int  Order                =     4;    //Laguerre Filter Order 
extern int  AdaptiveMode         =     0;    //Adaptive Mode:0-off,1-on 
extern int  AdaptiveSmooth       =     5;    //Adaptive Factor Smoothing Period
extern int  AdaptiveSmoothMode   =     4;    //Adaptive Factor Smoothing Mode:0-SMA,1-EMA,2-Wilder,3-LWMA,4-Median
extern int  ColorMode            =     0;    //Color Mode(0-off,1-on) 

double  laguerreRSI[];
double  upTrend1[];
double  upTrend2[];
double  trend[];
double  price[];
double  diff[];
double  gamma[];

double   L[][2], ema[2], laguerre[2];
datetime prevtime, ptime, prevTime;
bool     ftime = true;
string   TF, IndicatorName, short_name;

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

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

   if(counted_bars > 0) limit=Bars-counted_bars-1;
   if(counted_bars < 0) return(0);
   if(counted_bars < 1)
   { 
   limit = Bars-1;   
      for(i=limit;i>=0;i--) 
      {
      laguerreRSI[i] = EMPTY_VALUE; 
      upTrend1[i]    = EMPTY_VALUE; 
      upTrend2[i]    = EMPTY_VALUE; 
      }
   }   

   if(TimeFrame != Period())
	{
   limit = MathMax(limit,TimeFrame/Period());   

      for(shift = 0;shift < limit;shift++) 
      {	
      int y = iBarShift(NULL,TimeFrame,Time[shift]);

      double RSI   = iCustom(NULL,TimeFrame,IndicatorName,0,Price,Length,Order,AdaptiveMode,AdaptiveSmooth,AdaptiveSmoothMode,ColorMode,0,y);      

      laguerreRSI[shift] = RSI;

         if(ColorMode > 0)
         {
         int rsitrend = iCustom(NULL,TimeFrame,IndicatorName,0,Price,Length,Order,AdaptiveMode,AdaptiveSmooth,AdaptiveSmoothMode,ColorMode,3,y);      

         upTrend1[shift] = EMPTY_VALUE;
         upTrend2[shift] = EMPTY_VALUE;
         if(rsitrend > 0) upTrend1[shift] = laguerreRSI[shift]; 
         }
      } 

      if(ColorMode > 0)
      {
         for(shift = limit;shift >= 0;shift--) 
         {	
            if(laguerreRSI[shift] > laguerreRSI[shift+1] && TimeFrame > Period()) 
            {
            upTrend2[shift]   = laguerreRSI[shift];
            upTrend2[shift+1] = laguerreRSI[shift+1];
            }	
         }
      }   

	return(0);
	}
	else 
   {
      for(shift=limit;shift>=0;shift--)
      {
         if(prevTime != Time[shift])
         {
         laguerre[1] = laguerre[0];
         prevTime    = Time[shift]; 
         }

      price[shift] = iMA(NULL,0,1,0,0,Price,shift);

      if(shift > Bars - Length) continue;

      diff[shift] = MathAbs(price[shift] - laguerre[1]);

      if(shift > Bars - 2*Length) continue;              

         if(AdaptiveMode > 0) 
         {
         gamma[shift] = AdaptiveGamma(diff,Length,shift);

            switch(AdaptiveSmoothMode)
            {
            case 1 : sgamma = EMA   (gamma[shift],AdaptiveSmooth    ,Time[shift],shift); break;
            case 2 : sgamma = EMA   (gamma[shift],2*AdaptiveSmooth-1,Time[shift],shift); break;  
            case 3 : sgamma = LWMA  (gamma       ,AdaptiveSmooth    ,shift); break;   
            case 4 : sgamma = Median(gamma       ,AdaptiveSmooth    ,shift); br

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

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

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

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

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

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

Стоимость полного кода
666,10₽ ≈ $8.14