Skip to content

Commit 63cb4e8

Browse files
OnGetOpenOrderDetailsAsync() uses new functionality in /v2/private/order (#567)
1 parent f92619b commit 63cb4e8

File tree

1 file changed

+29
-21
lines changed

1 file changed

+29
-21
lines changed

src/ExchangeSharp/API/Exchanges/Bybit/ExchangeBybitAPI.cs

Lines changed: 29 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -620,10 +620,15 @@ public async Task<IEnumerable<ExchangePosition>> GetCurrentPositionsAsync()
620620
return positions;
621621
}
622622

623-
protected override async Task<IEnumerable<ExchangeOrderResult>> OnGetOpenOrderDetailsAsync(string marketSymbol = null)
623+
private async Task<IEnumerable<ExchangeOrderResult>> DoGetOrderDetailsAsync(string orderId, string marketSymbol = null)
624624
{
625625
var extraParams = new Dictionary<string, object>();
626-
extraParams["order_status"] = "Created,New,PartiallyFilled";
626+
627+
if (orderId != null)
628+
{
629+
extraParams["order_id"] = orderId;
630+
}
631+
627632
if (!string.IsNullOrWhiteSpace(marketSymbol))
628633
{
629634
extraParams["symbol"] = marketSymbol;
@@ -632,41 +637,44 @@ protected override async Task<IEnumerable<ExchangeOrderResult>> OnGetOpenOrderDe
632637
{
633638
throw new Exception("marketSymbol is required");
634639
}
640+
635641
var queryString = await GetAuthenticatedQueryString(extraParams);
636-
JToken token = GetResult(await DoMakeJsonRequestAsync<JToken>($"/v2/private/order/list?" + queryString, BaseUrl, null, "GET"), out var retCode, out var retMessage);
642+
JToken token = GetResult(await DoMakeJsonRequestAsync<JToken>($"/v2/private/order?" + queryString, BaseUrl, null, "GET"), out var retCode, out var retMessage);
637643

638644
List<ExchangeOrderResult> orders = new List<ExchangeOrderResult>();
639-
foreach (JToken order in token["data"])
645+
if (orderId == null)
640646
{
641-
orders.Add(ParseOrder(order, retCode, retMessage));
647+
foreach (JToken order in token)
648+
{
649+
orders.Add(ParseOrder(order, retCode, retMessage));
650+
}
651+
}
652+
else
653+
{
654+
orders.Add(ParseOrder(token, retCode, retMessage));
642655
}
643656

644657
return orders;
645658
}
646659

660+
//Note, Bybit is not recommending the use of "/v2/private/order/list" now that "/v2/private/order" is capable of returning multiple results
661+
protected override async Task<IEnumerable<ExchangeOrderResult>> OnGetOpenOrderDetailsAsync(string marketSymbol = null)
662+
{
663+
var orders = await DoGetOrderDetailsAsync(null, marketSymbol);
664+
return orders;
665+
}
666+
647667
protected override async Task<ExchangeOrderResult> OnGetOrderDetailsAsync(string orderId, string marketSymbol = null)
648668
{
649-
var extraParams = new Dictionary<string, object>();
650-
extraParams["order_id"] = orderId;
651-
if (!string.IsNullOrWhiteSpace(marketSymbol))
669+
var orders = await DoGetOrderDetailsAsync(orderId, marketSymbol);
670+
if (orders.Count() > 0)
652671
{
653-
extraParams["symbol"] = marketSymbol;
672+
return orders.First();
654673
}
655674
else
656675
{
657-
throw new Exception("marketSymbol is required");
676+
return null;
658677
}
659-
660-
var queryString = await GetAuthenticatedQueryString(extraParams);
661-
JToken token = GetResult(await DoMakeJsonRequestAsync<JToken>($"/v2/private/order?" + queryString, BaseUrl, null, "GET"), out var retCode, out var retMessage);
662-
663-
List<ExchangeOrderResult> orders = new List<ExchangeOrderResult>();
664-
foreach (JToken order in token)
665-
{
666-
orders.Add(ParseOrder(order, retCode, retMessage));
667-
}
668-
669-
return orders[0];
670678
}
671679

672680
protected override async Task OnCancelOrderAsync(string orderId, string marketSymbol = null)

0 commit comments

Comments
 (0)