Quellcode durchsuchen

修复止损。

skyffire vor 1 Jahr
Ursprung
Commit
62f62a435e
2 geänderte Dateien mit 11 neuen und 3 gelöschten Zeilen
  1. 2 2
      strategy/src/core.rs
  2. 9 1
      strategy/src/strategy.rs

+ 2 - 2
strategy/src/core.rs

@@ -503,7 +503,7 @@ impl Core {
                         // 更新策略时间
                         self.strategy.local_time = Utc::now().timestamp_millis();
                         // trace_stack.on_before_strategy();
-                        let mut order = self.strategy.do_strategy(&mut self.avellaneda_stoikov, &self.local_orders);
+                        let mut order = self.strategy.do_strategy(&mut self.avellaneda_stoikov, &self.local_orders, &self.local_coin, &self.local_cash);
                         // trace_stack.on_after_strategy();
                         // 记录指令触发信息
                         if order.is_not_empty() {
@@ -637,7 +637,7 @@ impl Core {
             self.strategy.local_time = Utc::now().timestamp_millis();
 
             // 产生交易信号
-            let mut orders = self.strategy.do_strategy(&mut self.avellaneda_stoikov, &self.local_orders);
+            let mut orders = self.strategy.do_strategy(&mut self.avellaneda_stoikov, &self.local_orders, &self.local_coin, &self.local_cash);
             trace_stack.on_after_strategy();
 
             if orders.is_not_empty() {

+ 9 - 1
strategy/src/strategy.rs

@@ -1083,7 +1083,15 @@ impl Strategy {
         return command;
     }
 
-    pub fn do_strategy(&mut self, predictor: &mut AvellanedaStoikov, local_orders: &HashMap<String, OrderInfo>) -> OrderCommand {
+    pub fn do_strategy(&mut self, predictor: &mut AvellanedaStoikov, local_orders: &HashMap<String, OrderInfo>, local_coin: &Decimal, local_cash: &Decimal) -> OrderCommand {
+        // 更新当前账户余额
+        self.coin = local_coin.clone();
+        self.cash = local_cash.clone();
+        self.equity = local_cash + local_coin * self.mp;
+        if self.equity > self.max_equity {
+            self.max_equity = self.equity;
+        }
+
         self.ref_ap = predictor.optimal_ask_price;
         self.ref_bp = predictor.optimal_bid_price;
         self.ref_price = predictor.ref_price;