MQL5

Currencies involved in a symbol (base, profit, margin)

Extracts a symbol's currencies for relevant news filtering: on indices and metals, the profit currency (often USD) is the only usable key, since the base currency isn't actually a currency.

Prerequisites

MetaTrader 5, MQL5

MQL5
void GetNewsCurrencies(string symbol, string &currencies[])
{
   string base   = SymbolInfoString(symbol, SYMBOL_CURRENCY_BASE);
   string profit = SymbolInfoString(symbol, SYMBOL_CURRENCY_PROFIT);
   string margin = SymbolInfoString(symbol, SYMBOL_CURRENCY_MARGIN);

   ArrayResize(currencies, 0);
   string candidates[3];
   candidates[0] = base; candidates[1] = profit; candidates[2] = margin;

   string majors = "USD,EUR,GBP,JPY,CHF,CAD,AUD,NZD,CNY";
   for(int i = 0; i < 3; i++)
   {
      // Garder uniquement les vraies devises, dédupliquées
      if(StringFind(majors, candidates[i]) < 0) continue;
      bool dup = false;
      for(int j = 0; j < ArraySize(currencies); j++)
         if(currencies[j] == candidates[i]) { dup = true; break; }
      if(!dup)
      {
         int n = ArraySize(currencies);
         ArrayResize(currencies, n + 1);
         currencies[n] = candidates[i];
      }
   }
}

Result

2026.06.10 08:10:00.118  NewsKeys (US30,M5)  US30 : base="US30" profit="USD" margin="USD"
2026.06.10 08:10:00.119  NewsKeys (US30,M5)  Devises news retenues : USD ("US30" écartée, pas une devise)
2026.06.10 08:10:00.205  NewsKeys (EURUSD,M15)  EURUSD -> EUR, USD (margin USD dédupliquée)
2026.06.10 08:10:00.290  NewsKeys (XAUUSD,M5)  XAUUSD -> USD ("XAU" non listée dans les majeures)
DevisesSymbolInfoNews FilterIndices

Related snippets

Back to the Data Lab