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

Volume Adjusted RSI

volume adjusted rsi 1.1.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 рассчитывает аналитический осциллятор, адаптированный по объёму торгов. Он отображается в отдельном окне и использует три буфера данных для визуализации основной линии и дополнительных маркеров.

Индикатор поддерживает выбор различных типов цен (Close, Open, High, Low, Median, Typical, Weighted, Average, а также ряд цен Хаукина-Аши), что позволяет гибко настраивать анализ. Доступна сглаживающая обработка как входных данных, так и итогового результата через параметры предварительной и итоговой сглажки.

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

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

НастройкаОписание
Time frame (TimeFrame) Таймфрейм — Таймфрейм, на котором рассчитывается индикатор. Значение PERIOD_CURRENT означает текущий график.
Rsi period (RsiPeriod) Период RSI — Период расчёта индикатора, определяющий количество баров для анализа.
Price (RsiPrice) Тип цены RSI — Тип цены, используемой для расчёта: Close, Open, High, Low, Median, Typical, Weighted, Average и другие, включая цены Хаукина-Аши.
Result smoothing (RsiSmooth) Сглаживание результата — Период итоговой сглажки результата индикатора.
Pre-smoothing (PreSmooth) Предварительная сглажка — Задаёт период предварительной сглажки для ценовых данных и объёма перед основным расчётом.
Use real volume? (RealVolume) Использовать реальный объём — При включении используется реальный объём сделок; при выключении — тиковый объём.
Interpolate in multi time frame mode? (Interpolate) Интерполяция (мульти ТФ) — Включает или отключает интерполяцию данных при отображении на таймфрейме, отличном от исходного.
Получить полный код

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

#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1  clrLimeGreen
#property indicator_color2  clrOrange
#property indicator_color3  clrOrange
#property indicator_width1  2
#property indicator_width2  2
#property indicator_width3  2
#property strict

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
};

extern ENUM_TIMEFRAMES TimeFrame   = PERIOD_CURRENT; // Time frame
extern int             RsiPeriod   = 14;        // Rsi period
extern enPrices        RsiPrice    = pr_close;  // Price
extern int             RsiSmooth   = 3;         // Result smoothing
extern int             PreSmooth   = 0;         // Pre-smoothing
extern bool            RealVolume  = false;     // Use real volume?
extern bool            Interpolate = true;      // Interpolate in multi time frame mode?

double rsi[],rsida[],rsidb[],prices[],slope[],volume[];
string indicatorFileName;
bool   returnBars;

void OnInit()
{
      // код доступен только после оплаты
   }
void OnDeinit(const int& reason){ }

int OnCalculate (const int       rates_total,
                 const int       prev_calculated,
                 const datetime& time[],
                 const double&   open[],
                 const double&   high[],
                 const double&   low[],
                 const double&   close[],
                 const long&     tick_volume[],
                 const long&     real_volume[],
                 const int&      spread[] )
{
      // код доступен только после оплаты
   }

   int counted_bars = prev_calculated;
      if(counted_bars < 0) return(-1);
      if(counted_bars > 0) counted_bars--;
            int limit=MathMin(rates_total-counted_bars,rates_total-1);
            if (returnBars) { rsi[0] = limit+1; return(0); }
            if (TimeFrame!=_Period)
            {
               #define _mtfCall(_buff,_y) iCustom(NULL,TimeFrame,indicatorFileName,PERIOD_CURRENT,RsiPeriod,RsiPrice,RsiSmooth,PreSmooth,RealVolume,_buff,_y)
                  limit = (int)MathMax(limit,MathMin(rates_total-1,iCustom(NULL,TimeFrame,indicatorFileName,-99,0,0)*TimeFrame/_Period));
                  if (slope[limit] ==-1) CleanPoint(limit,rsida,rsidb);
                  for (int i=limit;i>=0; i--)
                  {
                     int y = iBarShift(NULL,TimeFrame,time[i]);
                     rsi[i]   = _mtfCall(0,y);
                     slope[i] = _mtfCall(5,y);
                     rsida[i] = EMPTY_VALUE;
                     rsidb[i] = EMPTY_VALUE;

                     if (!Interpolate || (i>0 && y==iBarShift(NULL,TimeFrame,time[i-1]))) continue;

                     #define _interpolate(buff,i,k,n) buff[i+k] = buff[i]+(buff[i+n]-buff[i])*k/n
                        int n,k; datetime ctime = iTime(NULL,TimeFrame,y);
                           for(n = 1; (i+n)<rates_total && Time[i+n] >= ctime; n++) continue;	
                           for(k = 1; k<n && (i+n)<rates_total && (i+k)<rates_total; k++) _interpolate(rsi,i,k,n);
            }
            for(int i=limit; i>=0; i--) if (slope[i]==-1) PlotPoint(i,rsida,rsidb,rsi);
            return(0);
         }            

   if (ArraySize(real_volume)!=rates_total) RealVolume=false;              
   if (slope[limit] ==-1) CleanPoint(limit,rsida,rsidb);
   for(int i=limit; i>=0 && !_StopFlag; i--)
   {
      prices[i] = iEma(getPrice(RsiPrice,open,close,high,low,i),PreSmooth,i,rates_total,5);
      volume[i] = (RealVolume) ? iEma(real_volume[i],PreSmooth,i,rates_total,6) : iEma(tick_volume[i],PreSmooth,i,rates_total,6);
         double up   = (i<rates_total-1) ? prices[i]>prices[i+1] ? prices[i]-prices[i+1] : 0 : 0;
         double dn   = (i<rates_total-1) ? prices[i]<prices[i+1] ? prices[i+1]-prices[i] : 0 : 0;
         double vup  = (i<rates_total-1) ? volume[i]>volume[i+1] ? (double)(volume[i]-volume[i+1]) : 0 : 0;
         double vdn  = (i<rates_total-1) ? v

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

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

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

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

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

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

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