@@ -620,10 +620,15 @@ public async Task<IEnumerable<ExchangePosition>> GetCurrentPositionsAsync()
620
620
return positions ;
621
621
}
622
622
623
- protected override async Task < IEnumerable < ExchangeOrderResult > > OnGetOpenOrderDetailsAsync ( string marketSymbol = null )
623
+ private async Task < IEnumerable < ExchangeOrderResult > > DoGetOrderDetailsAsync ( string orderId , string marketSymbol = null )
624
624
{
625
625
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
+
627
632
if ( ! string . IsNullOrWhiteSpace ( marketSymbol ) )
628
633
{
629
634
extraParams [ "symbol" ] = marketSymbol ;
@@ -632,41 +637,44 @@ protected override async Task<IEnumerable<ExchangeOrderResult>> OnGetOpenOrderDe
632
637
{
633
638
throw new Exception ( "marketSymbol is required" ) ;
634
639
}
640
+
635
641
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 ) ;
637
643
638
644
List < ExchangeOrderResult > orders = new List < ExchangeOrderResult > ( ) ;
639
- foreach ( JToken order in token [ "data" ] )
645
+ if ( orderId == null )
640
646
{
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 ) ) ;
642
655
}
643
656
644
657
return orders ;
645
658
}
646
659
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
+
647
667
protected override async Task < ExchangeOrderResult > OnGetOrderDetailsAsync ( string orderId , string marketSymbol = null )
648
668
{
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 )
652
671
{
653
- extraParams [ "symbol" ] = marketSymbol ;
672
+ return orders . First ( ) ;
654
673
}
655
674
else
656
675
{
657
- throw new Exception ( "marketSymbol is required" ) ;
676
+ return null ;
658
677
}
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 ] ;
670
678
}
671
679
672
680
protected override async Task OnCancelOrderAsync ( string orderId , string marketSymbol = null )
0 commit comments