Răsfoiți Sursa

修改bybit币对过滤

DESKTOP-NE65RNK\Citrus_limon 1 an în urmă
părinte
comite
6b7b22238b

+ 2 - 2
src/bybit_usdt_swap_data_listener.rs

@@ -9,6 +9,7 @@ use exchanges::bybit_swap_rest::BybitSwapRest;
 use exchanges::bybit_swap_ws::{BybitSwapSubscribeType, BybitSwapWs, BybitSwapWsType};
 use exchanges::response_base::ResponseData;
 use rust_decimal::Decimal;
+use serde_json::Value;
 use standard::exchange::ExchangeEnum;
 use standard::exchange_struct_handler::ExchangeStructHandler;
 use crate::json_db_utils::delete_db_by_exchange;
@@ -30,8 +31,7 @@ pub async fn run_listener(is_shutdown_arc: Arc<AtomicBool>) {
     let response = bybit_rest.get_instruments_list().await;
     let mut symbols = vec![];
     if response.code == 200 {
-
-        let data = response.data["list"].as_array().unwrap();
+        let data: Vec<Value> = response.data["list"].as_array().unwrap().iter().filter(|item| { item["contractType"].as_str().unwrap() == "LinearPerpetual" && item["status"].as_str().unwrap() == "Trading" && item["quoteCoin"].as_str().unwrap() == "USDT" }).cloned().collect();
         let mut mul_map = MUL_MAP.lock().await;
         for info in data {
             let symbol = info["symbol"].as_str().unwrap().to_string().replace("USDT","_USDT");

+ 3 - 2
standard/src/bybit_swap_handle.rs

@@ -1,4 +1,5 @@
 use std::str::FromStr;
+use std::time::SystemTime;
 use rust_decimal::Decimal;
 use serde_json::{from_value, Value};
 use tracing::{error};
@@ -191,12 +192,12 @@ pub fn handle_records(value: &Value) -> Vec<Record> {
 pub fn format_trade_items(res_data: &ResponseData) -> Vec<Trade> {
     let result = res_data.data["data"].as_array().unwrap();
     let mut trades = vec![];
-
     for item in result {
         let side = item["S"].as_str().unwrap();
         let size = Decimal::from_str(item["v"].as_str().unwrap()).unwrap();
+        let id = SystemTime::now().duration_since(std::time::UNIX_EPOCH).expect("Time went backwards").as_nanos().to_string();
         trades.push(Trade {
-            id: item["i"].to_string(),
+            id: id.clone(),
             time: Decimal::from_i64(item["T"].as_i64().unwrap()).unwrap(),
             size: if side == "Buy" { size } else { -size },
             price: Decimal::from_str(item["p"].as_str().unwrap()).unwrap(),