#property copyright "© 2003-2006 AINUR, RickD"
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 DodgerBlue
#property indicator_color2 Red
//extern int MaxBars = 1000;
extern int ATRPeriod = 14;
double buf1[];
double buf2[];
double hi, lo, kr, no, kk, kn;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void init() {
  SetIndexBuffer(0, buf1);
  SetIndexBuffer(1, buf2);
  
  SetIndexStyle(0, DRAW_HISTOGRAM);
  SetIndexStyle(1, DRAW_HISTOGRAM);
  
  //SetIndexDrawBegin(0, Bars-MaxBars);
  //SetIndexDrawBegin(1, Bars-MaxBars);
     
  hi = 0;
  lo = 0;
  kr = 0;
  no = 0;
  kk = 0;
  kn = 0;
}
void start() {
  
  int counted = IndicatorCounted();
  if (counted < 0) return (-1);
  
  if (counted > 0) counted--;
  int limit = Bars-counted;
  limit = MathMin(limit, Bars-ATRPeriod);
  //limit = MathMin(limit, MaxBars);
  double ATR, cur;
    
  for (int i=limit; i >= 0; i--) {
  
    ATR = iATR(NULL, 0, ATRPeriod, i);
    cur = Open[i];
    
    if (hi == 0) hi = Open[i];
    if (lo == 0) lo = Open[i];
    if (cur > (hi+ATR)) {
      kk = MathCeil((cur-(hi+ATR))/ATR);
      //if (kk <= 1) kk = 1;
      hi = cur;
      lo = cur-ATR;
      kr = kr+kk;
      no = 0;
    }
    if (cur < (lo-ATR)) {
      kn = MathCeil(((lo-ATR)-cur)/ATR);
      //if (kn <= 1) kn = 1;
      lo = cur;
      hi = cur+ATR;
      no = no+kn;
      kr = 0;
    }
    buf1[i] = kr;
    buf2[i] = -no;
  }
  
  
}
Comments