skyffire 10 月之前
父节点
当前提交
b72e9a9d37
共有 1 个文件被更改,包括 15 次插入29 次删除
  1. 15 29
      strategy/src/predictor.rs

+ 15 - 29
strategy/src/predictor.rs

@@ -360,14 +360,12 @@ impl Predictor {
             long_rate.rescale(8);
 
             // 重置开仓焦点,条件1
-            if !self.fair_rate_focus_open.is_zero() {
-                if self.fair_rate_focus_open > Decimal::ZERO && self.spread < Decimal::ZERO {
-                    self.fair_rate_focus_open = Decimal::ZERO;
-                }
-
-                if self.fair_rate_focus_open < Decimal::ZERO && self.spread > Decimal::ZERO {
-                    self.fair_rate_focus_open = Decimal::ZERO;
-                }
+            if !self.fair_rate_focus_open.is_zero() && self.spread.abs() < self.params.open_activate {
+                self.fair_rate_focus_open = Decimal::ZERO;
+            }
+            // 重置开仓焦点,条件2
+            if !self.fair_rate_focus_open.is_zero() && !self.inventory.is_zero() {
+                self.fair_rate_focus_open = Decimal::ZERO;
             }
 
             // 更新程序关注的开仓焦点
@@ -388,28 +386,16 @@ impl Predictor {
 
             // ============================ 平仓逻辑处理 =======================
             // close_rate:
-            //  大于0:当前价格在均线之上
-            //  小于0:当前价格在均线之下
-            let close_rate = self.spread.clone();
+            //  大于0:fair>mm
+            //  小于0:fair<mm
             // 重置平仓焦点,条件1
             if !self.fair_rate_focus_close.is_zero() && self.inventory.is_zero() {
                 self.fair_rate_focus_close = Decimal::ZERO;
             }
-            // // 重置平仓焦点,条件2
-            // if !self.fair_rate_focus_close.is_zero() {
-            //     if self.fair_rate_focus_close > Decimal::ZERO && close_rate < Decimal::ZERO {
-            //         self.fair_rate_focus_close = Decimal::ZERO;
-            //     }
-            //
-            //     if self.fair_rate_focus_close < Decimal::ZERO && close_rate > Decimal::ZERO {
-            //         self.fair_rate_focus_close = Decimal::ZERO;
-            //     }
-            // }
             // 更新程序关注的平仓焦点
-            let close_activate = Decimal::ZERO;
-            if self.fair_rate_focus_close.is_zero() && !self.inventory.is_zero() && close_rate.abs() > close_activate {
+            if self.fair_rate_focus_close.is_zero() && !self.inventory.is_zero() {
                 // 多单平仓逻辑
-                if self.inventory > Decimal::ZERO && close_rate < Decimal::ZERO {
+                if self.inventory > Decimal::ZERO && self.spread_ema_1000 < Decimal::ZERO {
                     // 是否强干扰平仓
                     let target_price = if self.params.is_strong_interfere {
                         self.pos_avg_price + self.params.open_activate * self.mid_price * self.t_diff * dec!(0.5)
@@ -418,16 +404,16 @@ impl Predictor {
                     };
 
                     if self.mid_price > target_price {
-                        self.fair_rate_focus_close = close_rate;
+                        self.fair_rate_focus_close = self.spread_ema_1000;
                         self.fair_price_focus_close = self.fair_price;
                     } else if self.t_diff.is_zero() {
-                        self.fair_rate_focus_close = close_rate;
+                        self.fair_rate_focus_close = self.spread_ema_1000;
                         self.fair_price_focus_close = self.fair_price;
                     }
                 }
 
                 // 空单平仓逻辑
-                if self.inventory < Decimal::ZERO && close_rate > Decimal::ZERO {
+                if self.inventory < Decimal::ZERO && self.spread_ema_1000 > Decimal::ZERO {
                     // 是否强干扰平仓
                     let target_price = if self.params.is_strong_interfere {
                         self.pos_avg_price - self.params.open_activate * self.mid_price * self.t_diff * dec!(0.5)
@@ -436,10 +422,10 @@ impl Predictor {
                     };
 
                     if self.mid_price < target_price {
-                        self.fair_rate_focus_close = close_rate;
+                        self.fair_rate_focus_close = self.spread_ema_1000;
                         self.fair_price_focus_close = self.fair_price;
                     } else if self.t_diff.is_zero() {
-                        self.fair_rate_focus_close = close_rate;
+                        self.fair_rate_focus_close = self.spread_ema_1000;
                         self.fair_price_focus_close = self.fair_price;
                     }
                 }