Skip to content

Commit 9415b28

Browse files
authored
NDAX: fix Trades websocket (#534)
- there is a bug in OnGetTickersAsync() which will need to be fixed at some point - changed OnGetMarketSymbolsMetadataAsync() to fill in _marketSymbolToInstrumentIdMapping - changed EnsureInstrumentIdsAvailable() to use OnGetMarketSymbolsMetadataAsync() instead - fixes OnGetTradesWebSocketAsync()
1 parent d2d2ecf commit 9415b28

File tree

1 file changed

+12
-8
lines changed

1 file changed

+12
-8
lines changed

src/ExchangeSharp/API/Exchanges/NDAX/ExchangeNDAXAPI.cs

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,9 @@ protected internal override async Task<IEnumerable<ExchangeMarket>> OnGetMarketS
6060
var result = await MakeJsonRequestAsync<IEnumerable<Instrument>>("GetInstruments", null,
6161
new Dictionary<string, object>()
6262
{ {"OMSId", 1}}, "POST");
63-
64-
return result.Select(instrument => instrument.ToExchangeMarket());
63+
_marketSymbolToInstrumentIdMapping = result.ToDictionary(keySelector: instrument => instrument.Symbol.Replace("_", ""),
64+
elementSelector: instrument => instrument.InstrumentId);
65+
return result.Select(instrument => instrument.ToExchangeMarket());
6566
}
6667

6768
protected override async Task<IEnumerable<ExchangeOrderResult>> OnGetCompletedOrderDetailsAsync(string symbol = null,
@@ -325,7 +326,7 @@ private async Task EnsureInstrumentIdsAvailable()
325326
{
326327
if (_marketSymbolToInstrumentIdMapping == null)
327328
{
328-
await GetTickersAsync();
329+
await OnGetMarketSymbolsMetadataAsync();
329330
}
330331
}
331332

@@ -421,11 +422,14 @@ await socket.SendMessageAsync(new MessageFrame
421422

422423
protected override async Task<IWebSocket> OnGetTradesWebSocketAsync(Func<KeyValuePair<string, ExchangeTrade>, Task> callback, params string[] marketSymbols)
423424
{
424-
await EnsureInstrumentIdsAvailable();
425-
var instrumentIds = marketSymbols == null || marketSymbols.Length == 0 ?
426-
(await GetMarketSymbolsMetadataAsync()).Select(s => (long?)long.Parse(s.AltMarketSymbol)).ToArray() :
427-
await GetInstrumentIdFromMarketSymbol(marketSymbols);
428-
425+
long?[] instrumentIds;
426+
if (marketSymbols == null || marketSymbols.Length == 0)
427+
instrumentIds = (await GetMarketSymbolsMetadataAsync()).Select(s => (long?)long.Parse(s.AltMarketSymbol)).ToArray();
428+
else
429+
{
430+
await EnsureInstrumentIdsAvailable();
431+
instrumentIds = await GetInstrumentIdFromMarketSymbol(marketSymbols);
432+
}
429433
return await ConnectWebSocketAsync("", async (socket, bytes) =>
430434
{
431435
var messageFrame =

0 commit comments

Comments
 (0)