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

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

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

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

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

НастройкаОписание
TimeFrame Таймфрейм — Текстовый параметр, задающий таймфрейм для анализа. Может принимать значения таймфреймов (M1, M5, H1, D1 и др.), специальное значение "calculateValue" для расчёта значений или "returnBars" для возврата количества баров.
RsiLength Период RSI — Целочисленный параметр, задающий период расчёта RSI-индикатора.
OmaSpeed Скорость сглаживающей — Числовой параметр, определяющий скорость реакции адаптивной сглаживающей (коэффициент постоянной).
OmaAdaptive Адаптивная сглаживающая — Переключатель адаптивного режима сглаживающей, который автоматически подстраивает период усреднения в зависимости от соотношения сигнала и шума.
Price Тип цены — Целочисленный параметр, задающий тип цены для расчётов (например, Close, Open, High, Low и т.д.).
UseSymbol Символ инструмента — Текстовый параметр, позволяющий указать символ инструмента для расчётов. Если пустой, используется текущий символ.
Interpolate Интерполяция — Включает или отключает интерполяцию значений индикатора между барами при работе на отличном от текущего таймфрейме.
Получить полный код

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

#property indicator_separate_window
#property indicator_buffers 8
#property indicator_color1 DeepSkyBlue
#property indicator_color2 Yellow
#property indicator_color3 Olive
#property indicator_color4 Olive
#property indicator_color5 Orange
#property indicator_color6 Orange
#property indicator_color7 Gray
#property indicator_color8 Gray
#property indicator_width1 2

extern string TimeFrame     = "Current time frame";
extern int    LR.length     = 55;
extern double std.channel.1 =  1;
extern double std.channel.2 =  2;
extern double std.channel.3 =  3;
extern int    RsiLength     = 14;
extern double OmaSpeed      = 1.5;
extern bool   OmaAdaptive   = true;
extern int    Price         = PRICE_CLOSE;
extern string UseSymbol     = "";
extern bool   Interpolate   = true;

double lrBuffer[];
double upBuffer1[];
double dnBuffer1[];
double upBuffer2[];
double dnBuffer2[];
double upBuffer3[];
double dnBuffer3[];
double prices[];

string indicatorFileName;
bool   calculateValue;
bool   returnBars;
int    timeFrame;

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

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

   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
           limit=MathMin(Bars-counted_bars,Bars-1);
           if (returnBars) { prices[0] = limit+1; return(0); }
           if (iOpen(UseSymbol,0,0)==0)
                  symbol = Symbol();
           else   symbol = UseSymbol;

   if (calculateValue || timeFrame == Period())
   {
      for(i=limit; i>=0; i--)
      {
         prices[i] = iRsi(iMA(symbol,0,1,0,MODE_SMA,Price,i),RsiLength,OmaSpeed,OmaAdaptive,i);
         double slope;
         double value   = iLRValue(slope,LR.length,i);
         double std.dev = 0;

            for(int k=0; k<LR.length; k++)
            {
               double diff = prices[i+k]-(value-k*slope);
                  std.dev += diff*diff;
            }
            std.dev = MathSqrt(std.dev/(LR.length-1.0));

         lrBuffer[i]  = value;
         upBuffer1[i] = lrBuffer[i]+(std.channel.1*std.dev);
         dnBuffer1[i] = lrBuffer[i]-(std.channel.1*std.dev);
         upBuffer2[i] = lrBuffer[i]+(std.channel.2*std.dev);
         dnBuffer2[i] = lrBuffer[i]-(std.channel.2*std.dev);
         upBuffer3[i] = lrBuffer[i]+(std.channel.3*std.dev);
         dnBuffer3[i] = lrBuffer[i]-(std.channel.3*std.dev);
      }
      if (!calculateValue) IndicatorShortName("prd "+symbol+" ("+LR.length+")");
      return(0);
   }

   limit = MathMax(limit,MathMin(Bars,iCustom(symbol,timeFrame,indicatorFileName,"returnBars",0,0)*timeFrame/Period()));
   for (i=limit;i>=0;i--)
   {
      int y = iBarShift(NULL,timeFrame,Time[i]);
         prices[i]    = iCustom(symbol,timeFrame,indicatorFileName,"calculateValue",LR.length,std.channel.1,std.channel.2,std.channel.3,RsiLength,OmaSpeed,OmaAdaptive,Price,0,y);
         lrBuffer[i]  = iCustom(symbol,timeFrame,indicatorFileName,"calculateValue",LR.length,std.channel.1,std.channel.2,std.channel.3,RsiLength,OmaSpeed,OmaAdaptive,Price,1,y);
         upBuffer1[i] = iCustom(symbol,timeFrame,indicatorFileName,"calculateValue",LR.length,std.channel.1,std.channel.2,std.channel.3,RsiLength,OmaSpeed,OmaAdaptive,Price,2,y);
         dnBuffer1[i] = iCustom(symbol,timeFrame,indicatorFileName,"calculateValue",LR.length,std.channel.1,std.channel.2,std.channel.3,RsiLength,OmaSpeed,OmaAdaptive,Price,3,y);
         upBuffer2[i] = iCustom(symbol,timeFrame,indicatorFileName,"calculateValue",LR.length,std.channel.1,std.channel.2,std.channel.3,RsiLength,OmaSpeed,OmaAdaptive,Price,4,y);
         dnBuffer2[i] = iCustom(symbol,timeFrame,indicatorFileName,"calculateValue",LR.length,std.channel.1,std.channel.2,std.channel.3,RsiLength,OmaSpeed,OmaAdaptive,Price,5,y);
         upBuffer3[i] = iCustom(symbol,timeFrame,indicatorFileName,"calculateValue",LR.length,std.channel.1,std.channel.2,std.channel.3,RsiLength,OmaSpeed,OmaAdaptive,Price,6,y);
         dnBuffer3[i] = iCustom(symbol,timeFrame,indicatorFileName,"calculateValue",LR.length,std.channel.1,std.channel.2,std.channel.3,RsiLength,OmaSpeed,OmaAdaptive,Price,7,y);

            if (!Interpolate || y==iBarShift(NULL,timeFrame,Time[i-1])) continue;

         datetime time = iTime(NULL,timeFrame,y);
            for(n = 1; i+n < Bars && Time[i+n] >= time; n++) continue;	
            for(k = 1; k < n; k++)
            {
               prices[i+k]    = prices[i]    + (prices[i+n]   -prices[i]   )*k/n;
               lr

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

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

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

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

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

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

Стоимость полного кода
806,50₽ ≈ $9.86