浏览代码

修改平仓条件

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

+ 29 - 21
strategy/src/predictor.rs

@@ -301,7 +301,7 @@ impl Predictor {
             self.fair_price = fair_price_part0 + fair_price_part1;
             self.fair_price_time_vec.push_back(self.fair_price);
 
-            // 重置焦点
+            // 重置焦点,条件1
             if !self.fair_rate_focus.is_zero() && self.mid_price_time_vec.deque.len() >= 2 && self.fair_price_time_vec.deque.len() >= 2 {
                 let mid_price_prev = self.mid_price_time_vec.deque.get(self.mid_price_time_vec.deque.len() - 2).unwrap();
                 let fair_price_prev = self.fair_price_time_vec.deque.get(self.fair_price_time_vec.deque.len() - 2).unwrap();
@@ -316,6 +316,10 @@ impl Predictor {
                     self.fair_rate_focus = Decimal::ZERO;
                 }
             }
+            // // 重置焦点,条件2
+            // if !self.fair_rate_focus.is_zero() && !self.inventory.is_zero() {
+            //     self.fair_rate_focus = Decimal::ZERO;
+            // }
 
             // 更新程序关注的变化幅度焦点
             if self.fair_rate_focus.is_zero() {
@@ -404,27 +408,31 @@ impl Predictor {
         self.ask_delta = dec!(-2);
 
         if is_close_long {
-            if self.mid_price > self.pos_avg_price {
-                // let profit_rate = (self.mid_price - self.pos_avg_price) / self.pos_avg_price;
-                // let fill_rate = profit_rate / (self.params.open * dec!(50));
-                // let close_rate = (Decimal::ONE - fill_rate) * self.params.open + self.params.close;
-                //
-                // self.ask_delta = self.mid_price * close_rate * self.t_diff;
-                self.ask_delta = self.mid_price * self.params.close;
-            } else if self.mid_price > self.fair_price {
-                self.ask_delta = self.mid_price * self.params.close;
-            }
+            // if self.mid_price > self.pos_avg_price {
+            //     // let profit_rate = (self.mid_price - self.pos_avg_price) / self.pos_avg_price;
+            //     // let fill_rate = profit_rate / (self.params.open * dec!(50));
+            //     // let close_rate = (Decimal::ONE - fill_rate) * self.params.open + self.params.close;
+            //     //
+            //     // self.ask_delta = self.mid_price * close_rate * self.t_diff;
+            //     self.ask_delta = self.mid_price * self.params.close;
+            // } else if self.mid_price > self.fair_price {
+            //     self.ask_delta = self.mid_price * self.params.close;
+            // }
+
+            self.ask_delta = self.mid_price * self.params.close;
         } else if is_close_short {
-            if self.mid_price < self.pos_avg_price {
-                // let profit_rate = (self.pos_avg_price - self.mid_price) / self.pos_avg_price;
-                // let fill_rate = profit_rate / (self.params.open * dec!(50));
-                // let close_rate = (Decimal::ONE - fill_rate) * self.params.open + self.params.close;
-                //
-                // self.bid_delta = self.mid_price * close_rate * self.t_diff;
-                self.bid_delta = self.mid_price * self.params.close;
-            } else if self.mid_price < self.fair_price {
-                self.bid_delta = self.mid_price * self.params.close;
-            }
+            // if self.mid_price < self.pos_avg_price {
+            //     // let profit_rate = (self.pos_avg_price - self.mid_price) / self.pos_avg_price;
+            //     // let fill_rate = profit_rate / (self.params.open * dec!(50));
+            //     // let close_rate = (Decimal::ONE - fill_rate) * self.params.open + self.params.close;
+            //     //
+            //     // self.bid_delta = self.mid_price * close_rate * self.t_diff;
+            //     self.bid_delta = self.mid_price * self.params.close;
+            // } else if self.mid_price < self.fair_price {
+            //     self.bid_delta = self.mid_price * self.params.close;
+            // }
+
+            self.bid_delta = self.mid_price * self.params.close;
         } else if is_open_long {
             let is_open_long_market = self.spread_sma_1000 - self.spread_sma > self.params.open_market;
             self.bid_delta = if is_open_long_market {