Parcourir la source

修复index识别问题

skyffire il y a 9 mois
Parent
commit
ff13e119af
2 fichiers modifiés avec 11 ajouts et 9 suppressions
  1. 1 2
      strategy/src/binance_usdt_swap.rs
  2. 10 7
      strategy/src/predictor.rs

+ 1 - 2
strategy/src/binance_usdt_swap.rs

@@ -11,7 +11,6 @@ use crate::core::Core;
 use exchanges::binance_swap_ws::{BinanceSwapLogin, BinanceSwapSubscribeType, BinanceSwapWs, BinanceSwapWsType};
 use standard::exchange::ExchangeEnum;
 use standard::exchange_struct_handler::ExchangeStructHandler;
-use crate::bybit_usdt_swap::reference_bybit_swap_run;
 use crate::exchange_disguise::{on_depth, on_trade};
 use crate::model::OrderInfo;
 
@@ -64,7 +63,7 @@ pub(crate) async fn binance_swap_run(is_shutdown_arc: Arc<AtomicBool>,
                                      is_colo: bool,
                                      exchange_params: BTreeMap<String, String>) {
     // 参考
-    reference_bybit_swap_run(is_shutdown_arc.clone(), core_arc.clone(), name.clone(), symbols.clone(), is_colo, 233).await;
+    reference_binance_swap_run(is_shutdown_arc.clone(), core_arc.clone(), name.clone(), symbols.clone(), is_colo, 233).await;
 
     tokio::spawn(async move {
         //创建读写通道

+ 10 - 7
strategy/src/predictor.rs

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