//+------------------------------------------------------------------+
//|                                                ADX_smz_basic.mq4 |
//|                      Copyright © 2005, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
//2008fxtsd    ki
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"

#property indicator_separate_window
#property indicator_buffers 6

#property indicator_color1 C'69,69,69'//DarkGray
#property indicator_color2 Gray
#property indicator_color3 C'0,64,0'//DarkGreen
#property indicator_color4 ForestGreen
#property indicator_color5 C'98,0,0'//Maroon
#property indicator_color6 Red

//#property indicator_style1 2
//#property indicator_style3 2
//#property indicator_style5 2

#property indicator_level1 20

//---- 
extern int ADXPeriod=14, DiPlusPeriod = 34, DiMinusPeriod=34;
extern int ADXSmzPeriod=2, DiPlusSmzPeriod = 3, DiMinusSmzPeriod=3;
extern int ADXSmzMode=1, DiPlusSmzMode = 1, DiMinusSmzMode=1;

extern string   SmzMA_Method_ = "SMA0 EMA1 SMMA2 LWMA3";


double ADXBuffer[];
double ADXSmzBuffer[];

double PlusDiBuffer[];
double PlusDiSmzBuffer[];

double MinusDiBuffer[];
double MinusDiSmzBuffer[];


//+------------------------------------------------------------------+

int init()
  {
//---- 
   IndicatorBuffers(6);
 
   SetIndexBuffer(0,ADXBuffer);
   SetIndexBuffer(1,ADXSmzBuffer);

   SetIndexBuffer(2,PlusDiBuffer);
   SetIndexBuffer(3,PlusDiSmzBuffer);

   SetIndexBuffer(4,MinusDiBuffer);
   SetIndexBuffer(5,MinusDiSmzBuffer);

//---- 
   IndicatorShortName("ADX ("+ADXPeriod+", DI-: "+DiMinusPeriod+", DI+: "+DiPlusPeriod+") ");
   
   SetIndexLabel(0,"ADX");
   SetIndexLabel(1,"ADXsmz");
   SetIndexLabel(2,"+DI");
   SetIndexLabel(3,"+DIsmz");
   SetIndexLabel(4,"-DI");
   SetIndexLabel(5,"-DIsmz");



   SetIndexDrawBegin(0,ADXPeriod);
   SetIndexDrawBegin(1,ADXPeriod);
   SetIndexDrawBegin(2,ADXPeriod);
   SetIndexDrawBegin(3,ADXPeriod);
   SetIndexDrawBegin(4,ADXPeriod);
   SetIndexDrawBegin(5,ADXPeriod);


   return(0);
  }
//+----

int start()
{
   int  counted_bars=IndicatorCounted();
   int  i,limit;

   if(counted_bars < 0) return(-1);
   if(counted_bars > 0) counted_bars--;
           limit = Bars-counted_bars;


   for(i=limit; i>=0; i--)
      {  
      ADXBuffer[i]     =  iADX(NULL,0,ADXPeriod,PRICE_CLOSE,MODE_MAIN,i);
      PlusDiBuffer[i]  =  iADX(NULL,0,ADXPeriod,PRICE_CLOSE,MODE_PLUSDI,i);
      MinusDiBuffer[i] =  iADX(NULL,0,ADXPeriod,PRICE_CLOSE,MODE_MINUSDI,i);
     
      }
     
  
    for(i=limit; i>=0; i--)
      {  
      ADXSmzBuffer[i]      =  iMAOnArray(ADXBuffer,0,ADXSmzPeriod,0,ADXSmzMode,i);
      PlusDiSmzBuffer[i]   =  iMAOnArray(PlusDiBuffer,0,DiPlusSmzPeriod,0,DiPlusSmzMode,i);
      MinusDiSmzBuffer[i]  =  iMAOnArray(MinusDiBuffer,0,DiMinusSmzPeriod,0,DiMinusSmzMode,i);

      }


//----

   return(0);
 }
 

//+------------------------------------------------------------------+

