//+------------------------------------------------------------------+
//|                                       PIN_GVC_CURRENCY METER.mq4 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+

#property copyright "Copyright 2020,CrazyTrader."
#property link      "http://crazytraderfx.com"
#property version   "1.00"
#property strict
#property indicator_chart_window


#import "shell32.dll"
int ShellExecuteW(int hwnd,string Operation,string File,string Parameters,string Directory,int ShowCmd);
#import
//////

extern int PIN_ID = 4;
extern ENUM_TIMEFRAMES RunTF = PERIOD_D1; // Signaling timeframe
extern bool SortDecending = true;
extern bool Reverse_Signals = false;


string ccy[] = { "AUD", "CAD", "CHF", "EUR", "GBP", "JPY", "NZD", "USD"};   // 8  currencies

string symbols[] = { "AUDCAD","AUDCHF","AUDJPY","AUDNZD","AUDUSD","CADCHF","CADJPY","CHFJPY","EURAUD","EURCAD","EURCHF","EURGBP","EURJPY","EURNZD","EURUSD","GBPAUD","GBPCAD","GBPCHF","GBPJPY","GBPNZD","GBPUSD","NZDCAD","NZDCHF","NZDJPY","NZDUSD","USDCAD","USDCHF","USDJPY" };// 28 pairs
int signal,i;

string IndiName, z[8];

int PinLong, PinShort;

int Timer_sec = 1;

#define NONE 0
#define CROSSUP 1
#define CROSSDOWN 2
#define ABOVE 1
#define BELOW 2
#define TF RunTF
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  { 
  IndiName = " PIN_GVC_CURRENCY METER";
  IndicatorShortName(IndiName);
  
   EventSetTimer(Timer_sec);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
int start()  {
//+------------------------------------------------------------------+
   
   CreatePin();
return(0);
  }



void OnDeinit(const int reason)
{
   for (uchar i=0;i<ArraySize(symbols);i++)
      if(GlobalVariableCheck(symbols[i]+"pin"+IntegerToString(PIN_ID)))
         GlobalVariableDel(symbols[i]+"pin"+IntegerToString(PIN_ID));
}


/////////////////////////////////
void CreatePin(){
   
      for (i=0;i<8;i++) {
 
 
 double GetStrengthValue(string ccy)   {
  double strength_value = -1;
  for (int z=0; z<8; z++)  {
    string objname = "CurrencyStrength--00000" + z;
    string objdesc = ObjectDescription(objname);
    if (StringSubstr(objdesc,0,3)==ccy)    {
      strength_value = StrToDouble(StringSubstr(objdesc,4,2));
      break;
  } }
  return(strength_value);
}
 
/* 
 string objname = "CurrencyStrength--00000";
    string objdesc = ObjectDescription(objname);
    strength_value = StrToDouble(StringSubstr(objdesc,4,2));
    
  */  
  
 // Calculate Strength  values
  double aud = strength_value;
  double cad = strength_value;
  double chf = strength_value;
  double eur = strength_value;
  double gbp = strength_value;
  double jpy = strength_value;
  double nzd = strength_value;
  double usd = strength_value;
  
  string a = "AUD";
  aud = GetStrengthValue(a); 
  string c = "CAD";
  cad = GetStrengthValue(c);
  string f = "CHF";
  chf = GetStrengthValue(f);
  string e = "EUR";
  eur = GetStrengthValue(e);
  string g = "GBP";
  gbp = GetStrengthValue(g);
  string j = "JPY";
  jpy = GetStrengthValue(j);
  string n = "NZD";
  nzd = GetStrengthValue(n);
  string u = "USD";
  usd = GetStrengthValue(u);
  
 // object name 
  z[0] = "CurrencyStrength--000000" + (GetStrengthValue(string ccy):
  z[1] = "CurrencyStrength--000001" + (GetStrengthValue(string ccy):
  z[2] = "CurrencyStrength--000002" + (GetStrengthValue(string ccy):
  z[3] = "CurrencyStrength--000003" + (GetStrengthValue(string ccy):
  z[4] = "CurrencyStrength--000004" + (GetStrengthValue(string ccy):
  z[5] = "CurrencyStrength--000005" + (GetStrengthValue(string ccy):
  z[6] = "CurrencyStrength--000006" + (GetStrengthValue(string ccy):
  z[7] = "CurrencyStrength--000007" + (GetStrengthValue(string ccy):
  
  
      // Ranking Strength of Currency
  string RSICurr1 = StringSubstr(z[0],3,3);  
      
  string StrongCurr1 = StringSubstr(z[0],3,3);
  string StrongCurr2 = StringSubstr(z[1],3,3);
  
  string WeakCurr7 = StringSubstr(z[6],3,3);
  string WeakCurr8 = StringSubstr(z[7],3,3); 
  
  //StringToLower(StrongCurr1); StringToLower(StrongCurr2); StringToLower(WeakCurr7); StringToLower(WeakCurr8);
 
  if( Reverse_Signals ) {  PinLong = 2;  PinShort = 1;} else { PinLong = 1; PinShort = 2;}
  // Pins
  GlobalVariableSet(StrongCurr1+WeakCurr8+"pin"+PIN_ID,PinLong ); GlobalVariableSet(StrongCurr1+WeakCurr7+"pin"+PIN_ID,PinLong );
  GlobalVariableSet(StrongCurr2+WeakCurr8+"pin"+PIN_ID,PinLong ); GlobalVariableSet(StrongCurr2+WeakCurr7+"pin"+PIN_ID,PinLong );
  
  GlobalVariableSet(WeakCurr8+StrongCurr1+"pin"+PIN_ID,PinShort ); GlobalVariableSet(WeakCurr7+StrongCurr1+"pin"+PIN_ID,PinShort );
  GlobalVariableSet(WeakCurr8+StrongCurr2+"pin"+PIN_ID,PinShort ); GlobalVariableSet(WeakCurr7+StrongCurr2+"pin"+PIN_ID,PinShort );
  // Print("Curr1 = ",StrongCurr1," Curr2 = ",StrongCurr2," Curr7 = ",WeakCurr7," Curr8 = ",WeakICurr8 );
  
  
  // Ranking Strenght Currency Values
  string StrongCurr1_v = StringSubstr(L[0],0,2);
  string StrongCurr2_v = StringSubstr(L[1],0,2);
  
  string WeakCurr7_v = StringSubstr(L[6],0,2);
  string WeakCurr8_v = StringSubstr(L[7],0,2);
//Print("Curr1=",StrongCurr1_v,"Curr2=",StrongCurr2_v,"Curr7=",WeakCurr7_v,"Curr8=",WeakCurr8_v);
 
 
 
 
 
 
 
 
   
/*   RSI =  iRSI(symbols[i],RunTF,rsi_period,rsi_applied,0); 
 
   // Default 
   GlobalVariableSet(StringSubstr(symbols[i],0,6)+"pin"+PIN_ID,0);
   
   if( Reverse_Signals ) {  PinLong = 2;  PinShort = 1;} else { PinLong = 1; PinShort = 2;}
          
         if (RSI>BuyLevel){ // ->Go Long
            GlobalVariableSet(StringSubstr(symbols[i],0,6)+"pin"+PIN_ID,PinLong);}
         
         else{
         if (RSI<SellLevel){ // ->Go Short 
               GlobalVariableSet(StringSubstr(symbols[i],0,6)+"pin"+PIN_ID,PinShort);}
               
               */
               }
        
   }
   
 //}
 
 
 