diff --git a/CryptoExchange.Net/Interfaces/ITrackerFactory.cs b/CryptoExchange.Net/Interfaces/ITrackerFactory.cs index f18cb4e0..e932d6ae 100644 --- a/CryptoExchange.Net/Interfaces/ITrackerFactory.cs +++ b/CryptoExchange.Net/Interfaces/ITrackerFactory.cs @@ -24,8 +24,9 @@ namespace CryptoExchange.Net.Interfaces /// Kline interval /// The max amount of klines to retain /// The max period the data should be retained + /// Exchange parameters /// - IKlineTracker CreateKlineTracker(SharedSymbol symbol, SharedKlineInterval interval, int? limit = null, TimeSpan? period = null); + IKlineTracker CreateKlineTracker(SharedSymbol symbol, SharedKlineInterval interval, int? limit = null, TimeSpan? period = null, ExchangeParameters? exchangeParameters = null); /// /// Whether the factory supports creating a TradeTracker instance for this symbol @@ -39,7 +40,8 @@ namespace CryptoExchange.Net.Interfaces /// The symbol /// The max amount of trades to retain /// The max period the data should be retained + /// Exchange parameters /// - ITradeTracker CreateTradeTracker(SharedSymbol symbol, int? limit = null, TimeSpan? period = null); + ITradeTracker CreateTradeTracker(SharedSymbol symbol, int? limit = null, TimeSpan? period = null, ExchangeParameters? exchangeParameters = null); } } diff --git a/CryptoExchange.Net/Trackers/Klines/KlineTracker.cs b/CryptoExchange.Net/Trackers/Klines/KlineTracker.cs index 65ba81f1..a9ec83e6 100644 --- a/CryptoExchange.Net/Trackers/Klines/KlineTracker.cs +++ b/CryptoExchange.Net/Trackers/Klines/KlineTracker.cs @@ -19,6 +19,7 @@ namespace CryptoExchange.Net.Trackers.Klines private readonly IKlineRestClient _restClient; private SyncStatus _status; private bool _startWithSnapshot; + private ExchangeParameters? _exchangeParameters; /// /// The internal data structure @@ -157,9 +158,11 @@ namespace CryptoExchange.Net.Trackers.Klines SharedSymbol symbol, SharedKlineInterval interval, int? limit = null, - TimeSpan? period = null) + TimeSpan? period = null, + ExchangeParameters? exchangeParameters = null) { _logger = logger ?? new NullLogger(); + _exchangeParameters = exchangeParameters; Symbol = symbol; SymbolName = socketClient.FormatSymbol(symbol.BaseAsset, symbol.QuoteAsset, symbol.TradingMode, symbol.DeliverTime); Exchange = restClient.Exchange; @@ -180,7 +183,7 @@ namespace CryptoExchange.Net.Trackers.Klines Status = SyncStatus.Syncing; _logger.KlineTrackerStarting(SymbolName); - var subResult = await _socketClient.SubscribeToKlineUpdatesAsync(new SubscribeKlineRequest(Symbol, Interval), + var subResult = await _socketClient.SubscribeToKlineUpdatesAsync(new SubscribeKlineRequest(Symbol, Interval, exchangeParameters: _exchangeParameters), update => { AddOrUpdate(update.Data); @@ -237,7 +240,7 @@ namespace CryptoExchange.Net.Trackers.Klines var limit = Math.Min(_restClient.GetKlinesOptions.MaxLimit, Limit ?? 100); - var request = new GetKlinesRequest(Symbol, Interval, startTime, DateTime.UtcNow, limit: limit); + var request = new GetKlinesRequest(Symbol, Interval, startTime, DateTime.UtcNow, limit: limit, exchangeParameters: _exchangeParameters); var data = new List(); await foreach (var result in ExchangeHelpers.ExecutePages(_restClient.GetKlinesAsync, request).ConfigureAwait(false)) { diff --git a/CryptoExchange.Net/Trackers/Trades/TradeTracker.cs b/CryptoExchange.Net/Trackers/Trades/TradeTracker.cs index a03f1f76..718ef7c9 100644 --- a/CryptoExchange.Net/Trackers/Trades/TradeTracker.cs +++ b/CryptoExchange.Net/Trackers/Trades/TradeTracker.cs @@ -21,6 +21,7 @@ namespace CryptoExchange.Net.Trackers.Trades private SyncStatus _status; private long _snapshotId; private bool _startWithSnapshot; + private ExchangeParameters? _exchangeParameters; /// /// The internal data structure @@ -154,12 +155,14 @@ namespace CryptoExchange.Net.Trackers.Trades ITradeSocketClient socketClient, SharedSymbol symbol, int? limit = null, - TimeSpan? period = null) + TimeSpan? period = null, + ExchangeParameters? exchangeParameters = null) { _logger = logger ?? new NullLogger(); _recentRestClient = recentRestClient; _historyRestClient = historyRestClient; _socketClient = socketClient; + _exchangeParameters = exchangeParameters; Exchange = socketClient.Exchange; Symbol = symbol; SymbolName = socketClient.FormatSymbol(symbol.BaseAsset, symbol.QuoteAsset, symbol.TradingMode, symbol.DeliverTime); @@ -203,7 +206,7 @@ namespace CryptoExchange.Net.Trackers.Trades _startWithSnapshot = startWithSnapshot; Status = SyncStatus.Syncing; _logger.TradeTrackerStarting(SymbolName); - var subResult = await _socketClient.SubscribeToTradeUpdatesAsync(new SubscribeTradeRequest(Symbol), + var subResult = await _socketClient.SubscribeToTradeUpdatesAsync(new SubscribeTradeRequest(Symbol, exchangeParameters: _exchangeParameters), update => { AddData(update.Data); @@ -257,7 +260,7 @@ namespace CryptoExchange.Net.Trackers.Trades if (_historyRestClient != null) { var startTime = Period == null ? DateTime.UtcNow.AddMinutes(-5) : DateTime.UtcNow.Add(-Period.Value); - var request = new GetTradeHistoryRequest(Symbol, startTime, DateTime.UtcNow); + var request = new GetTradeHistoryRequest(Symbol, startTime, DateTime.UtcNow, exchangeParameters: _exchangeParameters); var data = new List(); await foreach (var result in ExchangeHelpers.ExecutePages(_historyRestClient.GetTradeHistoryAsync, request).ConfigureAwait(false)) { @@ -278,7 +281,7 @@ namespace CryptoExchange.Net.Trackers.Trades if (Limit.HasValue) limit = Math.Min(_recentRestClient.GetRecentTradesOptions.MaxLimit, Limit.Value); - var snapshot = await _recentRestClient.GetRecentTradesAsync(new GetRecentTradesRequest(Symbol, limit)).ConfigureAwait(false); + var snapshot = await _recentRestClient.GetRecentTradesAsync(new GetRecentTradesRequest(Symbol, limit, exchangeParameters: _exchangeParameters)).ConfigureAwait(false); if (!snapshot.Success) { return CallResult.Fail(snapshot.Error);