|
|
@@ -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);
|