Pārlūkot izejas kodu

屏蔽持仓均价异常

skyffire 9 mēneši atpakaļ
vecāks
revīzija
305f4c22f1
2 mainītis faili ar 27 papildinājumiem un 27 dzēšanām
  1. 21 21
      strategy/src/core.rs
  2. 6 6
      strategy/src/predictor.rs

+ 21 - 21
strategy/src/core.rs

@@ -1046,27 +1046,27 @@ impl Core {
             }
         }
 
-        // 持仓均价异常风控(浮盈风控)
-        if self.strategy.long_pos_bias != Decimal::ZERO {
-            if self.strategy.long_hold_value > Decimal::TWO * self.strategy.min_amount_value {
-                if self.strategy.long_pos_bias > dec!(4) || self.strategy.long_pos_bias < -Decimal::TWO {
-                    let exit_msg = format!("{} long_pos_bias: {},持仓均价异常(mp: {}, avg: {}),退出。", self.params.account_name, self.strategy.long_pos_bias, self.strategy.mp, self.strategy.pos.long_avg);
-                    warn!(exit_msg);
-                    self.exit_msg = exit_msg;
-                    self.stop().await;
-                }
-            }
-        }
-        if self.strategy.short_pos_bias != Decimal::ZERO {
-            if self.strategy.short_hold_value > Decimal::TWO * self.strategy.min_amount_value {
-                if self.strategy.short_pos_bias > dec!(4) || self.strategy.short_pos_bias < -Decimal::TWO {
-                    let exit_msg = format!("{} short_pos_bias: {},持仓均价异常(mp: {}, avg: {}),退出。", self.params.account_name, self.strategy.short_pos_bias, self.strategy.mp, self.strategy.pos.short_avg);
-                    warn!(exit_msg);
-                    self.exit_msg = exit_msg;
-                    self.stop().await;
-                }
-            }
-        }
+        // // 持仓均价异常风控(浮盈风控)
+        // if self.strategy.long_pos_bias != Decimal::ZERO {
+        //     if self.strategy.long_hold_value > Decimal::TWO * self.strategy.min_amount_value {
+        //         if self.strategy.long_pos_bias > dec!(4) || self.strategy.long_pos_bias < -Decimal::TWO {
+        //             let exit_msg = format!("{} long_pos_bias: {},持仓均价异常(mp: {}, avg: {}),退出。", self.params.account_name, self.strategy.long_pos_bias, self.strategy.mp, self.strategy.pos.long_avg);
+        //             warn!(exit_msg);
+        //             self.exit_msg = exit_msg;
+        //             self.stop().await;
+        //         }
+        //     }
+        // }
+        // if self.strategy.short_pos_bias != Decimal::ZERO {
+        //     if self.strategy.short_hold_value > Decimal::TWO * self.strategy.min_amount_value {
+        //         if self.strategy.short_pos_bias > dec!(4) || self.strategy.short_pos_bias < -Decimal::TWO {
+        //             let exit_msg = format!("{} short_pos_bias: {},持仓均价异常(mp: {}, avg: {}),退出。", self.params.account_name, self.strategy.short_pos_bias, self.strategy.mp, self.strategy.pos.short_avg);
+        //             warn!(exit_msg);
+        //             self.exit_msg = exit_msg;
+        //             self.stop().await;
+        //         }
+        //     }
+        // }
 
         // 订单撤单异常风控
         for (client_id, cancel_delay) in self.local_cancel_log.clone() {

+ 6 - 6
strategy/src/predictor.rs

@@ -387,13 +387,13 @@ impl Predictor {
         let is_open_long = self.force_order_value < -self.params.open
             && self.inventory < self.params.grid
             && self.inventory >= Decimal::ZERO
-            && (self.mid_price < self.prev_trade_price * dec!(0.995) || self.prev_trade_price.is_zero())
-            && self.force_order_value < (self.prev_trade_force_order_value + Decimal::NEGATIVE_ONE);
+            && (self.mid_price < self.prev_trade_price * dec!(0.99) || self.prev_trade_price.is_zero())
+            && self.force_order_value < self.prev_trade_force_order_value;
         let is_open_short = self.force_order_value > self.params.open
             && self.inventory > -self.params.grid
             && self.inventory <= Decimal::ZERO
-            && (self.mid_price > self.prev_trade_price * dec!(1.005) || self.prev_trade_price.is_zero())
-            && self.force_order_value > (self.prev_trade_force_order_value + Decimal::ONE);
+            && (self.mid_price > self.prev_trade_price * dec!(1.01) || self.prev_trade_price.is_zero())
+            && self.force_order_value > self.prev_trade_force_order_value;
 
         let (is_close_long, is_close_short) = match self.params.close_difficulty.as_str() {
             "easy" => {
@@ -403,8 +403,8 @@ impl Predictor {
                 (is_close_long, is_close_short)
             },
             "normal" => {
-                let is_close_long = self.inventory > Decimal::ZERO && self.force_order_value > self.params.open * dec!(0.8);
-                let is_close_short = self.inventory < Decimal::ZERO && self.force_order_value < -self.params.open * dec!(0.8);
+                let is_close_long = self.inventory > Decimal::ZERO && self.force_order_value > self.params.open * dec!(0.5);
+                let is_close_short = self.inventory < Decimal::ZERO && self.force_order_value < -self.params.open * dec!(0.5);
 
                 (is_close_long, is_close_short)
             },