소스 검색

Merge remote-tracking branch 'origin/huobi_swap' into huobi_swap

gepangpang 1 년 전
부모
커밋
6f7998487d
3개의 변경된 파일19개의 추가작업 그리고 13개의 파일을 삭제
  1. 10 8
      exchanges/src/htx_swap_ws.rs
  2. 3 3
      strategy/src/htx_usdt_swap.rs
  3. 6 2
      strategy/src/utils.rs

+ 10 - 8
exchanges/src/htx_swap_ws.rs

@@ -217,7 +217,7 @@ impl HtxSwapWs {
             Future: std::future::Future<Output=()> + Send + 'static, // 确保 Fut 是一个 Future,且输出类型为 ()
     {
         let login_is = self.contains_pr();
-        let login_param = self.login_param.clone().unwrap();
+        let login_param = self.login_param.clone();
         let subscription = self.get_subscription();
         let address_url = self.address_url.clone();
         let label = self.label.clone();
@@ -256,13 +256,14 @@ impl HtxSwapWs {
                 // 需要登录
                 if login_is {
                     let mut login_data = LOGIN_DATA.lock().await;
+                    let login_param_real = login_param.clone().unwrap();
                     login_data.0 = true;
                     let utc_now = Utc::now();
                     let timestamp = utc_now.format("%Y-%m-%dT%H:%M:%S").to_string();
                     let timestamp_str = percent_encoding::utf8_percent_encode(timestamp.clone().as_str(), crate::htx_swap_rest::FRAGMENT).to_string();
 
-                    let access_key = login_param.api_key.clone();
-                    let secret_key = login_param.secret.clone();
+                    let access_key = login_param_real.api_key.clone();
+                    let secret_key = login_param_real.secret.clone();
                     let param_str = format!("AccessKeyId={}&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp={}", access_key, timestamp_str);
 
                     let signature = {
@@ -352,11 +353,11 @@ impl HtxSwapWs {
         //心跳包
         let ping = json_value["ping"].as_i64();
         match ping {
-            Some(_) => {
+            Some(ping_ts) => {
                 let pong = json!({
-                    "pong": Utc::now().timestamp()/100
+                    "pong": ping_ts
                 });
-                return ResponseData::new("".to_string(), -301, "success".to_string(), pong);
+                return ResponseData::new("".to_string(), -302, "success".to_string(), pong);
             }
             None => {}
         }
@@ -410,11 +411,12 @@ impl HtxSwapWs {
                 return res_data;
             }
             "ping" => {
+                let ts = json_value["ts"].as_str().unwrap();
                 let pong = json!({
                     "op": "pong",
-                    "ts": Utc::now().timestamp()
+                    "ts": ts
                 });
-                return ResponseData::new("".to_string(), -301, "success".to_string(), pong);
+                return ResponseData::new("".to_string(), -302, "success".to_string(), pong);
             }
             "sub" => {
                 res_data.channel = json_value["topic"].as_str().unwrap().to_string();

+ 3 - 3
strategy/src/htx_usdt_swap.rs

@@ -1,4 +1,4 @@
-use tracing::{error, info};
+use tracing::{error};
 use std::collections::BTreeMap;
 use std::sync::Arc;
 use std::sync::atomic::AtomicBool;
@@ -65,9 +65,10 @@ pub async fn htx_swap_run(is_shutdown_arc: Arc<AtomicBool>,
     let is_shutdown_arc_c1 = is_shutdown_arc.clone();
     let write_tx_am_private = Arc::new(Mutex::new(write_tx_private));
     spawn(async move {
+        let login_param = parse_btree_map_to_htx_swap_login(exchange_params);
         // 构建链接ws
         let mut bg_private = HtxSwapWs::new_label(name.clone(),
-                                                     Some(parse_btree_map_to_htx_swap_login(exchange_params)),
+                                                     Some(login_param),
                                                   HtxSwapWsType::Private);
 
         // 消费数据的函数
@@ -147,7 +148,6 @@ async fn on_public_data(core_arc_clone: Arc<Mutex<Core>>,
     let depth_channel = format!("market.{}.depth.step0", channel_symbol.to_uppercase());
     // public类型,目前只考虑订单流数据
     if response.channel == depth_channel { // 深度频道
-        info!("htx_depth {:?}", response);
         trace_stack.set_source("htx_usdt_swap.depth".to_string());
         let special_depth = standard::handle_info::HandleSwapInfo::handle_special_depth(HtxSwap, &response);
         trace_stack.on_after_format();

+ 6 - 2
strategy/src/utils.rs

@@ -8,14 +8,18 @@ use global::public_params;
 // 生成订单的id,可以根据交易所名字来
 pub fn generate_client_id(exchange_name_some: Option<String>) -> String {
     // 交易所名字获取
-    let exchange_name = exchange_name_some.unwrap_or("".to_string());
+    let mut exchange_name = exchange_name_some.unwrap_or("".to_string());
     // 0-1000的随机数
     let rand_num = rand::thread_rng().gen_range(1..1000);
     // 随机时间戳
     let in_ms = Utc::now().timestamp_micros();
     let time_str = in_ms.to_string();
     let time_slice = &time_str[10..];
-    let result = format!("{}{}{}", time_slice, rand_num, exchange_name);
+    // 火币只能纯数字
+    if exchange_name == "htx" {
+        exchange_name = "9527".to_string();
+    }
+    let result = format!("{}{}{}{}", "1", time_slice, rand_num, exchange_name);
 
     return result;
 }