//+------------------------------------------------------------------+
//|                                                 Advanced_ADX.mq4 |
//|                              Copyright © 2006, Eng. Waddah Attar |
//|                                          waddahattar@hotmail.com |
//|                              Modified by Patrick VIVES @ 2014    |
//+------------------------------------------------------------------+
#property copyright "Waddah Attar"
#property link      "waddahattar@hotmail.com"
//----
#property indicator_separate_window

#property indicator_buffers 5

#define None -1

#property indicator_color1 Red
#property indicator_color2 Red
#property indicator_color3 Red
#property indicator_color4 None
#property indicator_color5 None
//----
extern int ADXPeriod=7;
//----

double ExtBuffer1[];
double ExtBuffer2[];
double ExtBuffer3[];

double ExtBuffer4[];
double ExtBuffer5[];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
   
   IndicatorBuffers(5);
   
   SetIndexBuffer(0, ExtBuffer3);
   SetIndexStyle(0, DRAW_LINE, STYLE_SOLID);
   
   SetIndexBuffer(1, ExtBuffer2);
   SetIndexStyle(1, DRAW_LINE, STYLE_SOLID,3);
   
   SetIndexBuffer(2, ExtBuffer1);
   SetIndexStyle(2, DRAW_LINE, STYLE_SOLID);
   
   SetIndexBuffer(3, ExtBuffer4);
   SetIndexStyle(3, DRAW_LINE, STYLE_SOLID);
   
   SetIndexBuffer(4, ExtBuffer5);
   SetIndexStyle(4, DRAW_LINE, STYLE_SOLID);
//----
   IndicatorShortName("");
   SetIndexLabel(0,NULL);
   SetIndexLabel(1,NULL);
   SetIndexLabel(2,NULL);
   SetIndexLabel(3,NULL);
   SetIndexLabel(4,NULL);
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   int i, limit;
   double ADX_Cur, ADX_Pre,ADX_Plus,ADX_Minus;
   
    int counted_bars=IndicatorCounted();

   if(counted_bars < 0)
      return(-1);

   if(counted_bars > 0)
      counted_bars--;

   limit=Bars - counted_bars - ADXPeriod;
//----   
   for(i=0; i < limit;i++)
     {
      ADX_Cur=iADX(NULL, 0, ADXPeriod, PRICE_CLOSE, MODE_MAIN, i);
      ADX_Pre=iADX(NULL, 0, ADXPeriod, PRICE_CLOSE, MODE_MAIN, i+1);
      
      ADX_Plus=iADX(NULL, 0, ADXPeriod, PRICE_CLOSE, MODE_PLUSDI, i);
      ADX_Minus=iADX(NULL, 0, ADXPeriod, PRICE_CLOSE, MODE_MINUSDI, i);
      
      ExtBuffer4[i] = ADX_Plus;
      ExtBuffer5[i] = ADX_Minus;
      
       ExtBuffer3[i] = ADX_Cur;  // DarkGray
       ExtBuffer2[i] = ADX_Cur; // DarkGray
       ExtBuffer1[i] = ADX_Cur; // Aqua
    
      //----
      if(ADX_Pre > ADX_Cur)
        {
      
         ExtBuffer2[i]=EMPTY_VALUE;
         
         }
       
      else if (ADX_Pre < ADX_Cur)
        {
         ExtBuffer1[i]=EMPTY_VALUE;
        
        }
        
        else 
        {
        ExtBuffer1[i]=EMPTY_VALUE;
        ExtBuffer2[i]=EMPTY_VALUE;
     }
     
     }
   return(0);
  }
//+------------------------------------------------------------------+

