|
|
@@ -58,7 +58,8 @@ pub struct Predictor {
|
|
|
pub prev_insert_time: Decimal,
|
|
|
pub prev_save_time: Decimal,
|
|
|
pub init_time: Decimal,
|
|
|
- pub nihe_time: Decimal,
|
|
|
+ pub fitting_delay: Decimal,
|
|
|
+ pub prev_fitting_time: Decimal,
|
|
|
|
|
|
pub params: Params,
|
|
|
|
|
|
@@ -164,7 +165,8 @@ impl Predictor {
|
|
|
prev_save_time: Decimal::from(Utc::now().timestamp_millis()),
|
|
|
init_time: Decimal::from(Utc::now().timestamp_millis()),
|
|
|
|
|
|
- nihe_time: Default::default(),
|
|
|
+ fitting_delay: Default::default(),
|
|
|
+ prev_fitting_time: Default::default(),
|
|
|
params,
|
|
|
|
|
|
debug_sender: tx,
|
|
|
@@ -197,15 +199,18 @@ impl Predictor {
|
|
|
self.prices[mid_index][1].pop_front();
|
|
|
}
|
|
|
|
|
|
- // 拟合
|
|
|
- let prev = Utc::now().timestamp_millis();
|
|
|
- if let Some((k, b)) = self.linear_least_squares(mid_index).await {
|
|
|
- self.ks[mid_index] = k;
|
|
|
- self.bs[mid_index] = b;
|
|
|
+ // 拟合,60s拟合一次
|
|
|
+ let before_fitting = Utc::now().timestamp_millis();
|
|
|
+ if Decimal::from(before_fitting) - self.prev_fitting_time > dec!(60_000) {
|
|
|
+ if let Some((k, b)) = self.linear_least_squares(mid_index).await {
|
|
|
+ self.ks[mid_index] = k;
|
|
|
+ self.bs[mid_index] = b;
|
|
|
|
|
|
- self.nihe_time = Decimal::from(Utc::now().timestamp_millis() - prev);
|
|
|
- } else {
|
|
|
- return;
|
|
|
+ self.fitting_delay = Decimal::from(Utc::now().timestamp_millis() - before_fitting);
|
|
|
+ self.prev_fitting_time = Decimal::from(before_fitting)
|
|
|
+ } else {
|
|
|
+ return;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
@@ -480,8 +485,8 @@ impl Predictor {
|
|
|
let total_amount_1: Decimal = self.trade_0_vec.deque.iter().map(|trade| trade.value).sum();
|
|
|
|
|
|
let spread = Self::DONT_VIEW;
|
|
|
- let spread_min = (self.fair_price - self.mid_price) / self.mid_price;
|
|
|
- let spread_max = self.params.open;
|
|
|
+ let spread_max = self.bs[0];
|
|
|
+ let spread_min = self.ks[0];
|
|
|
// let spread = self.price_times_avg;
|
|
|
// let spread_max = self.fair_price_vec[1] / self.fair_price_vec[0];
|
|
|
// let spread_min = self.fair_price / self.mid_price;
|
|
|
@@ -495,7 +500,7 @@ impl Predictor {
|
|
|
};
|
|
|
|
|
|
let gamma = self.balance;
|
|
|
- let kappa = self.nihe_time;
|
|
|
+ let kappa = self.fitting_delay;
|
|
|
|
|
|
let flow_ratio = Decimal::ZERO;
|
|
|
|