Browse Source

图表更新逻辑。

skyffire 9 months ago
parent
commit
91bd70c789
1 changed files with 11 additions and 6 deletions
  1. 11 6
      strategy/src/predictor.rs

+ 11 - 6
strategy/src/predictor.rs

@@ -335,11 +335,14 @@ impl Predictor {
         }
     }
 
-    pub async fn update_delta(&mut self) {
+    pub async fn update_delta(&mut self) -> bool {
         if self.mid_price.is_zero() {
-            return;
+            return false;
         }
 
+        let prev_bid_delta = self.bid_delta;
+        let prev_ask_delta = self.ask_delta;
+
         let is_close_long = self.inventory > Decimal::ZERO && (self.fair_price < self.mid_price * (Decimal::ONE + self.params.close));
         let is_close_short = self.inventory < Decimal::ZERO && (self.fair_price > self.mid_price * (Decimal::ONE - self.params.close));
 
@@ -376,6 +379,8 @@ impl Predictor {
 
         self.optimal_ask_price.rescale(self.mid_price.scale());
         self.optimal_bid_price.rescale(self.mid_price.scale());
+
+        prev_ask_delta != self.ask_delta || prev_bid_delta != self.bid_delta
     }
 
     pub fn check_ready(&mut self) {
@@ -453,7 +458,7 @@ impl Predictor {
             return;
         }
 
-        self.update_delta().await;
+        let is_delta_changed = self.update_delta().await;
 
         // let cci_arc = self.cci_arc.clone();
         let now = data_time;
@@ -489,11 +494,11 @@ impl Predictor {
 
         let flow_ratio = Decimal::ZERO;
 
-        let need_append = now - self.prev_insert_time > dec!(100);
-        if !need_append && !is_hard_update {
+        let is_time_over_update = now - self.prev_insert_time > dec!(500);
+        if !is_time_over_update && !is_hard_update && !is_delta_changed {
             return;
         }
-        if !is_hard_update {
+        if is_time_over_update {
             self.prev_insert_time = Decimal::from(Utc::now().timestamp_millis())
         }
         let pos_avg_price = self.pos_avg_price;