//+------------------------------------------------------------------+
//|       TRO MACD DIFF                                              |
//|                                                                  |
//|   Copyright � 2008, Avery T. Horton, Jr. aka TheRumpledOne       |
//|                                                                  |
//|   PO BOX 43575, TUCSON, AZ 85733                                 |
//|                                                                  |
//|   GIFTS AND CONTRIBUTIONS ACCEPTED                               | 
//|                                                                  |
//|   therumpledone@gmail.com                                        |  
//+------------------------------------------------------------------+ 

#property  copyright "Copyright � 2008, Avery T. Horton, Jr. aka TRO" 
#property  link      "http://www.therumpledone.com/" 
 
#property  indicator_separate_window
#property  indicator_buffers 1
#property  indicator_color1  Lime
 

#property indicator_width1 3
 



//---- indicator parameters
 

string note1 = "----------------------";
string note2 = "Fast Moving Average";
int FastMA=6;
string note3 = "0=Simple,1=Exponential";
string note4 = "2=Smooth,3=Linear Weighted";
int FastMA_Method=1;
string note5 = "----------------------";
string note6 = "Slow Moving Average";
int SlowMA=240;
string note7 = "0=Simple,1=Exponential";
string note8 = "2=Smooth,3=Linear Weighted";
int SlowMA_Method=3;
string note9 = "----------------------";
string note10 = "Signal Moving Average";
int SignalMA=0;
string note11 = "0=Simple,1=Exponential";
string note12 = "2=Smooth,3=Linear Weighted";
int SignalMA_Method=1;

 


//---- indicator buffers
double     ind_buffer0[];
 
 
 
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
  string FastMAname, SlowMAname, SignalMAname;
//---- 2 additional buffers are used for counting.
//   IndicatorBuffers(8);
//---- drawing settings

   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexDrawBegin(0,ind_buffer0); 
   

    SetIndexBuffer(0,ind_buffer0) ;
   
 
     
//---- name for DataWindow and indicator subwindow label

   switch(FastMA_Method)
     {
      case 1 : FastMAname="EMA";  break;
      case 2 : FastMAname="SMMA"; break;
      case 3 : FastMAname="LWMA"; break;
      default :
         FastMA_Method=0;
         FastMAname="SMA";
     }
   switch(SlowMA_Method)
     {
      case 1 : SlowMAname="EMA";  break;
      case 2 : SlowMAname="SMMA"; break;
      case 3 : SlowMAname="LWMA"; break;
      default :
         SlowMA_Method=0;
         SlowMAname="SMA";
     }
   switch(SignalMA_Method)
     {
      case 1 : SignalMAname="EMA";  break;
      case 2 : SignalMAname="SMMA"; break;
      case 3 : SignalMAname="LWMA"; break;
      default :
         SignalMAname=0;
         SignalMAname="SMA";
     }

   
         
   return(0);
  }

//+------------------------------------------------------------------+  
int deinit()
  {

   return(0);
  }  
  
//+------------------------------------------------------------------+

int start()
  {
  
   
   int limit;
   int counted_bars=IndicatorCounted();
//---- check for possible errors
   if(counted_bars<0) return(-1);
//---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
   
//---- macd counted in the 1-st additional buffer

   for(int i=0; i<limit; i++)
   {
      ind_buffer0[i]=iMA(NULL,0,FastMA,0,FastMA_Method,PRICE_CLOSE,i)
                        -iMA(NULL,0,SlowMA,0,SlowMA_Method,PRICE_CLOSE,i);
        
   }   
   
return(0);
}

/*

extern string note1 = "----------------------";
extern string note2 = "Fast Moving Average";
extern int FastMA=6;
extern string note3 = "0=Simple,1=Exponential";
extern string note4 = "2=Smooth,3=Linear Weighted";
extern int FastMA_Method=1;
extern string note5 = "----------------------";
extern string note6 = "Slow Moving Average";
extern int SlowMA=240;
extern string note7 = "0=Simple,1=Exponential";
extern string note8 = "2=Smooth,3=Linear Weighted";
extern int SlowMA_Method=3;
extern string note9 = "----------------------";
extern string note10 = "Signal Moving Average";
extern int SignalMA=0;
extern string note11 = "0=Simple,1=Exponential";
extern string note12 = "2=Smooth,3=Linear Weighted";
extern int SignalMA_Method=1;


*/