Skip to content

Commit 5001ea2

Browse files
committed
Fix Binance ExchangeMarketSymbolToGlobalMarketSymbolAsync
Fix incorrect global symbol mapping when the quote currency is not BTC, ETH, BNB, or USDT.
1 parent cd418d7 commit 5001ea2

File tree

1 file changed

+12
-32
lines changed

1 file changed

+12
-32
lines changed

src/ExchangeSharp/API/Exchanges/BinanceGroup/BinanceGroupCommon.cs

Lines changed: 12 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -74,46 +74,26 @@ protected BinanceGroupCommon()
7474
RateLimit = new RateGate(40, TimeSpan.FromSeconds(10));
7575
}
7676

77+
protected virtual string[] NonThreeLetterQuoteCurrencies => new[] { "USDT", "USDC", "EURI" };
78+
7779
public override Task<string> ExchangeMarketSymbolToGlobalMarketSymbolAsync(
7880
string marketSymbol
7981
)
8082
{
81-
// All pairs in Binance end with BTC, ETH, BNB or USDT
82-
if (
83-
marketSymbol.EndsWith("BTC")
84-
|| marketSymbol.EndsWith("ETH")
85-
|| marketSymbol.EndsWith("BNB")
86-
)
87-
{
88-
string baseSymbol = marketSymbol.Substring(marketSymbol.Length - 3);
89-
return ExchangeMarketSymbolToGlobalMarketSymbolWithSeparatorAsync(
90-
(
91-
marketSymbol.Replace(baseSymbol, "")
92-
+ GlobalMarketSymbolSeparator
93-
+ baseSymbol
94-
),
95-
GlobalMarketSymbolSeparator
96-
);
97-
}
98-
if (marketSymbol.EndsWith("USDT"))
83+
foreach (var quoteCurrency in NonThreeLetterQuoteCurrencies)
9984
{
100-
string baseSymbol = marketSymbol.Substring(marketSymbol.Length - 4);
101-
return ExchangeMarketSymbolToGlobalMarketSymbolWithSeparatorAsync(
102-
(
103-
marketSymbol.Replace(baseSymbol, "")
104-
+ GlobalMarketSymbolSeparator
105-
+ baseSymbol
106-
),
107-
GlobalMarketSymbolSeparator
108-
);
85+
if (marketSymbol.EndsWith(quoteCurrency))
86+
{
87+
return ExchangeMarketSymbolToGlobalMarketSymbolWithSeparatorAsync(
88+
marketSymbol.Substring(0, marketSymbol.Length - quoteCurrency.Length) +
89+
GlobalMarketSymbolSeparator +
90+
quoteCurrency);
91+
}
10992
}
11093

11194
return ExchangeMarketSymbolToGlobalMarketSymbolWithSeparatorAsync(
112-
marketSymbol.Substring(0, marketSymbol.Length - 3)
113-
+ GlobalMarketSymbolSeparator
114-
+ (marketSymbol.Substring(marketSymbol.Length - 3, 3)),
115-
GlobalMarketSymbolSeparator
116-
);
95+
marketSymbol.Substring(0, marketSymbol.Length - 3) + GlobalMarketSymbolSeparator +
96+
marketSymbol.Substring(marketSymbol.Length - 3));
11797
}
11898

11999
/// <summary>

0 commit comments

Comments
 (0)