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

vwdd_oscillator.mq5

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

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

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

О программе

Индикатор VWDD Oscillator для MetaTrader 5 рассчитывает объёмно-взвешенную дельту по каждому бару и аккумулирует её в нормализованный осциллятор, выявляя классические бычьи и медвежьи расхождения между движением цены и дельтой объёма.

На каждом баре вычисляется прокси-дельта на основе положения закрытия внутри диапазона high-low, умноженная на объём (тиковый или реальный). Накопленная дельта нормализуется через стандартное отклонение и сглаживается для формирования итогового значения осциллятора.

Отображение состоит из двухтональной гистограммы (синий/красный в зависимости от знака) и стрелок расхождений. Расхождение подтверждается при наличии разворота цены и осциллятора с заданным запаздыванием, что позволяет фильтровать ложные сигналы.

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

НастройкаОписание
InpDeltaPeriod Количество баров для накопления кумулятивной дельты объёма
InpNormPeriod Количество баров для расчёта стандартного отклонения при нормализации осциллятора
InpSmoothPeriod Период сглаживания осциллятора (количество баров)
InpVolumeType Источник объёма: тиковый объём или реальный объём (если предоставляется брокером/потоком)
InpDivLookback Количество баров с каждой стороны для подтверждения свечи разворота (фланговый анализ)
InpDivSearchRange Максимальное количество баров для поиска предыдущего свинга
InpShowArrows Включает отображение стрелок расхождений на графике
InpArrowOffset Вертикальное смещение стрелок расхождения от линии осциллятора (в единицах осциллятора)
Получить полный код

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

#property version   "1.00"
#property description "Volume-Weighted Delta Divergence Oscillator: builds a "
#property description "bar-by-bar volume delta proxy, accumulates it into a "
#property description "normalized oscillator, and flags regular bullish/bearish "
#property description "divergence between price swings and the delta."

#property indicator_separate_window
#property indicator_buffers 7
#property indicator_plots   3

#property indicator_type1   DRAW_COLOR_HISTOGRAM
#property indicator_color1  clrDodgerBlue,clrCrimson
#property indicator_width1  2
#property indicator_label1  "VWDD Oscillator"

#property indicator_type2   DRAW_ARROW
#property indicator_color2  clrLime
#property indicator_width2  2
#property indicator_label2  "Bullish Divergence"

#property indicator_type3   DRAW_ARROW
#property indicator_color3  clrOrangeRed
#property indicator_width3  2
#property indicator_label3  "Bearish Divergence"

#property indicator_level1 0.0
#property indicator_levelstyle STYLE_DOT
#property indicator_levelcolor clrGray

enum ENUM_VWDD_VOLUME
  {
   VWDD_VOL_TICK = 0,   // Tick volume
   VWDD_VOL_REAL = 1    // Real volume (if supplied by broker/feed)
  };

input int               InpDeltaPeriod    = 20;    // Cumulative delta window (bars)
input int               InpNormPeriod     = 50;     // Std-dev normalization lookback (bars)
input int               InpSmoothPeriod   = 5;       // Oscillator smoothing period (bars)
input ENUM_VWDD_VOLUME  InpVolumeType     = VWDD_VOL_TICK; // Volume source
input int               InpDivLookback    = 10;     // Swing confirmation bars (each side)
input int               InpDivSearchRange = 100;    // Max bars searched for a prior swing
input bool              InpShowArrows     = true;   // Show divergence arrows
input double            InpArrowOffset    = 0.30;   // Arrow vertical offset (oscillator units)

double OscBuffer[];        // plot 0 - final smoothed oscillator (visible)
double OscColorBuffer[];   // plot 0 - color index (visible)
double ArrowUpBuffer[];    // plot 1 - bullish divergence arrow (visible)
double ArrowDownBuffer[];  // plot 2 - bearish divergence arrow (visible)
double DeltaBuffer[];      // calc  - raw per-bar volume delta
double CumDeltaBuffer[];   // calc  - rolling cumulative delta
double RawOscBuffer[];     // calc  - normalized oscillator before smoothing

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

double CalcStdDev(const double &arr[],const int idx,const int period)
  {
   double mean=0.0;
   for(int k=idx;k>=idx-period+1;k--)
      mean+=arr[k];
   mean/=period;

   double var=0.0;
   for(int k=idx;k>=idx-period+1;k--)
     {
      double d=arr[k]-mean;
      var+=d*d;
     }
   var/=period;

   return(MathSqrt(var));
  }

bool IsSwingHigh(const double &high[],const int idx,const int lookback,const int total)
  {
   if(idx-lookback<0 || idx+lookback>total-1)
      return(false);

   double h=high[idx];
 

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

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

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

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

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

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

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