Просмотр исходного кода

添加kucoin自动追加保证金

gepangpang 2 лет назад
Родитель
Сommit
7e9809ed0e

+ 1 - 0
standard/.gitignore

@@ -1,2 +1,3 @@
 /target
 /.idea
+/logs*

+ 2 - 0
standard/src/binance_spot.rs

@@ -99,6 +99,8 @@ impl Platform for BinanceSpot {
 
     async fn set_dual_leverage(&mut self, _leverage: &str) -> Result<String, Error> { todo!() }
 
+    async fn set_auto_deposit_status(&mut self, _status: bool) -> Result<String, Error> { todo!() }
+
     async fn wallet_transfers(&mut self, _coin: &str, _from: &str, _to: &str, _amount: Decimal) -> Result<String, Error> { todo!() }
 
     async fn command_order(&mut self, _order_command: OrderCommand, _trace_stack: TraceStack) { todo!() }

+ 2 - 0
standard/src/binance_swap.rs

@@ -278,6 +278,8 @@ impl Platform for BinanceSwap {
 
     async fn set_dual_leverage(&mut self, _leverage: &str) -> Result<String, Error> { todo!() }
 
+    async fn set_auto_deposit_status(&mut self, _status: bool) -> Result<String, Error> { todo!() }
+
     async fn wallet_transfers(&mut self, _coin: &str, _from: &str, _to: &str, _amount: Decimal) -> Result<String, Error> { todo!() }
 
     async fn command_order(&mut self, _order_command: OrderCommand, _trace_stack: TraceStack) { todo!() }

+ 2 - 0
standard/src/gate_spot.rs

@@ -97,6 +97,8 @@ impl Platform for GateSpot {
 
     async fn set_dual_leverage(&mut self, _leverage: &str) -> Result<String, Error> { todo!() }
 
+    async fn set_auto_deposit_status(&mut self, _status: bool) -> Result<String, Error> { todo!() }
+
     async fn wallet_transfers(&mut self, _coin: &str, _from: &str, _to: &str, _amount: Decimal) -> Result<String, Error> { todo!() }
 
     async fn command_order(&mut self, _order_command: OrderCommand, _trace_stack: TraceStack) { todo!() }

+ 3 - 0
standard/src/gate_swap.rs

@@ -346,6 +346,9 @@ impl Platform for GateSwap {
             Err(Error::new(ErrorKind::Other, res_data.to_string()))
         }
     }
+
+    async fn set_auto_deposit_status(&mut self, _status: bool) -> Result<String, Error> { todo!() }
+
     // 交易账户互转
     async fn wallet_transfers(&mut self, coin: &str, from: &str, to: &str, amount: Decimal) -> Result<String, Error> {
         let coin_format = coin.to_string().to_lowercase();

+ 15 - 0
standard/src/kucoin_swap.rs

@@ -42,6 +42,9 @@ impl KucoinSwap {
             error_sender,
         };
         kucoin_swap.market = KucoinSwap::get_market(&mut kucoin_swap).await.unwrap_or(kucoin_swap.market);
+
+        // 开启自动追加保证金
+        kucoin_swap.set_auto_deposit_status(true).await.unwrap();
         return kucoin_swap;
     }
 }
@@ -348,6 +351,18 @@ impl Platform for KucoinSwap {
         panic!("Kucoin:该交易所暂不支持此方法!");
     }
 
+    async fn set_auto_deposit_status(&mut self, status: bool) -> Result<String, Error> {
+        let symbol_format = format!("{}M", utils::format_symbol(self.symbol.clone(), ""));
+        let res_data = self.request.auto_deposit_status(symbol_format, status).await;
+        if res_data.code == "200" {
+            let res_data_str = &res_data.data;
+            let result = res_data_str.clone();
+            Ok(result)
+        } else {
+            Err(Error::new(ErrorKind::Other, res_data.to_string()))
+        }
+    }
+
     async fn wallet_transfers(&mut self, _coin: &str, _from: &str, _to: &str, _amount: Decimal) -> Result<String, Error> {
         error!("Kucoin:该交易所暂不支持此方法!");
         panic!("Kucoin:该交易所暂不支持此方法!");

+ 1 - 1
standard/tests/gate_swap_test.rs

@@ -266,7 +266,7 @@ async fn test_command_order() {
     command.limits_open.insert("888888".to_string(), vec!["100".to_string(), "kd".to_string(), "0.18".to_string(), "888888".to_string()]);
     command.limits_close.insert("999999".to_string(), vec!["100".to_string(), "kk".to_string(), "0.25".to_string(), "999999".to_string()]);
     command.check.insert("888888".to_string(), vec!["999999".to_string(), "".to_string()]);
-    gate_swap_exchange.command_order(command).await;
+    gate_swap_exchange.command_order(command, Default::default()).await;
 
     loop {
         if let Ok(order) = order_receiver.try_recv() {

+ 13 - 1
standard/tests/kucoin_swap_test.rs

@@ -221,6 +221,18 @@ async fn test_cancel_orders() {
     trace!(?kucoin_cancel_orders);
 }
 
+
+// 测试设置自动追加保证金
+#[tokio::test]
+#[instrument(level = "TRACE")]
+async fn test_set_auto_deposit_status() {
+    global::log_utils::init_log_with_trace();
+
+    let mut kucoin_swap_exchange: Box<dyn Platform> = test_new_exchange(ExchangeEnum::KucoinSwap, SYMBOL).await;
+    let kucoin_set_auto_deposit_status = kucoin_swap_exchange.set_auto_deposit_status(true).await;
+    trace!(?kucoin_set_auto_deposit_status);
+}
+
 // 测试指令下单
 #[tokio::test]
 #[instrument(level = "TRACE")]
@@ -245,7 +257,7 @@ async fn test_command_order() {
     command.limits_open.insert("888888".to_string(), vec!["100".to_string(), "kd".to_string(), "0.18".to_string(), "888888".to_string()]);
     command.limits_close.insert("999999".to_string(), vec!["100".to_string(), "kk".to_string(), "0.25".to_string(), "999999".to_string()]);
     // command.check.insert("888888".to_string(), vec!["999999".to_string(), "94647166466789377".to_string()]);
-    kucoin_swap_exchange.command_order(command).await;
+    kucoin_swap_exchange.command_order(command, Default::default()).await;
 
 
     loop {