|
@@ -51,7 +51,7 @@ pub struct Predictor {
|
|
|
pub spread_sma_1000_time_vec: FixedTimeRangeDeque<Decimal>, // spread队列,10ms以内的所有spread_sma_1000
|
|
pub spread_sma_1000_time_vec: FixedTimeRangeDeque<Decimal>, // spread队列,10ms以内的所有spread_sma_1000
|
|
|
pub fair_price_vec: Vec<Decimal>, // 公平价格列表,0表示做市所,1表示参考所
|
|
pub fair_price_vec: Vec<Decimal>, // 公平价格列表,0表示做市所,1表示参考所
|
|
|
pub fair_price: Decimal, // 公平价格
|
|
pub fair_price: Decimal, // 公平价格
|
|
|
- pub fair_price_ema_100000: Decimal, // 公平价格_ema_100000
|
|
|
|
|
|
|
+ pub fair_price_ema_30000: Decimal, // 公平价格_ema
|
|
|
pub fair_rate_focus_open: Decimal, // 变化幅度焦点
|
|
pub fair_rate_focus_open: Decimal, // 变化幅度焦点
|
|
|
pub fair_price_focus_open: Decimal, // 观测焦点时的价格
|
|
pub fair_price_focus_open: Decimal, // 观测焦点时的价格
|
|
|
pub fair_rate_focus_close: Decimal, // 变化幅度焦点
|
|
pub fair_rate_focus_close: Decimal, // 变化幅度焦点
|
|
@@ -168,7 +168,7 @@ impl Predictor {
|
|
|
fair_price_long_time_vec: FixedTimeRangeDeque::new(2 * 60_000_000),
|
|
fair_price_long_time_vec: FixedTimeRangeDeque::new(2 * 60_000_000),
|
|
|
mid_price_time_vec: FixedTimeRangeDeque::new(100_000),
|
|
mid_price_time_vec: FixedTimeRangeDeque::new(100_000),
|
|
|
fair_price: Default::default(),
|
|
fair_price: Default::default(),
|
|
|
- fair_price_ema_100000: Default::default(),
|
|
|
|
|
|
|
+ fair_price_ema_30000: Default::default(),
|
|
|
fair_rate_focus_open: Default::default(),
|
|
fair_rate_focus_open: Default::default(),
|
|
|
fair_price_focus_open: Default::default(),
|
|
fair_price_focus_open: Default::default(),
|
|
|
fair_rate_focus_close: Default::default(),
|
|
fair_rate_focus_close: Default::default(),
|
|
@@ -320,10 +320,10 @@ impl Predictor {
|
|
|
let fair_price_part0 = self.fair_price_vec[0] * dec!(0.2);
|
|
let fair_price_part0 = self.fair_price_vec[0] * dec!(0.2);
|
|
|
let fair_price_part1 = (self.fair_price_vec[1] / self.price_times_avg) * dec!(0.8);
|
|
let fair_price_part1 = (self.fair_price_vec[1] / self.price_times_avg) * dec!(0.8);
|
|
|
self.fair_price = fair_price_part0 + fair_price_part1;
|
|
self.fair_price = fair_price_part0 + fair_price_part1;
|
|
|
- self.fair_price_ema_100000 = if self.fair_price_ema_100000.is_zero() {
|
|
|
|
|
|
|
+ self.fair_price_ema_30000 = if self.fair_price_ema_30000.is_zero() {
|
|
|
self.fair_price
|
|
self.fair_price
|
|
|
} else {
|
|
} else {
|
|
|
- self.fair_price_ema_100000 * dec!(0.99999) + self.fair_price * dec!(0.00001)
|
|
|
|
|
|
|
+ self.fair_price_ema_30000 * dec!(0.999967) + self.fair_price * dec!(0.000033)
|
|
|
};
|
|
};
|
|
|
self.fair_price_time_vec.push_back(self.fair_price);
|
|
self.fair_price_time_vec.push_back(self.fair_price);
|
|
|
|
|
|
|
@@ -610,7 +610,7 @@ impl Predictor {
|
|
|
|
|
|
|
|
let spread = self.mid_price;
|
|
let spread = self.mid_price;
|
|
|
let spread_max = self.fair_price;
|
|
let spread_max = self.fair_price;
|
|
|
- let spread_min = self.fair_price_ema_100000;
|
|
|
|
|
|
|
+ let spread_min = self.fair_price_ema_30000;
|
|
|
// let spread = self.price_times_avg;
|
|
// let spread = self.price_times_avg;
|
|
|
// let spread_max = self.fair_price_vec[1] / self.fair_price_vec[0];
|
|
// let spread_max = self.fair_price_vec[1] / self.fair_price_vec[0];
|
|
|
// let spread_min = self.fair_price / self.mid_price;
|
|
// let spread_min = self.fair_price / self.mid_price;
|