Parcourir la source

打包同时观察多个pair

skyffire il y a 9 mois
Parent
commit
285939dd9d
2 fichiers modifiés avec 13 ajouts et 6 suppressions
  1. 12 5
      strategy/src/predictor.rs
  2. 1 1
      strategy/src/strategy.rs

+ 12 - 5
strategy/src/predictor.rs

@@ -45,6 +45,7 @@ pub struct Predictor {
     pub fair_price_vec: Vec<Decimal>,                                           // 公平价格列表
     pub fair_price_std_vec: Vec<Decimal>,                                       // 公平价格列表,标准化之后的
     pub price_avg_times_vec: Vec<Decimal>,                                      // 公平所与做市所的价格倍率的平均值
+    pub price_avg_times_long_vec: Vec<Decimal>,                                 // 公平所与做市所的价格倍率的平均值
 
     pub is_ready: bool,                                                         // 是否已准备好
 
@@ -122,6 +123,7 @@ impl Predictor {
             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()],
+            price_avg_times_long_vec: vec![Decimal::ZERO; params.ref_exchange.len()],
             spread_vec: vec![Decimal::ZERO; params.ref_exchange.len()],
 
             record_vec: VecDeque::new(),
@@ -252,10 +254,15 @@ impl Predictor {
         self.fair_price_vec[index].rescale(self.mid_price.scale());
 
         // 求价格倍率
-        self.price_avg_times_vec[index] = if self.price_avg_times_vec[index].is_zero() {
+        self.price_avg_times_vec[index] = if !self.is_ready {
             self.fair_price_vec[index] / self.mid_price
         } else {
-            self.price_avg_times_vec[index] * dec!(0.9999) + dec!(0.0001) * self.fair_price_vec[index] / self.mid_price
+            self.price_avg_times_vec[index] * dec!(0.999) + dec!(0.001) * self.fair_price_vec[index] / self.mid_price
+        };
+        self.price_avg_times_long_vec[index] = if !self.is_ready {
+            self.fair_price_vec[index] / self.mid_price
+        } else {
+            self.price_avg_times_long_vec[index] * dec!(0.9999) + dec!(0.0001) * self.fair_price_vec[index] / self.mid_price
         };
 
         // 合成公平价格
@@ -396,9 +403,9 @@ impl Predictor {
         let last_price = Self::DONT_VIEW;
         let fair_price = Self::DONT_VIEW;
 
-        let spread = self.mid_price;
-        let spread_min = self.fair_price_std_vec[0];
-        let spread_max = self.fair_price_vec[0];
+        let spread = self.fair_price_vec[0] / self.mid_price;
+        let spread_min = self.price_avg_times_vec[0];
+        let spread_max = self.price_avg_times_long_vec[0];
         // let spread = self.price_times_avg;
         // let spread_max = self.fair_price_vec[1] / self.fair_price_vec[0];
         // let spread_min = self.fair_price / self.mid_price;

+ 1 - 1
strategy/src/strategy.rs

@@ -1091,7 +1091,7 @@ impl Strategy {
 
         self._cancel_open(&mut command, local_orders, predictor);   // 撤单命令处理
         self._post_close(&mut command, local_orders, predictor);    // 平仓单命令处理
-        self._post_open(&mut command, local_orders, predictor);     // 限价单命令处理
+        // self._post_open(&mut command, local_orders, predictor);     // 限价单命令处理
         self._check_local_orders(&mut command, local_orders);       // 固定时间检查超时订单
         self._update_in_cancel(&mut command, local_orders);         // 更新撤单队列,是一个filter
         self._check_request_limit(&mut command);                    // 限制频率,移除不合规则之订单,是一个filter