Преглед изворни кода

提交服务器测试现在延时。

skyffire пре 1 година
родитељ
комит
521b08f5e8

+ 18 - 19
standard/src/gate_swap_handle.rs

@@ -1,13 +1,12 @@
 use std::str::FromStr;
 use rust_decimal::Decimal;
 use rust_decimal::prelude::FromPrimitive;
-use rust_decimal_macros::dec;
 use serde_json::Value;
 use tokio::time::Instant;
 use tracing::{error};
 use exchanges::response_base::ResponseData;
 use global::trace_stack::TraceStack;
-use crate::{Account, MarketOrder, Order, Position, PositionModeEnum, SpecialDepth, SpecialOrder, SpecialTicker};
+use crate::{Account, MarketOrder, Order, Position, PositionModeEnum, SpecialDepth, SpecialOrder};
 
 // 处理账号信息
 pub fn handle_account_info(res_data: ResponseData, symbol: String) -> Account {
@@ -121,28 +120,28 @@ pub fn format_order_item(order: serde_json::Value, ct_val: Decimal) -> Order {
 }
 // 处理特殊Ticket信息
 pub fn handle_special_ticker(res_data: &ResponseData) -> SpecialDepth {
-    let depth_asks = format_depth_items(res_data.data["asks"].clone());
-    let depth_bids = format_depth_items(res_data.data["bids"].clone());
-    let t = Decimal::from_str(&res_data.data["t"].to_string()).unwrap();
-    let create_at = res_data.data["t"].as_i64().unwrap() * 1000;
-
-    let ap = depth_asks[0].price;
-    let bp = depth_bids[0].price;
-    let aq = depth_asks[0].amount;
-    let bq = depth_bids[0].amount;
-    let mp = (bp + ap) * dec!(0.5);
-    let ticker_info = SpecialTicker { sell: ap, buy: bp, mid_price: mp, t, create_at };
-    let depth_info = vec![bp, bq, ap, aq];
+    // let depth_asks = format_depth_items(&res_data.data["asks"]);
+    // let depth_bids = format_depth_items(&res_data.data["bids"]);
+    // let t = Decimal::from_str(&res_data.data["t"].to_string()).unwrap();
+    // let create_at = res_data.data["t"].as_i64().unwrap() * 1000;
+    //
+    // let ap = depth_asks[0].price;
+    // let bp = depth_bids[0].price;
+    // let aq = depth_asks[0].amount;
+    // let bq = depth_bids[0].amount;
+    // let mp = (bp + ap) * dec!(0.5);
+    // let ticker_info = SpecialTicker { sell: ap, buy: bp, mid_price: mp, t, create_at };
+    // let depth_info = vec![bp, bq, ap, aq];
     SpecialDepth {
         name: (*res_data).label.clone(),
-        depth: depth_info,
-        ticker: ticker_info,
-        t,
-        create_at,
+        depth: Default::default(),
+        ticker: Default::default(),
+        t: Default::default(),
+        create_at: Default::default(),
     }
 }
 
-pub fn format_depth_items(value: serde_json::Value) -> Vec<MarketOrder> {
+pub fn format_depth_items(value: &Value) -> Vec<MarketOrder> {
     let mut depth_items: Vec<MarketOrder> = vec![];
     for value in value.as_array().unwrap() {
         depth_items.push(MarketOrder {

+ 3 - 2
standard/src/handle_info.rs

@@ -153,6 +153,7 @@ impl HandleSwapInfo {
 pub fn make_special_depth(label: String, depth_asks: &mut Vec<MarketOrder>, depth_bids: &mut Vec<MarketOrder>, t: Decimal, create_at: i64) -> SpecialDepth{
     depth_asks.sort_by(|a, b| a.price.partial_cmp(&b.price).unwrap_or(Ordering::Equal));
     depth_bids.sort_by(|a, b| b.price.partial_cmp(&a.price).unwrap_or(Ordering::Equal));
+    // TODO 不排序的话,有4us可以省下来。
     let mp = (depth_asks[0].price + depth_bids[0].price) * dec!(0.5);
     let step = (public_params::EFF_RANGE * mp / Decimal::from_usize(public_params::LEVEL).unwrap()).round_dp(mp.scale());
     let mut ap = Vec::new();
@@ -233,8 +234,8 @@ pub fn format_depth(exchange: ExchangeEnum, res_data: &ResponseData) -> DepthPar
             create_at = res_data.data["E"].as_i64().unwrap() * 1000;
         }
         ExchangeEnum::GateSwap => {
-            depth_asks = gate_swap_handle::format_depth_items(res_data.data["asks"].clone());
-            depth_bids = gate_swap_handle::format_depth_items(res_data.data["bids"].clone());
+            depth_asks = gate_swap_handle::format_depth_items(&res_data.data["asks"]);
+            depth_bids = gate_swap_handle::format_depth_items(&res_data.data["bids"]);
             // todo! 有id可以取 保证与py一致
             t = Decimal::from_str(&res_data.data["t"].to_string()).unwrap();
             create_at = res_data.data["t"].as_i64().unwrap() * 1000;

+ 1 - 1
standard/src/lib.rs

@@ -175,7 +175,7 @@ impl SpecialDepth {
 /// - `mid_price(Decimal)`: 平均价
 /// - `t(Decimal)`: 数据更新id
 /// - `create_at(i64)`: 数据生成时间
-#[derive(Debug, Clone, PartialEq, Eq)]
+#[derive(Debug, Clone, PartialEq, Eq, Default)]
 pub struct SpecialTicker {
     pub sell: Decimal,
     pub buy: Decimal,

+ 0 - 2
strategy/src/binance_usdt_swap.rs

@@ -84,8 +84,6 @@ async fn on_data(core_arc_clone: Arc<Mutex<Core>>,
         let label = data.label.clone();
         let special_depth = standard::handle_info::HandleSwapInfo::handle_special_ticker(BinanceSwap, &data);
 
-        TraceStack::show_delay(&data.ins);
-
         on_special_depth(core_arc_clone, update_flag_u, label, trace_stack, special_depth).await;
     } else if data.channel == "depth" {
         // 将depth数据转换为模拟深度