Kaynağa Gözat

看看利润

skyffire 10 ay önce
ebeveyn
işleme
85bb88aef8
1 değiştirilmiş dosya ile 15 ekleme ve 1 silme
  1. 15 1
      strategy/src/predictor.rs

+ 15 - 1
strategy/src/predictor.rs

@@ -21,6 +21,7 @@ pub struct Predictor {
     pub trade_long_vec: FixedTimeRangeDeque<Trade>,                             // 交易队列
     pub trade_short_vec: FixedTimeRangeDeque<Trade>,                            // 交易队列
     pub trade_fixed_vec: Vec<Trade>,                                            // 交易队列(观察持仓后的资金流)
+    pub profit_fixed_vec: Vec<Decimal>,                                         // 利润队列
     pub spread_vec: Vec<Decimal>,                                               // 价差队列
     pub record_vec: VecDeque<Record>,                                           // 蜡烛队列
 
@@ -146,6 +147,7 @@ impl Predictor {
             trade_long_vec: FixedTimeRangeDeque::new(Self::TRADE_LONG_RANGE_MICROS),
             trade_short_vec: FixedTimeRangeDeque::new(Self::TRADE_SHORT_RANGE_MICROS),
             trade_fixed_vec: vec![],
+            profit_fixed_vec: vec![],
             record_vec: VecDeque::new(),
 
             mid_price: Default::default(),
@@ -212,6 +214,16 @@ impl Predictor {
             self.mid_price = (self.ask_price + self.bid_price) / Decimal::TWO;
 
             self.mid_price_time_vec.push_back(self.mid_price);
+
+            if !self.inventory.is_zero() {
+                let profit_now = if self.inventory > Decimal::ZERO {
+                    (self.mid_price - self.pos_avg_price) / self.pos_avg_price
+                } else {
+                    (self.pos_avg_price - self.mid_price) / self.pos_avg_price
+                };
+
+                self.profit_fixed_vec.push(profit_now);
+            }
         }
 
         self.update_fair_price(depth, index).await;
@@ -292,6 +304,8 @@ impl Predictor {
         // 重置资金流计算
         if prev_inventory != self.inventory && self.inventory.is_zero() {
             self.trade_fixed_vec.clear();
+            self.profit_fixed_vec.clear();
+
             self.error_rate = Decimal::ZERO;
         }
 
@@ -662,7 +676,7 @@ impl Predictor {
         let inventory = self.inventory;
 
         // 这个是过去一段时间的价格变化幅度显示
-        let sigma_square = self.trades_volume_short_ema;
+        let sigma_square = self.profit_fixed_vec.iter().sum();
         // let sigma_square = self.error_rate;
 
         let gamma = self.fair_rate_focus_open;