1
0
mirror of https://github.com/JKorf/CryptoExchange.Net synced 2026-02-16 14:13:46 +00:00
This commit is contained in:
JKorf 2026-01-26 08:42:40 +01:00
parent 0ad94cce5a
commit a750075022
2 changed files with 24 additions and 15 deletions

View File

@ -48,6 +48,7 @@ namespace CryptoExchange.Net.Trackers.UserData
private TimeSpan _pollIntervalDisconnected;
private bool _pollAtStart;
private bool _onlyTrackProvidedSymbols;
private bool _trackTrades = true;
// Subscriptions
private UpdateSubscription? _balanceSubscription;
@ -106,6 +107,7 @@ namespace CryptoExchange.Net.Trackers.UserData
_symbols = config.Symbols?.ToList() ?? [];
_onlyTrackProvidedSymbols = config.OnlyTrackProvidedSymbols;
_pollAtStart = config.PollAtStart;
_trackTrades = config.TrackTrades;
UserIdentifier = userIdentifier;
}
@ -160,7 +162,7 @@ namespace CryptoExchange.Net.Trackers.UserData
_orderSubscription = subOrderResult.Data;
subOrderResult.Data.SubscriptionStatusChanged += OrderSubscriptionStatusChanged;
if (_userTradeSocketClient != null)
if (_userTradeSocketClient != null && _trackTrades)
{
var subTradeResult = await _userTradeSocketClient.SubscribeToUserTradeUpdatesAsync(new SubscribeUserTradeRequest(listenKey), x => HandleTradeUpdate(UpdateSource.Push, x.Data), ct: _cts.Token).ConfigureAwait(false);
if (!subOrderResult)
@ -604,22 +606,25 @@ namespace CryptoExchange.Net.Trackers.UserData
HandleOrderUpdate(UpdateSource.Poll, relevantOrders);
}
var fromTimeTrades = _lastDataTimeTradesBeforeDisconnect ?? _lastPollTimeTrades ?? _startTime;
var tradesResult = await _spotOrderRestClient.GetSpotUserTradesAsync(new GetUserTradesRequest(symbol, startTime: fromTimeTrades)).ConfigureAwait(false);
if (!tradesResult.Success)
if (_trackTrades)
{
// .. ?
anyError = true;
}
else
{
_lastDataTimeTradesBeforeDisconnect = null;
_lastPollTimeTrades = updatedPollTime;
var fromTimeTrades = _lastDataTimeTradesBeforeDisconnect ?? _lastPollTimeTrades ?? _startTime;
var tradesResult = await _spotOrderRestClient.GetSpotUserTradesAsync(new GetUserTradesRequest(symbol, startTime: fromTimeTrades)).ConfigureAwait(false);
if (!tradesResult.Success)
{
// .. ?
anyError = true;
}
else
{
_lastDataTimeTradesBeforeDisconnect = null;
_lastPollTimeTrades = updatedPollTime;
// Filter trades to only include where timestamp is after the start time OR it's part of an order we're tracking
var relevantTrades = tradesResult.Data.Where(x => x.Timestamp >= _startTime || _orderStore.ContainsKey(x.OrderId)).ToArray();
if (relevantTrades.Length > 0)
HandleTradeUpdate(UpdateSource.Poll, tradesResult.Data);
// Filter trades to only include where timestamp is after the start time OR it's part of an order we're tracking
var relevantTrades = tradesResult.Data.Where(x => x.Timestamp >= _startTime || _orderStore.ContainsKey(x.OrderId)).ToArray();
if (relevantTrades.Length > 0)
HandleTradeUpdate(UpdateSource.Poll, tradesResult.Data);
}
}
}

View File

@ -30,5 +30,9 @@ namespace CryptoExchange.Net.Trackers.UserData
/// Whether to poll for data initially when starting the tracker.
/// </summary>
public bool PollAtStart { get; set; } = true;
/// <summary>
/// Whether to track order trades, can lead to increased requests when polling
/// </summary>
public bool TrackTrades { get; set; } = true;
}
}