Skip to content

Commit 209d7f2

Browse files
authored
Set MarketSymbolIsUppercase to true for all Binance based exchanges (#758)
- extends #754 by @ExchangeSharp - also in this PR: - limit Trade stream to 400 symbols - use SerializerSettings
1 parent 0eed42a commit 209d7f2

File tree

2 files changed

+10
-10
lines changed

2 files changed

+10
-10
lines changed

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

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ protected BinanceGroupCommon()
5353
NonceStyle = NonceStyle.UnixMilliseconds;
5454
NonceOffset = TimeSpan.FromSeconds(15); // 15 seconds are deducted from current UTCTime as base of the request time window
5555
MarketSymbolSeparator = string.Empty;
56-
MarketSymbolIsUppercase = false;
56+
MarketSymbolIsUppercase = true;
5757
WebSocketOrderBookType = WebSocketOrderBookType.DeltasOnly;
5858
ExchangeGlobalCurrencyReplacements["BCC"] = "BCH";
5959
}
@@ -275,6 +275,11 @@ protected override async Task<IWebSocket> OnGetTradesWebSocketAsync(Func<KeyValu
275275
{
276276
marketSymbols = (await GetMarketSymbolsAsync()).ToArray();
277277
}
278+
if (marketSymbols.Length > 400)
279+
{
280+
marketSymbols = marketSymbols.Take(400).ToArray();
281+
Logger.Warn("subscribing to the first 400 symbols"); // binance does not allow subscribing to more than 400 symbols at a time
282+
}
278283
string url = await GetWebSocketStreamUrlForSymbolsAsync("@aggTrade", marketSymbols);
279284
return await ConnectPublicWebSocketAsync(url, messageCallback: async (_socket, msg) =>
280285
{
@@ -302,7 +307,7 @@ protected override async Task<IWebSocket> OnGetDeltaOrderBookWebSocketAsync(Acti
302307
return await ConnectPublicWebSocketAsync($"/stream?streams={combined}", (_socket, msg) =>
303308
{
304309
string json = msg.ToStringFromUTF8();
305-
var update = JsonConvert.DeserializeObject<MultiDepthStream>(json);
310+
var update = JsonConvert.DeserializeObject<MultiDepthStream>(json, SerializerSettings);
306311
string marketSymbol = update.Data.MarketSymbol;
307312
ExchangeOrderBook book = new ExchangeOrderBook { SequenceId = update.Data.FinalUpdate, MarketSymbol = marketSymbol, LastUpdatedUtc = CryptoUtility.UnixTimeStampToDateTimeMilliseconds(update.Data.EventTime) };
308313
foreach (List<object> ask in update.Data.Asks)
@@ -1091,7 +1096,7 @@ protected override async Task<IWebSocket> OnUserDataWebSocketAsync(Action<object
10911096
{
10921097
case "executionReport": // systematically check to make sure we are dealing with expected cases here
10931098
{
1094-
var update = JsonConvert.DeserializeObject<ExecutionReport>(token.ToStringInvariant());
1099+
var update = JsonConvert.DeserializeObject<ExecutionReport>(token.ToStringInvariant(), SerializerSettings);
10951100
switch (update.CurrentExecutionType)
10961101
{
10971102
case "NEW ": // The order has been accepted into the engine.
@@ -1115,7 +1120,7 @@ protected override async Task<IWebSocket> OnUserDataWebSocketAsync(Action<object
11151120
throw new NotImplementedException("has been removed (per binance 2021-01-01)");
11161121
case "outboundAccountPosition":
11171122
{
1118-
var update = JsonConvert.DeserializeObject<OutboundAccount>(token.ToStringInvariant());
1123+
var update = JsonConvert.DeserializeObject<OutboundAccount>(token.ToStringInvariant(), SerializerSettings);
11191124
callback(new ExchangeBalances()
11201125
{
11211126
EventTime = CryptoUtility.UnixTimeStampToDateTimeMilliseconds(update.EventTime),
@@ -1138,7 +1143,7 @@ protected override async Task<IWebSocket> OnUserDataWebSocketAsync(Action<object
11381143
}
11391144
case "balanceUpdate":
11401145
{
1141-
var update = JsonConvert.DeserializeObject<BalanceUpdate>(token.ToStringInvariant());
1146+
var update = JsonConvert.DeserializeObject<BalanceUpdate>(token.ToStringInvariant(), SerializerSettings);
11421147
callback(new ExchangeBalances()
11431148
{
11441149
EventTime = CryptoUtility.UnixTimeStampToDateTimeMilliseconds(update.EventTime),

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

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,6 @@ public sealed class ExchangeBinanceAPI : BinanceGroupCommon
1818
{
1919
public override string BaseUrl { get; set; } = "https://api.binance.com";
2020
public override string BaseUrlWebSocket { get; set; } = "wss://stream.binance.com:9443";
21-
22-
private ExchangeBinanceAPI()
23-
{
24-
MarketSymbolIsUppercase = true;
25-
}
2621
}
2722

2823
public partial class ExchangeName { public const string Binance = "Binance"; }

0 commit comments

Comments
 (0)