소스 검색

v4.2.5: 修复pop的顺序问题。

skyffire 7 달 전
부모
커밋
7cf888c0c4
1개의 변경된 파일25개의 추가작업 그리고 18개의 파일을 삭제
  1. 25 18
      strategy/src/predictor.rs

+ 25 - 18
strategy/src/predictor.rs

@@ -471,27 +471,22 @@ impl Predictor {
 
     // side, pk,pd从HashMap移除,kd,kk添加到HashMap
     pub async fn on_order(&mut self, side: String, amount: Decimal, price: Decimal) {
-        self.inventory = match side.as_str() {
-            "kk" => {
-                self.inventory - Decimal::ONE
-            }
-            "pd" => {
-                self.inventory - Decimal::ONE
-            }
-            "kd" => {
-                self.inventory + Decimal::ONE
-            }
-            "pk" => {
-                self.inventory + Decimal::ONE
-            }
-            &_ => {
-                panic!("不认识的order方向:{}", side);
-            }
-        };
-
         if side == "kk" || side == "kd" {
             let now = Decimal::from(Utc::now().timestamp_millis());
 
+
+            self.inventory = match side.as_str() {
+                "kk" => {
+                    self.inventory - Decimal::ONE
+                }
+                "kd" => {
+                    self.inventory + Decimal::ONE
+                }
+                &_ => {
+                    panic!("不认识的order方向:{}", side);
+                }
+            };
+
             self.trade_time_vec.push_back(now);
             self.trade_side_map.insert(now, side);
             self.trade_amount_map.insert(now, amount);
@@ -508,6 +503,18 @@ impl Predictor {
                     self.trade_amount_map.remove(&pop_time);
                     self.trade_price_map.remove(&pop_time);
                     self.trade_time_vec.pop_front();
+
+                    self.inventory = match side.as_str() {
+                        "pd" => {
+                            self.inventory - Decimal::ONE
+                        }
+                        "pk" => {
+                            self.inventory + Decimal::ONE
+                        }
+                        &_ => {
+                            panic!("不认识的order方向:{}", side);
+                        }
+                    };
                 } else {
                     self.trade_amount_map.insert(pop_time, remaining_amount);
                 }