11use std:: collections:: BTreeMap ;
22use std:: fmt:: Display ;
3- use crate :: util:: build_signed_request;
3+ use crate :: util:: { build_list_of_json , build_signed_request} ;
44use crate :: errors:: Result ;
55use crate :: client:: Client ;
66use crate :: api:: { API , Futures } ;
@@ -9,8 +9,8 @@ use crate::account::OrderSide;
99use crate :: futures:: model:: { Order , TradeHistory } ;
1010
1111use super :: model:: {
12- ChangeLeverageResponse , Transaction , CanceledOrder , PositionRisk , AccountBalance ,
13- AccountInformation ,
12+ AccountBalance , AccountInformation , CanceledOrder , ChangeLeverageResponse , PositionRisk ,
13+ Transaction , TransactionOrError ,
1414} ;
1515
1616#[ derive( Clone ) ]
@@ -422,9 +422,13 @@ impl FuturesAccount {
422422
423423 // Custom order for for professional traders
424424 pub fn custom_batch_orders (
425- & self , _order_count : u64 , order_requests : Vec < CustomOrderRequest > ,
426- ) -> Result < Transaction > {
427- let request = String :: new ( ) ;
425+ & self , order_requests : Vec < CustomOrderRequest > ,
426+ ) -> Result < Vec < TransactionOrError > > {
427+ if order_requests. is_empty ( ) {
428+ return Ok ( Vec :: new ( ) ) ;
429+ }
430+ let mut parameters = BTreeMap :: new ( ) ;
431+ let mut orders = Vec :: new ( ) ;
428432 for order_request in order_requests {
429433 let order = OrderRequest {
430434 symbol : order_request. symbol ,
@@ -442,12 +446,13 @@ impl FuturesAccount {
442446 working_type : order_request. working_type ,
443447 price_protect : order_request. price_protect ,
444448 } ;
445- let _order = self . build_order ( order) ;
446- // TODO : make a request string for batch orders api
447- // let request = build_signed_request(order, self.recv_window)?;
449+ let order = self . build_order ( order) ;
450+ orders. push ( order) ;
448451 }
452+ parameters. insert ( "batchOrders" . into ( ) , build_list_of_json ( orders) ) ;
453+ let request = build_signed_request ( parameters, self . recv_window ) ?;
449454 self . client
450- . post_signed ( API :: Futures ( Futures :: Order ) , request)
455+ . post_signed ( API :: Futures ( Futures :: BatchOrders ) , request)
451456 }
452457
453458 pub fn get_all_orders < S , F , N > (
0 commit comments