From ece6a9d27d422ed35ef8c8f0272fd6f7b2d16a6e Mon Sep 17 00:00:00 2001 From: Jkorf Date: Tue, 10 Feb 2026 11:51:19 +0100 Subject: [PATCH] Fixed trading mode selection for futures listen key method in FuturesUserDataTracker --- .../Trackers/UserData/UserFuturesDataTracker.cs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/CryptoExchange.Net/Trackers/UserData/UserFuturesDataTracker.cs b/CryptoExchange.Net/Trackers/UserData/UserFuturesDataTracker.cs index 26d3268..355e281 100644 --- a/CryptoExchange.Net/Trackers/UserData/UserFuturesDataTracker.cs +++ b/CryptoExchange.Net/Trackers/UserData/UserFuturesDataTracker.cs @@ -20,6 +20,7 @@ namespace CryptoExchange.Net.Trackers.UserData private readonly IFuturesSymbolRestClient _symbolClient; private readonly IListenKeyRestClient? _listenKeyClient; private readonly ExchangeParameters? _exchangeParameters; + private readonly TradingMode _tradingMode; private Task? _lkKeepAliveTask; /// @@ -69,10 +70,14 @@ namespace CryptoExchange.Net.Trackers.UserData _listenKeyClient = listenKeyRestClient; _exchangeParameters = exchangeParameters; + _tradingMode = accountType == SharedAccountType.PerpetualInverseFutures ? TradingMode.PerpetualInverse : + accountType == SharedAccountType.DeliveryLinearFutures ? TradingMode.DeliveryLinear : + accountType == SharedAccountType.DeliveryInverseFutures ? TradingMode.DeliveryInverse : + TradingMode.PerpetualLinear; + var trackers = new List(); - var balanceAccountType = accountType ?? SharedAccountType.PerpetualLinearFutures; - var balanceTracker = new BalanceTracker(logger, balanceRestClient, balanceSocketClient, balanceAccountType, config.BalancesConfig, exchangeParameters); + var balanceTracker = new BalanceTracker(logger, balanceRestClient, balanceSocketClient, accountType ?? SharedAccountType.PerpetualLinearFutures, config.BalancesConfig, exchangeParameters); Balances = balanceTracker; trackers.Add(balanceTracker); @@ -100,7 +105,7 @@ namespace CryptoExchange.Net.Trackers.UserData /// protected override async Task DoStartAsync() { - var symbolResult = await _symbolClient.GetFuturesSymbolsAsync(new GetSymbolsRequest(exchangeParameters: _exchangeParameters)).ConfigureAwait(false); + var symbolResult = await _symbolClient.GetFuturesSymbolsAsync(new GetSymbolsRequest(_tradingMode, exchangeParameters: _exchangeParameters)).ConfigureAwait(false); if (!symbolResult) { _logger.LogWarning("Failed to start UserFuturesDataTracker; symbols request failed: {Error}", symbolResult.Error); @@ -109,7 +114,7 @@ namespace CryptoExchange.Net.Trackers.UserData if (_listenKeyClient != null) { - var lkResult = await _listenKeyClient.StartListenKeyAsync(new StartListenKeyRequest(exchangeParameters: _exchangeParameters)).ConfigureAwait(false); + var lkResult = await _listenKeyClient.StartListenKeyAsync(new StartListenKeyRequest(_tradingMode, exchangeParameters: _exchangeParameters)).ConfigureAwait(false); if (!lkResult) { _logger.LogWarning("Failed to start UserFuturesDataTracker; listen key request failed: {Error}", lkResult.Error); @@ -141,7 +146,7 @@ namespace CryptoExchange.Net.Trackers.UserData break; } - var result = await _listenKeyClient!.KeepAliveListenKeyAsync(new KeepAliveListenKeyRequest(_listenKey!, TradingMode.Spot)).ConfigureAwait(false); + var result = await _listenKeyClient!.KeepAliveListenKeyAsync(new KeepAliveListenKeyRequest(_listenKey!, _tradingMode)).ConfigureAwait(false); if (!result) _logger.LogWarning("Listen key keep alive failed: " + result.Error);