|
|
@@ -155,8 +155,8 @@ impl Predictor {
|
|
|
mid_price: Default::default(),
|
|
|
fair_price: Default::default(),
|
|
|
last_price: Default::default(),
|
|
|
- optimal_ask_price: Default::default(),
|
|
|
- optimal_bid_price: Default::default(),
|
|
|
+ optimal_ask_price: Self::DONT_VIEW,
|
|
|
+ optimal_bid_price: Self::DONT_VIEW,
|
|
|
|
|
|
ask_delta: Default::default(),
|
|
|
bid_delta: Default::default(),
|
|
|
@@ -326,7 +326,6 @@ impl Predictor {
|
|
|
self.fair_price_std_vec[index] = mp * self.ks[index] + self.bs[index];
|
|
|
self.fair_price_std_vec[index].rescale(self.mid_price.scale());
|
|
|
|
|
|
-
|
|
|
// 生成最终用于挂单的公平价格
|
|
|
let fair_price_sum: Decimal = self.fair_price_std_vec.iter().sum();
|
|
|
let fair_price_count = self.fair_price_std_vec.iter()
|
|
|
@@ -376,17 +375,17 @@ impl Predictor {
|
|
|
self.optimal_bid_price = max(self.mid_price, self.fair_price);
|
|
|
self.optimal_ask_price = Self::DONT_VIEW;
|
|
|
} else if self.inventory.is_zero() {
|
|
|
- if self.fair_price > self.mid_price {
|
|
|
+ if self.fair_price > self.mid_price * (Decimal::ONE + self.params.open) {
|
|
|
self.bid_delta = dec!(0);
|
|
|
self.ask_delta = dec!(-2);
|
|
|
|
|
|
- self.optimal_bid_price = self.fair_price - self.fair_price * self.params.open;
|
|
|
+ self.optimal_bid_price = self.mid_price;
|
|
|
self.optimal_ask_price = Self::DONT_VIEW;
|
|
|
- } else if self.fair_price < self.mid_price {
|
|
|
+ } else if self.fair_price < self.mid_price * (Decimal::ONE - self.params.open) {
|
|
|
self.ask_delta = dec!(0);
|
|
|
self.bid_delta = dec!(-2);
|
|
|
|
|
|
- self.optimal_ask_price = self.fair_price + self.fair_price * self.params.open;
|
|
|
+ self.optimal_ask_price = self.mid_price;
|
|
|
self.optimal_bid_price = Self::DONT_VIEW;
|
|
|
}
|
|
|
}
|