//---- indicator settings
#property  indicator_separate_window
#property  indicator_buffers 2
#property  indicator_color1  LimeGreen
#property  indicator_color2  Red
#property  indicator_width1  2
#property  indicator_width2  2

//---- indicator parameters
extern	int	FastATR		= 5;
extern	int	SlowATR		= 25;
//---- indicator buffers
double	ATRPos[],ATRNeg[];
int	ThisPeriod;
int	Ratio;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init() {
	string	name;
	SetIndexStyle(0,DRAW_HISTOGRAM);
	SetIndexBuffer(0,ATRPos);
	SetIndexLabel(0,"ATRPos");
	
	SetIndexStyle(1,DRAW_HISTOGRAM);
	SetIndexBuffer(1,ATRNeg);
	SetIndexLabel(1,"ATRNeg");
 
	IndicatorDigits(0);
	IndicatorShortName(name + " xAtr ("+FastATR+","+SlowATR+")");
	return(0);
}
int deinit() {
	 
	return(0);
}
//+------------------------------------------------------------------+
//| Moving Averages Convergence/Divergence                           |
//+------------------------------------------------------------------+
int counted_bars;

int start() {

	counted_bars=IndicatorCounted();
	if(counted_bars>0) counted_bars--;

	for (int i=Bars-counted_bars; i>=0; i--) 
	{	 
   
     double ATR_Diff = GetAtrDiff(FastATR,SlowATR, i);
		if (ATR_Diff > 0) {
			ATRPos[i] = ATR_Diff;
			ATRNeg[i] = 0;
		} else {
			ATRPos[i] = 0;
			ATRNeg[i] = ATR_Diff;
		}		
	}

	return(0);
}

double GetAtrDiff(int fastATR, int slowAtr, int i)
{ 
    double atrFast=10000 * MathRound(iATR(NULL,0,fastATR,i)/Point);
    double atrSlow=10000 * MathRound(iATR(NULL,0,slowAtr,i)/Point);
    return (atrFast - atrSlow);
}
    