//+------------------------------------------------------------------+
//|                                                       CCFPEA.mq4 |
//|                                             Komgrit Sungkhaphong |
//|                               http://iamforextrader.blogspot.com |
//+------------------------------------------------------------------+
#property copyright "Komgrit Sungkhaphong"
#property link      "http://iamforextrader.blogspot.com"
#property version   "1.00"
#property strict

#define usd 0
#define eur 1
#define gbp 2
#define chf 3
#define jpy 4
#define aud 5
#define cad 6
#define nzd 7

#define  bullmax  1000
#define  bearmax  -1000

#define  bull  100
#define  bear  -100

int b,c;
string text;

int pair;
string pairname;

int current_maxind,current_minind;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   RefreshRates();
   double val[8][3];

   double roc[8];
   ArrayInitialize(val,0);
   ArrayInitialize(roc,0);

   double maxval=0,minval=0;
   int maxind=0,minind=0;
   if(b<iBars(NULL,PERIOD_M1))
     {
      text="";
      for(int i=0;i<8;i++)
        {
         double k=0;
         for(int j=0;j<3;j++)
           {
            val[i][j]=iCustom(Symbol(),0,"CCFp",i,j);
            if(j>=1)
              {
               k=k+val[i][j-1]-val[i][j];
              }
           }
         roc[i]=k;
         //roc[i]=roc[i];
        }

      for(int i=0;i<8;i++)
        {
         if(roc[i]>maxval || maxval==0)
           {
            maxval=roc[i];
            maxind=i;
           }

         if(roc[i]<minval || minval==0)
           {
            minval=roc[i];
            minind=i;
           }
         
         GlobalVariableDel("ccx"+getname(i));
         GlobalVariableSet("ccx"+getname(i),roc[i]);
           
           
        }
      for(int i=0;i<8;i++)
        {
         StringAdd(text,getname(i)+"["+IntegerToString(i)+"]"+","+DoubleToString(roc[i],Digits));
         if(i==maxind)
           {
            StringAdd(text," MAX");
            if(current_maxind!=maxind)
              {
               GlobalVariableDel("ccfp"+getname(current_maxind));
               GlobalVariableSet("ccfp"+getname(maxind),bullmax);
               current_maxind=maxind;
              }   
           }

         if(i==minind)
           {
            StringAdd(text," MIN");
            if(current_minind!=minind)
              {
               GlobalVariableDel("ccfp"+getname(current_minind));
               
               GlobalVariableSet("ccfp"+getname(minind),bearmax);
               current_minind=minind;
              }
           }
         StringAdd(text,"\n");
         
        }
      StringAdd(text,"Max="+DoubleToString(current_maxind)+"\n");
      StringAdd(text,"Min="+DoubleToString(current_minind)+"\n");
      b=iBars(NULL,PERIOD_M1);
     }


   if(c<iBars(NULL,PERIOD_H1))
     {
      string kk;
      StringAdd(kk,"MIN:"+getname(current_minind)+"MAX:"+getname(current_maxind));
      SendNotification(kk);
      c=iBars(NULL,PERIOD_H1);
     }
   
   


   Comment(text);
  }
//+------------------------------------------------------------------+


string getname(int index)
  {
   switch(index)
     {
      case  usd:  return("USD"); break;
      case  eur:  return("EUR"); break;
      case  gbp:  return("GBP"); break;
      case  chf:  return("CHF"); break;
      case  jpy:  return("JPY"); break;
      case  aud:  return("AUD"); break;
      case  cad:  return("CAD"); break;
      case  nzd:  return("NZD"); break;     
      default: return("null");   break;
     }
  }