Kaynağa Gözat

还是引用之前的平仓逻辑,试试

skyffire 10 ay önce
ebeveyn
işleme
4511e25e78
1 değiştirilmiş dosya ile 46 ekleme ve 46 silme
  1. 46 46
      strategy/src/predictor.rs

+ 46 - 46
strategy/src/predictor.rs

@@ -449,7 +449,7 @@ impl Predictor {
             // close_rate:
             //  大于0:当前价格在均线之上
             //  小于0:当前价格在均线之下
-            // let close_rate = mid_rate.clone();
+            let close_rate = mid_rate.clone();
             // 重置平仓焦点,条件1
             if !self.mid_rate_focus_close.is_zero() && self.inventory.is_zero() {
                 self.mid_rate_focus_close = Decimal::ZERO;
@@ -467,56 +467,56 @@ impl Predictor {
             //     }
             // }
             // 更新程序关注的平仓焦点
-            // let close_activate = self.params.open_activate;
-            // 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 {
-            //         if self.profit_point > Decimal::ZERO {
-            //             self.fair_rate_focus_close = close_rate;
-            //             self.fair_price_focus_close = self.mid_price;
-            //         } else if self.t_diff.is_zero() {
-            //             self.fair_rate_focus_close = close_rate;
-            //             self.fair_price_focus_close = self.mid_price;
-            //         }
-            //     }
-            //
-            //     // 空单平仓逻辑
-            //     if self.inventory < Decimal::ZERO && close_rate < Decimal::ZERO {
-            //         if self.profit_point > Decimal::ZERO {
-            //             self.fair_rate_focus_close = close_rate;
-            //             self.fair_price_focus_close = self.fair_price;
-            //         } else if self.t_diff.is_zero() {
-            //             self.fair_rate_focus_close = close_rate;
-            //             self.fair_price_focus_close = self.fair_price;
-            //         }
-            //     }
-            // }
-            // 15秒以后平仓
-            let is_time_over = Utc::now().timestamp_micros() - self.prev_trade_time > 20 * 1_000_000;
-            if self.mid_rate_focus_close.is_zero() && !self.inventory.is_zero() && is_time_over {
-                if self.inventory > Decimal::ZERO {
-                    self.mid_rate_focus_close = dec!(0.01);
-                    self.fair_price_focus_close = self.mid_price;
+            let close_activate = self.params.open_activate;
+            if self.mid_rate_focus_close.is_zero() && !self.inventory.is_zero() && close_rate.abs() > close_activate {
+                // 多单平仓逻辑
+                if self.inventory > Decimal::ZERO && close_rate > Decimal::ZERO {
+                    if self.profit_point > Decimal::ZERO {
+                        self.mid_rate_focus_close = close_rate;
+                        self.fair_price_focus_close = self.mid_price;
+                    } else if self.t_diff.is_zero() {
+                        self.mid_rate_focus_close = close_rate;
+                        self.fair_price_focus_close = self.mid_price;
+                    }
                 }
-                if self.inventory < Decimal::ZERO {
-                    self.mid_rate_focus_close = dec!(-0.01);
-                    self.fair_price_focus_close = self.mid_price;
+
+                // 空单平仓逻辑
+                if self.inventory < Decimal::ZERO && close_rate < Decimal::ZERO {
+                    if self.profit_point > Decimal::ZERO {
+                        self.mid_rate_focus_close = close_rate;
+                        self.fair_price_focus_close = self.fair_price;
+                    } else if self.t_diff.is_zero() {
+                        self.mid_rate_focus_close = close_rate;
+                        self.fair_price_focus_close = self.fair_price;
+                    }
                 }
             }
+            // 15秒以后平仓
+            // let is_time_over = Utc::now().timestamp_micros() - self.prev_trade_time > 20 * 1_000_000;
+            // if self.mid_rate_focus_close.is_zero() && !self.inventory.is_zero() && is_time_over {
+            //     if self.inventory > Decimal::ZERO {
+            //         self.mid_rate_focus_close = dec!(0.01);
+            //         self.fair_price_focus_close = self.mid_price;
+            //     }
+            //     if self.inventory < Decimal::ZERO {
+            //         self.mid_rate_focus_close = dec!(-0.01);
+            //         self.fair_price_focus_close = self.mid_price;
+            //     }
+            // }
 
             // ============================ 平仓特殊逻辑处理1 =======================
-            if self.mid_rate_focus_close.is_zero() && !self.inventory.is_zero() && self.profit_point < dec!(-0.002) {
-                self.mid_rate_focus_close = dec!(-0.11);
-                self.fair_price_focus_close = self.mid_price;
-
-                // let prev_open_activate = self.params.open_activate;
-                // self.params.open_activate = self.params.open_activate * dec!(1.5);
-
-                info!("----------------------------------------");
-                // info!("止损,参数调整:{} -> {}", prev_open_activate, self.params.open_activate);
-                info!("硬止损, 在价格{}处,成本价{},价值={}, p={}。", self.fair_price_focus_close, self.pos_avg_price, self.pos_avg_price*self.pos_amount, self.profit_point);
-                info!("----------------------------------------");
-            }
+            // if self.mid_rate_focus_close.is_zero() && !self.inventory.is_zero() && self.profit_point < dec!(-0.002) {
+            //     self.mid_rate_focus_close = dec!(-0.11);
+            //     self.fair_price_focus_close = self.mid_price;
+            //
+            //     // let prev_open_activate = self.params.open_activate;
+            //     // self.params.open_activate = self.params.open_activate * dec!(1.5);
+            //
+            //     info!("----------------------------------------");
+            //     // info!("止损,参数调整:{} -> {}", prev_open_activate, self.params.open_activate);
+            //     info!("硬止损, 在价格{}处,成本价{},价值={}, p={}。", self.fair_price_focus_close, self.pos_avg_price, self.pos_avg_price*self.pos_amount, self.profit_point);
+            //     info!("----------------------------------------");
+            // }
             // ============================ 平仓特殊逻辑处理2 =======================
             if self.mid_rate_focus_close.is_zero() && !self.inventory.is_zero() && self.profit_point_vec.len() > 1 {
                 let prev_profit_point = self.profit_point_vec[self.profit_point_vec.len() - 2];