浏览代码

ws登录参数接收修改和订单id生成规则修改

JiahengHe 1 年之前
父节点
当前提交
32ab9ad33a
共有 3 个文件被更改,包括 13 次插入7 次删除
  1. 4 3
      exchanges/src/htx_swap_ws.rs
  2. 3 2
      strategy/src/htx_usdt_swap.rs
  3. 6 2
      strategy/src/utils.rs

+ 4 - 3
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 = {

+ 3 - 2
strategy/src/htx_usdt_swap.rs

@@ -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);
 
         // 消费数据的函数
@@ -105,6 +106,7 @@ async fn on_private_data(core_arc_clone: Arc<Mutex<Core>>,
     let position_channel = "positions_cross";
     let balance_channel = "accounts_cross";
     if response.channel.contains(order_channel) { // 订单频道
+        info!("订单推送: {}", response.data);
         trace_stack.set_source("htx_swap.orders".to_string());
         let orders = standard::handle_info::HandleSwapInfo::handle_order(HtxSwap, response.clone(), ct_val.clone());
         let mut order_infos:Vec<OrderInfo> = Vec::new();
@@ -147,7 +149,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;
 }