mirror of
https://github.com/JKorf/CryptoExchange.Net
synced 2026-02-16 14:13:46 +00:00
wip
This commit is contained in:
parent
0ad94cce5a
commit
a750075022
@ -48,6 +48,7 @@ namespace CryptoExchange.Net.Trackers.UserData
|
|||||||
private TimeSpan _pollIntervalDisconnected;
|
private TimeSpan _pollIntervalDisconnected;
|
||||||
private bool _pollAtStart;
|
private bool _pollAtStart;
|
||||||
private bool _onlyTrackProvidedSymbols;
|
private bool _onlyTrackProvidedSymbols;
|
||||||
|
private bool _trackTrades = true;
|
||||||
|
|
||||||
// Subscriptions
|
// Subscriptions
|
||||||
private UpdateSubscription? _balanceSubscription;
|
private UpdateSubscription? _balanceSubscription;
|
||||||
@ -106,6 +107,7 @@ namespace CryptoExchange.Net.Trackers.UserData
|
|||||||
_symbols = config.Symbols?.ToList() ?? [];
|
_symbols = config.Symbols?.ToList() ?? [];
|
||||||
_onlyTrackProvidedSymbols = config.OnlyTrackProvidedSymbols;
|
_onlyTrackProvidedSymbols = config.OnlyTrackProvidedSymbols;
|
||||||
_pollAtStart = config.PollAtStart;
|
_pollAtStart = config.PollAtStart;
|
||||||
|
_trackTrades = config.TrackTrades;
|
||||||
|
|
||||||
UserIdentifier = userIdentifier;
|
UserIdentifier = userIdentifier;
|
||||||
}
|
}
|
||||||
@ -160,7 +162,7 @@ namespace CryptoExchange.Net.Trackers.UserData
|
|||||||
_orderSubscription = subOrderResult.Data;
|
_orderSubscription = subOrderResult.Data;
|
||||||
subOrderResult.Data.SubscriptionStatusChanged += OrderSubscriptionStatusChanged;
|
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);
|
var subTradeResult = await _userTradeSocketClient.SubscribeToUserTradeUpdatesAsync(new SubscribeUserTradeRequest(listenKey), x => HandleTradeUpdate(UpdateSource.Push, x.Data), ct: _cts.Token).ConfigureAwait(false);
|
||||||
if (!subOrderResult)
|
if (!subOrderResult)
|
||||||
@ -604,22 +606,25 @@ namespace CryptoExchange.Net.Trackers.UserData
|
|||||||
HandleOrderUpdate(UpdateSource.Poll, relevantOrders);
|
HandleOrderUpdate(UpdateSource.Poll, relevantOrders);
|
||||||
}
|
}
|
||||||
|
|
||||||
var fromTimeTrades = _lastDataTimeTradesBeforeDisconnect ?? _lastPollTimeTrades ?? _startTime;
|
if (_trackTrades)
|
||||||
var tradesResult = await _spotOrderRestClient.GetSpotUserTradesAsync(new GetUserTradesRequest(symbol, startTime: fromTimeTrades)).ConfigureAwait(false);
|
|
||||||
if (!tradesResult.Success)
|
|
||||||
{
|
{
|
||||||
// .. ?
|
var fromTimeTrades = _lastDataTimeTradesBeforeDisconnect ?? _lastPollTimeTrades ?? _startTime;
|
||||||
anyError = true;
|
var tradesResult = await _spotOrderRestClient.GetSpotUserTradesAsync(new GetUserTradesRequest(symbol, startTime: fromTimeTrades)).ConfigureAwait(false);
|
||||||
}
|
if (!tradesResult.Success)
|
||||||
else
|
{
|
||||||
{
|
// .. ?
|
||||||
_lastDataTimeTradesBeforeDisconnect = null;
|
anyError = true;
|
||||||
_lastPollTimeTrades = updatedPollTime;
|
}
|
||||||
|
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
|
// 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();
|
var relevantTrades = tradesResult.Data.Where(x => x.Timestamp >= _startTime || _orderStore.ContainsKey(x.OrderId)).ToArray();
|
||||||
if (relevantTrades.Length > 0)
|
if (relevantTrades.Length > 0)
|
||||||
HandleTradeUpdate(UpdateSource.Poll, tradesResult.Data);
|
HandleTradeUpdate(UpdateSource.Poll, tradesResult.Data);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -30,5 +30,9 @@ namespace CryptoExchange.Net.Trackers.UserData
|
|||||||
/// Whether to poll for data initially when starting the tracker.
|
/// Whether to poll for data initially when starting the tracker.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool PollAtStart { get; set; } = true;
|
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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user