//+------------------------------------------------------------------+
//|                                                        i-DNB.mq4 |
//|                                           Ким Игорь В. aka KimIV |
//|                                              http://www.kimiv.ru |
//|                                                                  |
//|  30.06.2006 Индикатор разности H-H и L-L между соседними барами. |
//+------------------------------------------------------------------+
#property copyright "Ким Игорь В. aka KimIV"
#property link      "http://www.kimiv.ru"

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 CornflowerBlue
#property indicator_color2 Salmon
#property indicator_level1 0
#property indicator_width1 2
#property indicator_width2 2

//------- Внешние параметры Индикатора -------------------------------
extern int DPeriod      = 14;     // Период сглаживания
extern int NumberOfBars = 1000;   // Количество баров обсчёта (0-все)

//------- Буферы индикатора ------------------------------------------
double dBuf0[], dBuf1[], TmpBuf0[], TmpBuf1[];


//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void init() {
  IndicatorBuffers(4);
  IndicatorShortName("i-DNB("+DPeriod+")");

  SetIndexBuffer    (0, dBuf0);
  SetIndexEmptyValue(0, 0);
  SetIndexLabel     (0, "High0-High1");
  SetIndexStyle     (0, DRAW_LINE);

  SetIndexBuffer    (1, dBuf1);
  SetIndexEmptyValue(1, 0);
  SetIndexLabel     (1, "Low0-Low1");
  SetIndexStyle     (1, DRAW_LINE);

  SetIndexBuffer(2, TmpBuf0);
  SetIndexBuffer(3, TmpBuf1);
}

//+------------------------------------------------------------------+
//| Average True Range                                               |
//+------------------------------------------------------------------+
void start() {
  int i, LoopBegin;

 	if (NumberOfBars==0) LoopBegin=Bars-1;
  else LoopBegin=NumberOfBars;
  LoopBegin=MathMin(LoopBegin, Bars-1);

  for (i=0; i<=LoopBegin; i++) {
    TmpBuf0[i]=High[i]-High[i+1];
    TmpBuf1[i]=Low[i]-Low[i+1];
  }
  for (i=0; i<=LoopBegin-DPeriod; i++) {
    dBuf0[i]=iMAOnArray(TmpBuf0, 0, DPeriod, 0, MODE_SMA, i);
    dBuf1[i]=iMAOnArray(TmpBuf1, 0, DPeriod, 0, MODE_SMA, i);
  }
}
//+------------------------------------------------------------------+

