Browse Source

排序后获取大约3/4位置的值。不用最大值去挂单。

skyffire 9 tháng trước cách đây
mục cha
commit
4ffe60010d
1 tập tin đã thay đổi với 15 bổ sung2 xóa
  1. 15 2
      strategy/src/predictor.rs

+ 15 - 2
strategy/src/predictor.rs

@@ -308,10 +308,23 @@ impl Predictor {
             spread_abs.rescale(5);
 
             self.spread_vec.push_back(spread_abs);
-            let max_abs_value = self.spread_vec.deque.iter().max().unwrap().clone();
+
+            let opt_abs_value = if self.spread_vec.len() > 10 {
+                // 转换为 Vec 并排序
+                let mut vec: Vec<_> = self.spread_vec.deque.iter().cloned().collect();
+                vec.sort();
+
+                // 获取大约 3/4 位置的索引
+                let index = (vec.len() * 3) / 4;
+
+                vec.get(index).unwrap().clone()
+            } else {
+                self.spread_vec.deque.iter().max().unwrap().clone()
+            };
+
 
             let prev_open = self.params.open.clone();
-            self.params.open = max(max(self.params.min_open, dec!(0.0006)), max_abs_value);
+            self.params.open = max(max(self.params.min_open, dec!(0.0006)), opt_abs_value);
 
             if self.params.open != prev_open {
                 info!("open: {} -> {}", prev_open, self.params.open);