Corr





//+------------------------------------------------------------------+
//|                                                         Corr.mq4 |
//|                                                             Nike |
//|                                              http://www.mql4.com |
//+------------------------------------------------------------------+
#property copyright "Nike"
#property link      "http://www.mql4.com"
//----
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red
//---- input parameters
extern int CorrLen = 7;
//---- buffers
double ExtMapBuffer[];
double Buffer1[];
double Buffer2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   IndicatorBuffers(3);
   SetIndexStyle(0, DRAW_LINE, EMPTY, 2);
   SetIndexBuffer(0, ExtMapBuffer);
   SetIndexBuffer(1, Buffer1);
   SetIndexBuffer(2, Buffer2);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator start function                                  |
//+------------------------------------------------------------------+
int start()
  {
   for(int i = 0; i < Bars; i++)
       ExtMapBuffer[i] = Close[i] - Open[i];  
//----
   for(i = 0; i < Bars - CorrLen; i++)
       ExtMapBuffer[i] = corr(ExtMapBuffer, i, CorrLen);
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double corr(double& a[], int start, int len)
  {
   double m1 = 0; 
   double m2 = 0; 
   double m1_2 = 0; 
   double m2_2 = 0; 
   double m12 = 0;
//----
   for(int i = 0; i < len; i++)
     {
       m1 = m1 + a[i];
       m2 = m2 + a[start + i];
       m1_2 = m1_2 + a[i]*a[i];
       m2_2 = m2_2 + a[start + i]*a[start + i];
       m12 = m12 + a[i]*a[start + i];
     }
   m1 = m1/len;
   m2 = m2/len;
   m1_2 = m1_2/len;
   m2_2 = m2_2/len;
   m12 = m12/len;
   if((m1_2 - m1*m1)*(m2_2 - m2*m2) == 0) 
       return(0);
   return((m12 - m1*m2) / MathSqrt(MathAbs((m1_2 - m1*m1)*(m2_2 - m2*m2))));
}
//+------------------------------------------------------------------+



Sample





Analysis



Market Information Used:

Series array that contains close prices for each bar
Series array that contains open prices of each bar


Indicator Curves created:

Implements a curve of type DRAW_LINE


Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Other Features: