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);