浏览代码

平仓就留了两种模式,主要是看开点。

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

+ 15 - 20
strategy/src/predictor.rs

@@ -159,9 +159,9 @@ impl Predictor {
 
             record_vec: VecDeque::new(),
 
-            mid_price_long_vec: FixedTimeRangeDeque::new(5_000_000),
-            mid_price_short_vec: FixedTimeRangeDeque::new(1_000_000),
-            fair_price_short_vec: FixedTimeRangeDeque::new(1_000_000),
+            mid_price_long_vec: FixedTimeRangeDeque::new(10_000_000),
+            mid_price_short_vec: FixedTimeRangeDeque::new(2_000_000),
+            fair_price_short_vec: FixedTimeRangeDeque::new(2_000_000),
 
             spread_vec: VecDeque::new(),
             mid_price: Default::default(),
@@ -430,35 +430,30 @@ impl Predictor {
         let prev_ask_delta = self.ask_delta;
 
         let now = Decimal::from(Utc::now().timestamp_millis());
-        let is_holding_time_over = dec!(2) * dec!(60_000);
 
         let is_close_long = self.inventory > Decimal::ZERO && (
-            // 反转平仓1
-            (self.trend_long_rate > dec!(0.005))
-            // 达到最大持仓时间还未盈利就平仓
-            || (now - self.prev_open_time > is_holding_time_over && self.mid_price < self.pos_avg_price)
-            // 达到最大持仓时间,追踪止盈
-            || (now - self.prev_open_time > is_holding_time_over && self.profit < self.profit_high * dec!(0.75))
+            // 硬止损
+            (self.profit < dec!(-0.01))
+            // 利润较大时,追踪止盈
+            || (self.profit_high > dec!(0.01) && self.profit < self.profit_high * dec!(0.75))
         );
         let is_close_short = self.inventory < Decimal::ZERO && (
-            // 反转平仓1
-            (self.trend_long_rate < dec!(-0.005))
-            // 达到最大持仓时间还未盈利就平仓
-            || (now - self.prev_open_time > is_holding_time_over && self.mid_price > self.pos_avg_price)
-            // 达到最大持仓时间,追踪止盈
-            || (now - self.prev_open_time > is_holding_time_over && self.profit < self.profit_high * dec!(0.75))
+            // 硬止损
+            (self.profit < dec!(-0.01))
+            // 利润较大时,追踪止盈
+            || (self.profit_high > dec!(0.01) && self.profit < self.profit_high * dec!(0.75))
         );
         let is_open_long = self.inventory.is_zero()
             && self.fair_price > self.mid_price * (Decimal::ONE + self.params.open)
             && self.trend_long_rate < dec!(-0.005)
-            && self.trend_short_rate < Decimal::ZERO
             && self.fair_rate > Decimal::ZERO
+            && self.fair_rate > self.trend_short_rate + dec!(0.0001)
         ;
         let is_open_short = self.inventory.is_zero()
             && self.fair_price < self.mid_price * (Decimal::ONE - self.params.open)
             && self.trend_long_rate > dec!(0.005)
-            && self.trend_short_rate > Decimal::ZERO
             && self.fair_rate < Decimal::ZERO
+            && self.fair_rate < self.trend_short_rate - dec!(0.0001)
         ;
 
         // 使信号有一定持续性
@@ -477,9 +472,9 @@ impl Predictor {
             self.trade_condition_time = now;
         }
 
-        // 开仓信号要过期,只保留5
+        // 开仓信号要过期,只保留2
         if (self.trade_condition == dec!(3) || self.trade_condition == dec!(4))
-            && now - self.trade_condition_time > dec!(5_000) {
+            && now - self.trade_condition_time > dec!(2_000) {
             self.trade_condition = Decimal::ZERO;
         }