Названия валютных пар, какие варианты бывают? - страница 3

 
Mikhail Sergeev:

Например: эксперт на EURUSD использует MA5,  на GBPUSD использует  MA7. И чтобы работало у всех брокеров.

Может есть другой способ это реализовать?

Да есть вариант реализации.  читаем имя пары в строку, затем ищем в строке EUR затем USD и все.

И как бы пара не называлась , советник понимает -  что он работает на евро-долларе.

 

Может кому пригодится, написал для себя функцию поиска префикса и постфикса для текущего брокера:

//+-----------------------------------------------------------------------------------------------+
void FindBrokerPrefixPostfix() { //поиск префикса, постфикса брокера
   
   string BrokerPrefix = "", BrokerPostfix = "";
   
   int smbls = SymbolsTotal(false);
   for(int i=0; i<smbls; i++){
      string symbol = SymbolName(i,false);
      int n = StringFind(symbol,"EURUSD",0);
      
      if(n > -1) {
         if(n == 0) BrokerPrefix = "";
         else BrokerPrefix = StringSubstr(symbol,0,n);
         
         BrokerPostfix = StringSubstr(symbol,n+6,0);
         
         Print("Symbol: " + symbol + "| BrokerPrefix: " + (BrokerPrefix == "" ? "No" : BrokerPrefix) + "| BrokerPostfix: " + (BrokerPostfix == "" ? "No" : BrokerPostfix));
         break;
      }
   }
}
 
Roman Starostin:

Может кому пригодится, написал для себя функцию поиска префикса и постфикса для текущего брокера:

Немного переделать можно

  int OnInit() {
   string tSymb=FillSymb[d]; // EURUSD
   string rSymb=""; // реальный
   if(RealSymbol(tSymb,rSymb)) {
    ...
   }

//===============================================================================================
//------------------------ Преобразование символа к терминальному виду -------------------------+
//===============================================================================================
bool RealSymbol(string temp,string& real) {
 int cn=SymbolsTotal(false);
  for(int i=0;i<cn;i++) {
   string symb=SymbolName(i,false);
   if(StringFind(symb,temp,0)>-1) {
    real=symb;
    return(true);
  }}
  return(false);
 }
Причина обращения: