Bladeren bron

新的时间架构,可以显示接收时网络层消耗时间。

skyfffire 1 jaar geleden
bovenliggende
commit
9320119793

+ 11 - 1
global/src/trace_stack.rs

@@ -5,6 +5,7 @@ use rust_decimal::prelude::ToPrimitive;
 
 #[derive(Debug, Clone, PartialEq, Eq)]
 pub struct TraceStack {
+    pub before_network: i64,                // 官方数据生成时间
     pub after_network: i64,                 // 到达网络层时间
     pub before_quant: i64,                  // quant层执行开始时间(也是通道+锁走完后的时间)
     pub after_quant: i64,                   // quant层执行结束时间
@@ -24,7 +25,11 @@ pub struct TraceStack {
 }
 
 impl TraceStack {
-    pub fn on_network(&mut self, after_network: i64) {
+    pub fn on_before_network(&mut self, before_network_millis: i64) {
+        self.before_network = before_network_millis;
+    }
+
+    pub fn on_after_network(&mut self, after_network: i64) {
         self.after_network = after_network;
     }
 
@@ -92,6 +97,10 @@ impl fmt::Display for TraceStack {
             msg.push_str(format!("订单来源:{} ", self.source).as_str());
         }
 
+        if self.before_network != 0 && self.after_network != 0 {
+            msg.push_str(format!("数据生成+到达rust耗时{}微秒  ", self.after_network - self.before_network * 1000).as_str());
+        }
+
         if self.before_quant != 0 && self.after_network != 0 {
             msg.push_str(format!("通道+锁耗时{}微秒  ", self.before_quant - self.after_network).as_str());
         }
@@ -123,6 +132,7 @@ impl fmt::Display for TraceStack {
 impl Default for TraceStack {
     fn default() -> Self {
         TraceStack {
+            before_network: 0,
             after_network: 0,
             before_format: 0,
             after_format: 0,

+ 1 - 1
src/quant_libs.rs

@@ -51,7 +51,7 @@ pub async fn init(params: Params, ws_running: Arc<AtomicBool>, running: Arc<Atom
                 Some(order) => {
                     // 刚下的订单有可能会成交,所以有几率触发后续订单逻辑,所以这里也是一个订单触发逻辑
                     let mut trace_stack = TraceStack::default();
-                    trace_stack.on_network(Utc::now().timestamp_micros());
+                    trace_stack.on_after_network(Utc::now().timestamp_micros());
                     trace_stack.on_before_quant();
 
                     if order.status != "NULL" {

+ 1 - 1
strategy/src/binance_spot.rs

@@ -48,7 +48,7 @@ pub async fn reference_binance_spot_run(_bool_v1 :Arc<AtomicBool>, _quant_arc: A
 #[allow(dead_code)]
 async fn on_data(bot_arc_clone: Arc<Mutex<Quant>>, update_flag_u: &mut i64, max_buy: &mut Decimal, min_sell: &mut Decimal, data: ResponseData) {
     let mut trace_stack = TraceStack::default();
-    trace_stack.on_network(data.time);
+    trace_stack.on_after_network(data.time);
     trace_stack.on_before_quant();
 
     if data.code != "200".to_string() {

+ 1 - 1
strategy/src/binance_usdt_swap.rs

@@ -55,7 +55,7 @@ async fn on_data(bot_arc_clone: Arc<Mutex<Quant>>,
                  min_sell: &mut Decimal,
                  data: ResponseData) {
     let mut trace_stack = TraceStack::default();
-    trace_stack.on_network(data.time);
+    trace_stack.on_after_network(data.time);
     trace_stack.on_before_quant();
 
     if data.code != "200".to_string() {

+ 1 - 1
strategy/src/bitget_spot.rs

@@ -84,7 +84,7 @@ pub async fn bitget_spot_run(_bool_v1 :Arc<AtomicBool>, _type_num: i8, _quant_ar
 async fn on_data(bot_arc_clone: Arc<Mutex<Quant>>, ct_val: Decimal, max_buy: &mut Decimal, min_sell: &mut Decimal, data: ResponseData) {
     let mut trace_stack = TraceStack::default();
 
-    trace_stack.on_network(data.time);
+    trace_stack.on_after_network(data.time);
     trace_stack.on_before_quant();
 
     if data.code != "200".to_string() {

+ 1 - 1
strategy/src/gate_swap.rs

@@ -99,7 +99,7 @@ async fn on_data(bot_arc_clone: Arc<Mutex<Quant>>,
                  min_sell: &mut Decimal,
                  data: ResponseData) {
     let mut trace_stack = TraceStack::default();
-    trace_stack.on_network(data.time);
+    trace_stack.on_after_network(data.time);
     trace_stack.on_before_quant();
 
     if data.code != "200".to_string() {

+ 1 - 1
strategy/src/kucoin_spot.rs

@@ -55,7 +55,7 @@ pub async fn kucoin_spot_run(_bool_v1 :Arc<AtomicBool>, _type_num: i8, _quant_ar
 #[allow(dead_code)]
 async fn on_data(bot_arc_clone: Arc<Mutex<Quant>>, _multiplier: Decimal, _max_buy: &mut Decimal, _min_sell: &mut Decimal, data: ResponseData) {
     let mut trace_stack = TraceStack::default();
-    trace_stack.on_network(data.time);
+    trace_stack.on_after_network(data.time);
     trace_stack.on_before_quant();
 
     if data.code != "200".to_string() {

+ 1 - 1
strategy/src/kucoin_swap.rs

@@ -111,7 +111,7 @@ async fn on_data(bot_arc_clone: Arc<Mutex<Quant>>,
                  min_sell: &mut Decimal,
                  data: ResponseData) {
     let mut trace_stack = TraceStack::default();
-    trace_stack.on_network(data.time);
+    trace_stack.on_after_network(data.time);
     trace_stack.on_before_quant();
 
     if data.code != "200".to_string() {