瀏覽代碼

优化一些代码,移除bybit的主动获取仓位的部分。

skyffire 1 年之前
父節點
當前提交
46f39e6707
共有 3 個文件被更改,包括 26 次插入45 次删除
  1. 2 29
      strategy/src/bybit_usdt_swap.rs
  2. 2 16
      strategy/src/gate_swap.rs
  3. 22 0
      strategy/src/model.rs

+ 2 - 29
strategy/src/bybit_usdt_swap.rs

@@ -95,19 +95,6 @@ pub async fn bybit_swap_run(is_shutdown_arc: Arc<AtomicBool>,
                                         &write_tx_am_private,
                                         write_rx_private).await.expect("链接失败(内部一个心跳线程应该已经关闭了)");
         });
-
-        // 定时获取仓位信息
-        let position_core_clone = core_arc.clone();
-        spawn(async move {
-            let mut interval = time::interval(Duration::from_secs(30));
-            loop {
-                interval.tick().await;
-                {
-                    let mut core = position_core_clone.lock().await;
-                    core.update_position_rest_swap().await;
-                }
-            }
-        });
     }
 }
 
@@ -126,7 +113,7 @@ async fn on_private_data(core_arc_clone: Arc<Mutex<Core>>, ct_val: &Decimal, run
             trace_stack.on_after_format();
 
             let mut order_infos:Vec<OrderInfo> = Vec::new();
-            for order in orders.order {
+            for mut order in orders.order {
                 if order.status == "NULL" {
                     error!("bybit_usdt_swap 未识别的订单状态:{:?}", response);
 
@@ -137,21 +124,7 @@ async fn on_private_data(core_arc_clone: Arc<Mutex<Core>>, ct_val: &Decimal, run
                     info!("bybit order 消息原文:{:?}", response);
                 }
 
-                let order_info = OrderInfo {
-                    symbol: "".to_string(),
-                    amount: order.amount.abs(),
-                    side: "".to_string(),
-                    price: order.price,
-                    client_id: order.custom_id,
-                    filled_price: order.avg_price,
-                    filled: order.deal_amount.abs(),
-                    order_id: order.id,
-                    local_time: 0,
-                    create_time: 0,
-                    status: order.status,
-                    fee: Default::default(),
-                    trace_stack: TraceStack::new(0, Instant::now()),
-                };
+                let order_info = OrderInfo::parse_order_to_order_info(&mut order);
                 order_infos.push(order_info);
             }
 

+ 2 - 16
strategy/src/gate_swap.rs

@@ -127,28 +127,14 @@ async fn on_data(core_arc_clone: Arc<Mutex<Core>>,
             let orders = standard::handle_info::HandleSwapInfo::handle_order(GateSwap, response.clone(), multiplier.clone());
 
             let mut order_infos:Vec<OrderInfo> = Vec::new();
-            for order in orders.order {
+            for mut order in orders.order {
                 if order.status == "NULL" {
                     error!("gate_usdt_swap 未识别的订单状态:{:?}", response);
 
                     continue;
                 }
 
-                let order_info = OrderInfo {
-                    symbol: "".to_string(),
-                    amount: order.amount.abs(),
-                    side: "".to_string(),
-                    price: order.price,
-                    client_id: order.custom_id,
-                    filled_price: order.avg_price,
-                    filled: order.deal_amount.abs(),
-                    order_id: order.id,
-                    local_time: 0,
-                    create_time: 0,
-                    status: order.status,
-                    fee: Default::default(),
-                    trace_stack: TraceStack::new(0, Instant::now()),
-                };
+                let order_info = OrderInfo::parse_order_to_order_info(&mut order);
                 order_infos.push(order_info);
             }
 

+ 22 - 0
strategy/src/model.rs

@@ -1,7 +1,9 @@
 use rust_decimal::Decimal;
 use rust_decimal_macros::dec;
 use serde_derive::{Deserialize, Serialize};
+use tokio::time::Instant;
 use global::trace_stack::TraceStack;
+use standard::Order;
 
 pub struct TokenParam {
     // 平台币名称
@@ -94,6 +96,26 @@ pub struct OrderInfo {
     pub trace_stack: TraceStack
 }
 
+impl OrderInfo {
+    pub fn parse_order_to_order_info(order: &mut Order) -> OrderInfo {
+        OrderInfo {
+            symbol: "".to_string(),
+            amount: order.amount.abs(),
+            side: "".to_string(),
+            price: order.price,
+            client_id: order.custom_id.clone(),
+            filled_price: order.avg_price,
+            filled: order.deal_amount.abs(),
+            order_id: order.id.clone(),
+            local_time: 0,
+            create_time: 0,
+            status: order.status.clone(),
+            fee: Default::default(),
+            trace_stack: TraceStack::new(0, Instant::now()),
+        }
+    }
+}
+
 #[derive(Serialize, Deserialize, Clone, Debug)]
 pub struct OriginalTradeBa {
     // 成交价格