//+------------------------------------------------------------------+
//|                                             Currencies Range.mq4 |
//|                     Copyright © 2016, www.tradingsystemforex.com |
//+------------------------------------------------------------------+
#property copyright "TradingSystemForex.com"
#property link      "http://www.tradingsystemforex.com"

#property indicator_chart_window


int lastchange=0;
int lastmove=0;
datetime newbar;

string lastmovestr;
int up,dn;

int dg,factorpoint;
double point;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init() 
{
   
   if(Digits<=3)dg=2;else dg=4;
   if(Digits<=3)point=0.01;
   
   if(Digits==5){dg=4;point=0.0001;factorpoint=10;}
   if(Digits==4){dg=4;point=0.0001;factorpoint=1;}
   if(Digits==3){dg=2;point=0.01;factorpoint=10;}
   if(Digits==2){dg=2;point=0.01;factorpoint=1;}
   if(Digits==1){dg=1;point=0.1;factorpoint=1;}
   return(0);
}

//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
{
   return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start(){
   
   int EURUSD=0,GBPUSD=1,USDJPY=2,USDCHF=3,USDCAD=4,AUDUSD=5,NZDUSD=6,EURGBP=7,EURAUD=8,EURCHF=9,EURJPY=10,GBPCHF=11,CADJPY=12,GBPJPY=13,AUDNZD=14,
   AUDCAD=15,AUDCHF=16,AUDJPY=17,CHFJPY=18,EURNZD=19,EURCAD=20,CADCHF=21,NZDJPY=22,GBPAUD=23,GBPCAD=24,GBPNZD=25,NZDCAD=26,NZDCHF=27,GOLD=28,SILVER=29;
   
   string currencies[]={"EURUSD","GBPUSD","USDJPY","USDCHF","USDCAD","AUDUSD","NZDUSD","EURGBP","EURAUD","EURCHF","EURJPY","GBPCHF","CADJPY","GBPJPY","AUDNZD"
   ,"AUDCAD","AUDCHF","AUDJPY","CHFJPY","EURNZD","EURCAD","CADCHF","NZDJPY","GBPAUD","GBPCAD","GBPNZD","NZDCAD","NZDCHF","XAUUSD","XAGUSD"};
   int num_array[29][2];
   ArrayInitialize(num_array,0);

   num_array[0][1]=EURUSD;num_array[0][0]=NormalizeDouble((iHigh("EURUSD",1440,0)-iLow("EURUSD",1440,0))/(MarketInfo("EURUSD",MODE_POINT)*factorpoint),0);
   num_array[1][1]=GBPUSD;num_array[1][0]=NormalizeDouble((iHigh("GBPUSD",1440,0)-iLow("GBPUSD",1440,0))/(MarketInfo("GBPUSD",MODE_POINT)*factorpoint),0);
   num_array[2][1]=USDJPY;num_array[2][0]=NormalizeDouble((iHigh("USDJPY",1440,0)-iLow("USDJPY",1440,0))/(MarketInfo("USDJPY",MODE_POINT)*factorpoint),0);
   num_array[3][1]=USDCHF;num_array[3][0]=NormalizeDouble((iHigh("USDCHF",1440,0)-iLow("USDCHF",1440,0))/(MarketInfo("USDCHF",MODE_POINT)*factorpoint),0);
   num_array[4][1]=USDCAD;num_array[4][0]=NormalizeDouble((iHigh("USDCAD",1440,0)-iLow("USDCAD",1440,0))/(MarketInfo("USDCAD",MODE_POINT)*factorpoint),0);
   num_array[5][1]=AUDUSD;num_array[5][0]=NormalizeDouble((iHigh("AUDUSD",1440,0)-iLow("AUDUSD",1440,0))/(MarketInfo("AUDUSD",MODE_POINT)*factorpoint),0);
   num_array[6][1]=NZDUSD;num_array[6][0]=NormalizeDouble((iHigh("NZDUSD",1440,0)-iLow("NZDUSD",1440,0))/(MarketInfo("NZDUSD",MODE_POINT)*factorpoint),0);
   num_array[7][1]=EURGBP;num_array[7][0]=NormalizeDouble((iHigh("EURGBP",1440,0)-iLow("EURGBP",1440,0))/(MarketInfo("EURGBP",MODE_POINT)*factorpoint),0);
   num_array[8][1]=EURAUD;num_array[8][0]=NormalizeDouble((iHigh("EURAUD",1440,0)-iLow("EURAUD",1440,0))/(MarketInfo("EURAUD",MODE_POINT)*factorpoint),0);
   num_array[9][1]=EURCHF;num_array[9][0]=NormalizeDouble((iHigh("EURCHF",1440,0)-iLow("EURCHF",1440,0))/(MarketInfo("EURCHF",MODE_POINT)*factorpoint),0);
   num_array[10][1]=EURJPY;num_array[10][0]=NormalizeDouble((iHigh("EURJPY",1440,0)-iLow("EURJPY",1440,0))/(MarketInfo("EURJPY",MODE_POINT)*factorpoint),0);
   num_array[11][1]=GBPCHF;num_array[11][0]=NormalizeDouble((iHigh("GBPCHF",1440,0)-iLow("GBPCHF",1440,0))/(MarketInfo("GBPCHF",MODE_POINT)*factorpoint),0);
   num_array[12][1]=CADJPY;num_array[12][0]=NormalizeDouble((iHigh("CADJPY",1440,0)-iLow("CADJPY",1440,0))/(MarketInfo("CADJPY",MODE_POINT)*factorpoint),0);
   num_array[13][1]=GBPJPY;num_array[13][0]=NormalizeDouble((iHigh("GBPJPY",1440,0)-iLow("GBPJPY",1440,0))/(MarketInfo("GBPJPY",MODE_POINT)*factorpoint),0);
   num_array[14][1]=AUDNZD;num_array[14][0]=NormalizeDouble((iHigh("AUDNZD",1440,0)-iLow("AUDNZD",1440,0))/(MarketInfo("AUDNZD",MODE_POINT)*factorpoint),0);
   num_array[15][1]=AUDCAD;num_array[15][0]=NormalizeDouble((iHigh("AUDCAD",1440,0)-iLow("AUDCAD",1440,0))/(MarketInfo("AUDCAD",MODE_POINT)*factorpoint),0);
   num_array[16][1]=AUDCHF;num_array[16][0]=NormalizeDouble((iHigh("AUDCHF",1440,0)-iLow("AUDCHF",1440,0))/(MarketInfo("AUDCHF",MODE_POINT)*factorpoint),0);
   num_array[17][1]=AUDJPY;num_array[17][0]=NormalizeDouble((iHigh("AUDJPY",1440,0)-iLow("AUDJPY",1440,0))/(MarketInfo("AUDJPY",MODE_POINT)*factorpoint),0);
   num_array[18][1]=CHFJPY;num_array[18][0]=NormalizeDouble((iHigh("CHFJPY",1440,0)-iLow("CHFJPY",1440,0))/(MarketInfo("CHFJPY",MODE_POINT)*factorpoint),0);
   num_array[19][1]=EURNZD;num_array[19][0]=NormalizeDouble((iHigh("EURNZD",1440,0)-iLow("EURNZD",1440,0))/(MarketInfo("EURNZD",MODE_POINT)*factorpoint),0);
   num_array[20][1]=EURCAD;num_array[20][0]=NormalizeDouble((iHigh("EURCAD",1440,0)-iLow("EURCAD",1440,0))/(MarketInfo("EURCAD",MODE_POINT)*factorpoint),0);
   num_array[21][1]=CADCHF;num_array[21][0]=NormalizeDouble((iHigh("CADCHF",1440,0)-iLow("CADCHF",1440,0))/(MarketInfo("CADCHF",MODE_POINT)*factorpoint),0);
   num_array[22][1]=NZDJPY;num_array[22][0]=NormalizeDouble((iHigh("NZDJPY",1440,0)-iLow("NZDJPY",1440,0))/(MarketInfo("NZDJPY",MODE_POINT)*factorpoint),0);
   num_array[23][1]=GBPAUD;num_array[23][0]=NormalizeDouble((iHigh("GBPAUD",1440,0)-iLow("GBPAUD",1440,0))/(MarketInfo("GBPAUD",MODE_POINT)*factorpoint),0);
   num_array[24][1]=GBPCAD;num_array[24][0]=NormalizeDouble((iHigh("GBPCAD",1440,0)-iLow("GBPCAD",1440,0))/(MarketInfo("GBPCAD",MODE_POINT)*factorpoint),0);
   num_array[25][1]=NZDCAD;num_array[25][0]=NormalizeDouble((iHigh("NZDCAD",1440,0)-iLow("NZDCAD",1440,0))/(MarketInfo("NZDCAD",MODE_POINT)*factorpoint),0);
   num_array[26][1]=NZDCHF;num_array[26][0]=NormalizeDouble((iHigh("NZDCHF",1440,0)-iLow("NZDCHF",1440,0))/(MarketInfo("NZDCHF",MODE_POINT)*factorpoint),0);
   num_array[27][1]=GOLD;num_array[27][0]=NormalizeDouble((iHigh("XAUUSD",1440,0)-iLow("XAUUSD",1440,0))/(MarketInfo("XAUUSD",MODE_POINT)*factorpoint),0);
   num_array[28][1]=SILVER;num_array[28][0]=NormalizeDouble((iHigh("XAGUSD",1440,0)-iLow("XAGUSD",1440,0))/(MarketInfo("XAGUSD",MODE_POINT)*factorpoint),0);

/*
   string text="Unsorted: ";
   for(int j=0;j<ArrayRange(num_array,0);j++)
      text=text+"\n "+currencies[num_array[j][1]]+" has a strength of " + num_array[j][0];
   //text=StringSubstr(text,0,StringLen(text)-2);
   Comment(text);
*/
   ArraySort(num_array,WHOLE_ARRAY,0,MODE_DESCEND);
   string text="";//Sorted (decending): ";
   for(int j=0;j<29;j++)
   text=text+"\n "+currencies[num_array[j][1]] + " (" + num_array[j][0]+")"/* + ", "*/;
   //text=StringSubstr(text,0,StringLen(text)-2);   //removing last comma
   Comment("\n Currencies range :"+"\n"+text);

   /*
   ArraySort(num_array);
   text = "Sorted (ascending): ";
   for (j = 0; j < ArrayRange(num_array, 0); j++)
   text = text + currencies[num_array[j][1]] + " has a strength of " + num_array[j][0] + ", ";
   text = StringSubstr(text, 0, StringLen(text)-2);   //removing last comma
   Print (text);
   
   ArraySort(num_array, WHOLE_ARRAY, 0, MODE_DESCEND);
   text = "Sorted (decending): ";
   for (j = 0; j < ArrayRange(num_array, 0); j++)
   text = text + currencies[num_array[j][1]] + " has a strength of " + num_array[j][0] + ", ";
   text = StringSubstr(text, 0, StringLen(text)-2);   //removing last comma
   Print (text);
   */
   /*
   if(lastmove==1)lastmovestr="UP";
   if(lastmove==2)lastmovestr="DN";
   Comment(
   "\n UP : "+up,
   "\n DN : "+dn
   
   );
   */
   return(0);
}
//+------------------------------------------------------------------+