Skip to content

Commit 202706d

Browse files
vslee麦树然
authored andcommitted
NDAX: fix symbol bug (DigitalRuby#498)
- NDAX sometimes uses _ as a symbol separater and sometimes it does not - change the _marketSymbolToInstrumentIdMapping to store the symbol w/o the _ - then search both ways if needed
1 parent b5abd42 commit 202706d

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed

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

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ protected override async Task<IEnumerable<KeyValuePair<string, ExchangeTicker>>>
3131
{
3232
var result =
3333
await MakeJsonRequestAsync<Dictionary<string, NDAXTicker>>("returnticker", "https://ndax.io/api", null, "GET");
34-
_marketSymbolToInstrumentIdMapping = result.ToDictionary(pair => pair.Key, pair => pair.Value.Id);
34+
_marketSymbolToInstrumentIdMapping = result.ToDictionary(pair => pair.Key.Replace("_", ""), pair => pair.Value.Id); // remove the _
3535
return result.Select(pair =>
3636
new KeyValuePair<string, ExchangeTicker>(pair.Key, pair.Value.ToExchangeTicker(pair.Key)));
3737
}
@@ -345,12 +345,16 @@ private async Task EnsureInstrumentIdsAvailable()
345345
{
346346
marketSymbol = marketSymbol.ToUpperInvariant();
347347
await EnsureInstrumentIdsAvailable();
348-
if (_marketSymbolToInstrumentIdMapping.TryGetValue(marketSymbol, out var value))
349-
{
350-
return value;
351-
}
352-
353-
return null;
348+
if (_marketSymbolToInstrumentIdMapping.TryGetValue(marketSymbol, out var value))
349+
{
350+
return value;
351+
}
352+
else if (_marketSymbolToInstrumentIdMapping.TryGetValue(marketSymbol.Replace("_", ""), out var value2))
353+
{ // try again w/o the _
354+
return value2;
355+
}
356+
357+
return null;
354358
}
355359

356360
private async Task<long?[]> GetInstrumentIdFromMarketSymbol(string[] marketSymbols)
@@ -367,6 +371,7 @@ private async Task<string> GetMarketSymbolFromInstrumentId(long instrumentId)
367371

368372
protected override async Task<IWebSocket> OnGetTickersWebSocketAsync(Action<IReadOnlyCollection<KeyValuePair<string, ExchangeTicker>>> tickers, params string[] marketSymbols)
369373
{
374+
await EnsureInstrumentIdsAvailable();
370375
var instrumentIds = marketSymbols == null || marketSymbols.Length == 0 ?
371376
(await GetMarketSymbolsMetadataAsync()).Select(s => (long?)long.Parse(s.AltMarketSymbol)).ToArray() :
372377
await GetInstrumentIdFromMarketSymbol(marketSymbols);
@@ -416,6 +421,7 @@ await socket.SendMessageAsync(new MessageFrame
416421

417422
protected override async Task<IWebSocket> OnGetTradesWebSocketAsync(Func<KeyValuePair<string, ExchangeTrade>, Task> callback, params string[] marketSymbols)
418423
{
424+
await EnsureInstrumentIdsAvailable();
419425
var instrumentIds = marketSymbols == null || marketSymbols.Length == 0 ?
420426
(await GetMarketSymbolsMetadataAsync()).Select(s => (long?)long.Parse(s.AltMarketSymbol)).ToArray() :
421427
await GetInstrumentIdFromMarketSymbol(marketSymbols);

0 commit comments

Comments
 (0)