@@ -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