/// <summary> /// Decomposes the specified currency pair into a base and quote currency provided as out parameters /// </summary> /// <param name="currencyPair">The input currency pair to be decomposed</param> /// <param name="baseCurrency">The output base currency</param> /// <param name="quoteCurrency">The output quote currency</param> /// <param name="defaultQuoteCurrency">Optionally can provide a default quote currency</param> public static void DecomposeCurrencyPair(Symbol currencyPair, out string baseCurrency, out string quoteCurrency, string defaultQuoteCurrency = Currencies.USD) { IsValidSecurityType(currencyPair?.SecurityType, throwException: true); var securityType = currencyPair.SecurityType; if (securityType == SecurityType.Forex) { Forex.DecomposeCurrencyPair(currencyPair.Value, out baseCurrency, out quoteCurrency); return; } var symbolProperties = SymbolPropertiesDatabase.Value.GetSymbolProperties( currencyPair.ID.Market, currencyPair, currencyPair.SecurityType, defaultQuoteCurrency); if (securityType == SecurityType.Cfd) { Cfd.DecomposeCurrencyPair(currencyPair, symbolProperties, out baseCurrency, out quoteCurrency); } else { Crypto.DecomposeCurrencyPair(currencyPair, symbolProperties, out baseCurrency, out quoteCurrency); } }
/// <summary> /// Decomposes the specified currency pair into a base and quote currency provided as out parameters /// </summary> /// <param name="currencyPair">The input currency pair to be decomposed</param> /// <param name="baseCurrency">The output base currency</param> /// <param name="quoteCurrency">The output quote currency</param> public static void DecomposeCurrencyPair(Symbol currencyPair, out string baseCurrency, out string quoteCurrency) { if (currencyPair == null) { throw new ArgumentException("Currency pair must not be null"); } var securityType = currencyPair.SecurityType; if (securityType != SecurityType.Forex && securityType != SecurityType.Cfd && securityType != SecurityType.Crypto) { throw new ArgumentException($"Unsupported security type: {securityType}"); } if (securityType == SecurityType.Forex) { Forex.DecomposeCurrencyPair(currencyPair.Value, out baseCurrency, out quoteCurrency); return; } var symbolProperties = SymbolPropertiesDatabase.Value.GetSymbolProperties( currencyPair.ID.Market, currencyPair, currencyPair.SecurityType, Currencies.USD); if (securityType == SecurityType.Cfd) { Cfd.DecomposeCurrencyPair(currencyPair, symbolProperties, out baseCurrency, out quoteCurrency); } else { Crypto.DecomposeCurrencyPair(currencyPair, symbolProperties, out baseCurrency, out quoteCurrency); } }