//+------------------------------------------------------------------+
//|                                              Diff EMA 2 pairs.mq4 |
//|                                         Ronaldo Araújo de Farias |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Ronaldo Araújo de Farias"
#property link      ""

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_color2 Red

//--- input parameters
extern int       Period_EMA=1500;
extern string    Second_Pair="GBPUSD";
extern bool      Invert=false;    //Invert Second Pair
extern int       Period_SMA_Delta=50;

//--- buffers
double iDelta[];
double iSMA_Delta[];



double EMA_1st(int shift){
   return(iMA(Symbol(),0,Period_EMA,0,MODE_EMA,PRICE_CLOSE,shift));
}

double EMA_2nd(int shift){
   return(iMA(Second_Pair,0,Period_EMA,0,MODE_EMA,PRICE_CLOSE,shift));
}

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+

int init()
  {
//---- indicators
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,iDelta);
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0,iSMA_Delta);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start(){
   int i,j;
   double diff_1,diff_2 ,sum_delta;
   
   for(i=0;i<Bars;i++){   
      diff_1 = (EMA_1st(i) - iClose(Symbol(),0,i))/MarketInfo(Symbol(),MODE_POINT);
     
      if (Invert) {
         diff_2 = (1/EMA_2nd(i) - 1/iClose(Second_Pair,0,i))/MarketInfo(Second_Pair,MODE_POINT);
      }
      else{
         diff_2 = (EMA_2nd(i) - iClose(Second_Pair,0,i))/MarketInfo(Second_Pair,MODE_POINT);
      }
      
      iDelta[i]= diff_1-diff_2;
   }

   
   for(i=0;i<(Bars-Period_SMA_Delta);i++){
      sum_delta=0;
      
      for(j=0;j<Period_SMA_Delta;j++){
         sum_delta+=iDelta[i+j];
      }
      
      iSMA_Delta[i]=sum_delta/Period_SMA_Delta;
   }

   return(0);
}
//+------------------------------------------------------------------+