|
|
@@ -22,8 +22,8 @@ pub struct Predictor {
|
|
|
pub spread_vec: Vec<Decimal>, // 价差队列
|
|
|
pub record_vec: VecDeque<Record>, // 蜡烛队列
|
|
|
pub trade_price_long_vec: FixedTimeRangeDeque<Decimal>,
|
|
|
+ pub trade_233_vec: FixedTimeRangeDeque<Trade>,
|
|
|
pub trade_0_vec: FixedTimeRangeDeque<Trade>,
|
|
|
- pub trade_1_vec: FixedTimeRangeDeque<Trade>,
|
|
|
|
|
|
pub mid_price: Decimal, // 中间价
|
|
|
pub fair_price: Decimal,
|
|
|
@@ -132,8 +132,8 @@ impl Predictor {
|
|
|
record_vec: VecDeque::new(),
|
|
|
|
|
|
trade_price_long_vec: FixedTimeRangeDeque::new(Self::TRADE_LONG_RANGE_MICROS),
|
|
|
+ trade_233_vec: FixedTimeRangeDeque::new(Self::TRADE_SHORT_RANGE_MICROS),
|
|
|
trade_0_vec: FixedTimeRangeDeque::new(Self::TRADE_SHORT_RANGE_MICROS),
|
|
|
- trade_1_vec: FixedTimeRangeDeque::new(Self::TRADE_SHORT_RANGE_MICROS),
|
|
|
mid_price: Default::default(),
|
|
|
fair_price: Default::default(),
|
|
|
ask_price: Default::default(),
|
|
|
@@ -193,14 +193,17 @@ impl Predictor {
|
|
|
}
|
|
|
|
|
|
pub async fn on_trade(&mut self, trade: &Trade, index: usize) {
|
|
|
+ // index == 233代表做市所
|
|
|
+ // index == 0代表参考所
|
|
|
+
|
|
|
self.last_price = trade.price;
|
|
|
|
|
|
self.trade_price_long_vec.push_back(trade.price);
|
|
|
|
|
|
- if index == 0 {
|
|
|
+ if index == 233 {
|
|
|
+ self.trade_233_vec.push_back(trade.clone());
|
|
|
+ } else if index == 0 {
|
|
|
self.trade_0_vec.push_back(trade.clone());
|
|
|
- } else if index == 1 {
|
|
|
- self.trade_1_vec.push_back(trade.clone());
|
|
|
}
|
|
|
|
|
|
// self.processor().await;
|
|
|
@@ -418,8 +421,8 @@ impl Predictor {
|
|
|
let last_price = Self::DONT_VIEW;
|
|
|
let fair_price = self.fair_price;
|
|
|
|
|
|
- let total_amount_0: Decimal = self.trade_0_vec.deque.iter().map(|trade| trade.value).sum();
|
|
|
- let total_amount_1: Decimal = self.trade_1_vec.deque.iter().map(|trade| trade.value).sum();
|
|
|
+ let total_amount_0: Decimal = self.trade_233_vec.deque.iter().map(|trade| trade.value).sum();
|
|
|
+ let total_amount_1: Decimal = self.trade_0_vec.deque.iter().map(|trade| trade.value).sum();
|
|
|
|
|
|
let spread = if total_amount_0 + total_amount_1 == Decimal::ZERO {
|
|
|
Decimal::ZERO
|