skyffire před 10 měsíci
rodič
revize
dc6c7a5d63
1 změnil soubory, kde provedl 26 přidání a 45 odebrání
  1. 26 45
      strategy/src/predictor.rs

+ 26 - 45
strategy/src/predictor.rs

@@ -354,50 +354,33 @@ impl Predictor {
                 return;
             }
 
-            let mut rate = Self::get_real_rate(&self.fair_price_time_vec);
+            // let mut rate = Self::get_real_rate(&self.fair_price_time_vec);
             let mut long_rate = Self::get_real_rate(&self.fair_price_long_time_vec);
-            rate.rescale(8);
+            // rate.rescale(8);
             long_rate.rescale(8);
 
             // 重置开仓焦点,条件1
             if !self.fair_rate_focus_open.is_zero() {
-                if self.fair_rate_focus_open > Decimal::ZERO && self.spread_ema_1000 < 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 < Decimal::ZERO && self.spread_ema_1000 < Decimal::ZERO {
+                if self.fair_rate_focus_open < Decimal::ZERO && self.spread > Decimal::ZERO {
                     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;
-            }
-            // 重置开仓焦点,条件3
-            if !self.fair_price_focus_open.is_zero() {
-                let focus_rate = (self.fair_price - self.fair_price_focus_open) / self.fair_price_focus_open;
-
-                if self.fair_rate_focus_open > Decimal::ZERO && focus_rate < Decimal::NEGATIVE_ONE * self.params.open_activate / Decimal::TWO {
-                    self.fair_rate_focus_open = Decimal::ZERO;
-                }
 
-                if self.fair_rate_focus_open < Decimal::ZERO && focus_rate > self.params.open_activate / Decimal::TWO {
-                    self.fair_rate_focus_open = Decimal::ZERO;
-                }
-            }
             // 更新程序关注的开仓焦点
             if self.fair_rate_focus_open.is_zero() && self.inventory.is_zero() {
                 // 只有有强度的rate才有资格被称为针
-                if rate.abs() > self.params.open_activate {
-                    // 向上涨,并且fair下穿mid,视为观测阶段开始
-                    if rate > Decimal::ZERO && self.spread_ema_1000 < Decimal::ZERO {
-                        self.fair_rate_focus_open = rate;
+                if self.spread.abs() > self.params.open_activate {
+                    if self.spread > Decimal::ZERO {
+                        self.fair_rate_focus_open = self.spread;
                         self.fair_price_focus_open = self.fair_price;
                     }
 
-                    // 向下跌,并且fair上穿mid,视为观测阶段开始
-                    if rate < Decimal::ZERO && self.spread_ema_1000 > Decimal::ZERO {
-                        self.fair_rate_focus_open = rate;
+                    if self.spread < Decimal::ZERO {
+                        self.fair_rate_focus_open = self.spread;
                         self.fair_price_focus_open = self.fair_price;
                     }
                 }
@@ -407,25 +390,23 @@ impl Predictor {
             // close_rate:
             //  大于0:当前价格在均线之上
             //  小于0:当前价格在均线之下
-            let close_rate = rate.clone();
+            let close_rate = self.spread.clone();
             // 重置平仓焦点,条件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() {
-                let focus_rate = (self.fair_price - self.fair_price_focus_close) / self.fair_price_focus_close;
-
-                if self.fair_rate_focus_close > Decimal::ZERO && focus_rate < Decimal::NEGATIVE_ONE * self.params.close_activate / Decimal::TWO {
-                    self.fair_rate_focus_close = Decimal::ZERO;
-                }
-
-                if self.fair_rate_focus_close < Decimal::ZERO && focus_rate > self.params.close_activate / Decimal::TWO {
-                    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 = self.params.open_activate / Decimal::TWO;
+            let close_activate = Decimal::ZERO;
             if self.fair_rate_focus_close.is_zero() && !self.inventory.is_zero() && close_rate.abs() > close_activate {
                 // 多单平仓逻辑
                 if self.inventory > Decimal::ZERO && close_rate > Decimal::ZERO {
@@ -508,10 +489,10 @@ impl Predictor {
         // let is_open_long = self.spread_sma_1000 - self.spread_sma > self.params.open && self.fair_price > self.mid_price;
         // let is_open_short = self.spread_sma_1000 - self.spread_sma < self.params.open * Decimal::NEGATIVE_ONE && self.fair_price < self.mid_price;
         // 可能是接针
-        let is_open_long = self.fair_rate_focus_open < Decimal::ZERO && self.fair_price > self.mid_price;
-        let is_open_short = self.fair_rate_focus_open > Decimal::ZERO && self.fair_price < self.mid_price;
-        let is_close_long = self.inventory > Decimal::ZERO && self.fair_rate_focus_close > Decimal::ZERO;
-        let is_close_short = self.inventory < Decimal::ZERO && self.fair_rate_focus_close < Decimal::ZERO;
+        let is_open_long = self.fair_rate_focus_open > Decimal::ZERO;
+        let is_open_short = self.fair_rate_focus_open < Decimal::ZERO;
+        let is_close_long = self.inventory > Decimal::ZERO && self.fair_rate_focus_close < Decimal::ZERO;
+        let is_close_short = self.inventory < Decimal::ZERO && self.fair_rate_focus_close > Decimal::ZERO;
 
         self.bid_delta = dec!(-2);
         self.ask_delta = dec!(-2);
@@ -658,7 +639,7 @@ impl Predictor {
 
         let gamma = self.fair_rate_focus_open;
 
-        let kappa = self.error_rate;
+        let kappa = self.fair_rate_focus_close;
 
         let flow_ratio = Decimal::ZERO;