Selaa lähdekoodia

修复一些行情问题

skyffire 9 kuukautta sitten
vanhempi
commit
94df24e16b
2 muutettua tiedostoa jossa 9 lisäystä ja 10 poistoa
  1. 1 2
      strategy/src/core.rs
  2. 8 8
      strategy/src/predictor.rs

+ 1 - 2
strategy/src/core.rs

@@ -633,8 +633,7 @@ impl Core {
                 self.market_update_interval.insert(name_ref.clone(), value * dec!(0.999) + interval * dec!(0.001));
             }
         }
-        self.market_update_time.insert(self.trade_name.clone(), now_time);
-        self.market_update_time.insert(self.ref_name[0].clone(), now_time);
+        self.market_update_time.insert(name_ref.clone(), now_time);
 
         // ================================ 在系统已经准备就绪的情况下,更新相关参数 =========================================
         if self.mode_signal == 0 && self.ready == 1 {

+ 8 - 8
strategy/src/predictor.rs

@@ -135,9 +135,9 @@ impl Predictor {
             depth_vec: vec![Depth::new(); params.ref_exchange.len()],
             fair_price_std_vec: vec![Decimal::ZERO; params.ref_exchange.len()],
             fair_price_vec: vec![Decimal::ZERO; params.ref_exchange.len()],
+            price_avg_times_vec: vec![Decimal::ZERO; params.ref_exchange.len()],
+            spread_vec: vec![Decimal::ZERO; params.ref_exchange.len()],
 
-            // 老的队列
-            spread_vec: vec![],
             trade_long_vec: FixedTimeRangeDeque::new(Self::TRADE_LONG_RANGE_MICROS),
             trade_short_vec: FixedTimeRangeDeque::new(Self::TRADE_SHORT_RANGE_MICROS),
             profit_point_vec: vec![],
@@ -164,8 +164,6 @@ impl Predictor {
             fair_rate_focus_close: Default::default(),
             mid_price_focus_close: Default::default(),
 
-            price_avg_times_vec: Default::default(),
-
             is_ready: false,
             prev_trade_time: Utc::now().timestamp_micros(),
             t_diff: Default::default(),
@@ -320,7 +318,7 @@ impl Predictor {
         self.price_avg_times_vec[index] = if self.price_avg_times_vec[index].is_zero() {
             self.fair_price_vec[index] / self.mid_price
         } else {
-            self.price_avg_times_vec[index] * dec!(0.9995) + dec!(0.0005) * self.fair_price_std_vec[1] / self.fair_price_std_vec[0]
+            self.price_avg_times_vec[index] * dec!(0.9995) + dec!(0.0005) * self.fair_price_vec[index] / self.mid_price
         };
 
         // 合成公平价格
@@ -566,9 +564,11 @@ impl Predictor {
            return;
         }
 
-        // if self.fair_price == Decimal::ZERO {
-        //     return;
-        // }
+        for fair_price in &self.fair_price_vec {
+            if fair_price.is_zero() {
+                return;
+            }
+        }
 
         if self.ask_price == Decimal::ZERO {
             return;