Sfoglia il codice sorgente

bybit 网络层改造

JiahengHe 1 anno fa
parent
commit
07b9364842

+ 5 - 0
exchanges/src/bybit_swap_ws.rs

@@ -9,6 +9,7 @@ use tokio_tungstenite::tungstenite::{Error, Message};
 use tracing::{info, trace};
 
 use ring::hmac;
+use tracing_subscriber::fmt::format;
 
 use crate::response_base::ResponseData;
 use crate::socket_tool::{AbstractWsMode, HeartbeatType};
@@ -299,13 +300,17 @@ impl BybitSwapWs {
         } else if json_value.get("topic").is_some() && json_value.get("data").is_some() {
             let channel = json_value["topic"].to_string();
             res_data.data = format!("{}", json_value.get("data").as_ref().unwrap());
+            // bybit 时间在data块外
+            res_data.reach_time = json_value.get("ts").unwrap().as_i64().unwrap_or(0i64);
             res_data.code = "200".to_string();
 
 
             if channel.contains("orderbook") {
                 res_data.channel = "orderbook".to_string();
+                res_data.data_type = json_value["type"].as_str().unwrap().to_string();
             } else if channel.contains("publicTrade") {
                 res_data.channel = "trade".to_string();
+                res_data.data_type = json_value["type"].as_str().unwrap().to_string();
             } else if channel.contains("tickers") {
                 res_data.channel = "tickers".to_string();
             } else if channel.contains("kline") {

+ 3 - 1
exchanges/src/response_base.rs

@@ -8,11 +8,12 @@ pub struct ResponseData {
     pub data: String,
     pub time: i64,       //数据接受的时间
     pub reach_time: i64, //远程数据时间 弃用
+    pub data_type: String // 數據類型, 例如 bybit 深度信息:snapshot(全量),delta(增量)
 }
 
 impl ResponseData {
     pub fn new(label: String, code: String, message: String, data: String) -> ResponseData {
-        ResponseData { label, code, message, data, channel: "".to_string(), time: 0, reach_time: 0 }
+        ResponseData { label, code, message, data, channel: "".to_string(), time: 0, reach_time: 0 , data_type: String::new()}
     }
     pub fn error(label: String, message: String) -> ResponseData {
         ResponseData {
@@ -23,6 +24,7 @@ impl ResponseData {
             channel: "".to_string(),
             time: 0,
             reach_time: 0,
+            data_type: String::new()
         }
     }
 

+ 3 - 3
exchanges/tests/bybit_swap_test.rs

@@ -8,8 +8,8 @@ use tracing::trace;
 use exchanges::bybit_swap_rest::BybitSwapRest;
 use exchanges::bybit_swap_ws::{BybitSwapLogin, BybitSwapSubscribeType, BybitSwapWs, BybitSwapWsType};
 
-const ACCESS_KEY: &str = "";
-const SECRET_KEY: &str = "";
+const ACCESS_KEY: &str = "JKHMEL6kD7I7WjbHKP";
+const SECRET_KEY: &str = "jmofU9X9PjzGZ8BlO0xZLcUzImHE2CaTSQ3Y";
 
 
 //ws-订阅公共频道信息
@@ -276,7 +276,7 @@ async fn rest_get_order_test() {
     global::log_utils::init_log_with_trace();
 
     let mut ret = get_rest();
-    let req_data = ret.get_order("DOGEUSDT".to_string(),
+    let req_data = ret.get_order("LINKUSDT".to_string(),
                                  "".to_string(), "".to_string()).await;
     println!("Bybit--查詢實時委託單--{:?}", req_data);
 }

+ 1 - 1
global/src/public_params.rs

@@ -29,6 +29,6 @@ pub const COINEX_USDT_SWAP_LIMIT:i64 = 20;
 pub const OKEX_USDT_SWAP_LIMIT:i64 = 30;
 pub const BITGET_USDT_SWAP_LIMIT:i64 = 10;
 pub const BITGET_USDT_SPOT_LIMIT:i64 = 100;
-pub const BYBIT_USDT_SWAP_LIMIT:i64 = 1;
+pub const BYBIT_USDT_SWAP_LIMIT:i64 = 10;
 pub const MEXC_SPOT_LIMIT:i64 = 333;
 pub const RATIO:i64 = 4;