diff --git a/src/ExchangeSharp/API/Exchanges/Bybit/ExchangeBybitAPI.cs b/src/ExchangeSharp/API/Exchanges/Bybit/ExchangeBybitAPI.cs index cfd9c9cdf..d7cd03f96 100644 --- a/src/ExchangeSharp/API/Exchanges/Bybit/ExchangeBybitAPI.cs +++ b/src/ExchangeSharp/API/Exchanges/Bybit/ExchangeBybitAPI.cs @@ -620,10 +620,15 @@ public async Task> GetCurrentPositionsAsync() return positions; } - protected override async Task> OnGetOpenOrderDetailsAsync(string marketSymbol = null) + private async Task> DoGetOrderDetailsAsync(string orderId, string marketSymbol = null) { var extraParams = new Dictionary(); - extraParams["order_status"] = "Created,New,PartiallyFilled"; + + if (orderId != null) + { + extraParams["order_id"] = orderId; + } + if (!string.IsNullOrWhiteSpace(marketSymbol)) { extraParams["symbol"] = marketSymbol; @@ -632,41 +637,44 @@ protected override async Task> OnGetOpenOrderDe { throw new Exception("marketSymbol is required"); } + var queryString = await GetAuthenticatedQueryString(extraParams); - JToken token = GetResult(await DoMakeJsonRequestAsync($"/v2/private/order/list?" + queryString, BaseUrl, null, "GET"), out var retCode, out var retMessage); + JToken token = GetResult(await DoMakeJsonRequestAsync($"/v2/private/order?" + queryString, BaseUrl, null, "GET"), out var retCode, out var retMessage); List orders = new List(); - foreach (JToken order in token["data"]) + if (orderId == null) { - orders.Add(ParseOrder(order, retCode, retMessage)); + foreach (JToken order in token) + { + orders.Add(ParseOrder(order, retCode, retMessage)); + } + } + else + { + orders.Add(ParseOrder(token, retCode, retMessage)); } return orders; } + //Note, Bybit is not recommending the use of "/v2/private/order/list" now that "/v2/private/order" is capable of returning multiple results + protected override async Task> OnGetOpenOrderDetailsAsync(string marketSymbol = null) + { + var orders = await DoGetOrderDetailsAsync(null, marketSymbol); + return orders; + } + protected override async Task OnGetOrderDetailsAsync(string orderId, string marketSymbol = null) { - var extraParams = new Dictionary(); - extraParams["order_id"] = orderId; - if (!string.IsNullOrWhiteSpace(marketSymbol)) + var orders = await DoGetOrderDetailsAsync(orderId, marketSymbol); + if (orders.Count() > 0) { - extraParams["symbol"] = marketSymbol; + return orders.First(); } else { - throw new Exception("marketSymbol is required"); + return null; } - - var queryString = await GetAuthenticatedQueryString(extraParams); - JToken token = GetResult(await DoMakeJsonRequestAsync($"/v2/private/order?" + queryString, BaseUrl, null, "GET"), out var retCode, out var retMessage); - - List orders = new List(); - foreach (JToken order in token) - { - orders.Add(ParseOrder(order, retCode, retMessage)); - } - - return orders[0]; } protected override async Task OnCancelOrderAsync(string orderId, string marketSymbol = null)