Procházet zdrojové kódy

把具体逻辑加进去实验。

skyfffire před 1 rokem
rodič
revize
a313211670
2 změnil soubory, kde provedl 110 přidání a 118 odebrání
  1. 41 45
      strategy/src/binance_usdt_swap.rs
  2. 69 73
      strategy/src/gate_swap.rs

+ 41 - 45
strategy/src/binance_usdt_swap.rs

@@ -68,51 +68,47 @@ async fn on_data(bot_arc_clone: Arc<Mutex<Quant>>,
     trace_stack.on_after_network(data.time);
     trace_stack.on_before_unlock_quant();
 
-    if data.time != 0 {
-        info!("bian>{}", trace_stack.to_string());
+    if data.code != "200".to_string() {
+        return;
     }
 
-    // if data.code != "200".to_string() {
-    //     return;
-    // }
-    //
-    // if data.channel == "aggTrade" {
-    //     let trade: OriginalTradeBa = serde_json::from_str(data.data.as_str()).unwrap();
-    //     // let name = data.label.clone();
-    //
-    //     // 订单流逻辑
-    //     // on_trade(trade.clone(), bot_arc_clone.clone()).await;
-    //
-    //     // 原本的逻辑
-    //     let mut quant = bot_arc_clone.lock().await;
-    //     let str = data.label.clone();
-    //     if quant.is_update.contains_key(&data.label) && *quant.is_update.get(str.as_str()).unwrap() {
-    //         *_max_buy = Decimal::ZERO;
-    //         *_min_sell = Decimal::ZERO;
-    //         quant.is_update.remove(str.as_str());
-    //     }
-    //     if trade.p > *_max_buy || *_max_buy == Decimal::ZERO {
-    //         *_max_buy = trade.p
-    //     }
-    //     if trade.p < *_min_sell || *_min_sell == Decimal::ZERO {
-    //         *_min_sell = trade.p
-    //     }
-    //     quant.max_buy_min_sell_cache.insert(data.label, vec![*_max_buy, *_min_sell]);
-    // } else if data.channel == "bookTicker" {
-    //     trace_stack.on_before_format();
-    //     // 将ticker数据转换为模拟深度
-    //     let special_depth = standard::handle_info::HandleSwapInfo::handle_special_ticker(BinanceSwap, data.clone());
-    //     trace_stack.on_before_network(special_depth.create_at.clone());
-    //     trace_stack.on_after_format();
-    //
-    //     on_special_depth(bot_arc_clone, update_flag_u, data.label.clone(), trace_stack, special_depth).await;
-    // } else if data.channel == "depth" {
-    //     trace_stack.on_before_format();
-    //     // 将depth数据转换为模拟深度
-    //     let special_depth = standard::handle_info::HandleSwapInfo::handle_special_depth(BinanceSwap, data.clone());
-    //     trace_stack.on_before_network(special_depth.create_at.clone());
-    //     trace_stack.on_after_format();
-    //
-    //     on_special_depth(bot_arc_clone, update_flag_u, data.label.clone(), trace_stack, special_depth).await;
-    // }
+    if data.channel == "aggTrade" {
+        let trade: OriginalTradeBa = serde_json::from_str(data.data.as_str()).unwrap();
+        // let name = data.label.clone();
+
+        // 订单流逻辑
+        // on_trade(trade.clone(), bot_arc_clone.clone()).await;
+
+        // 原本的逻辑
+        let mut quant = bot_arc_clone.lock().await;
+        let str = data.label.clone();
+        if quant.is_update.contains_key(&data.label) && *quant.is_update.get(str.as_str()).unwrap() {
+            *_max_buy = Decimal::ZERO;
+            *_min_sell = Decimal::ZERO;
+            quant.is_update.remove(str.as_str());
+        }
+        if trade.p > *_max_buy || *_max_buy == Decimal::ZERO {
+            *_max_buy = trade.p
+        }
+        if trade.p < *_min_sell || *_min_sell == Decimal::ZERO {
+            *_min_sell = trade.p
+        }
+        quant.max_buy_min_sell_cache.insert(data.label, vec![*_max_buy, *_min_sell]);
+    } else if data.channel == "bookTicker" {
+        trace_stack.on_before_format();
+        // 将ticker数据转换为模拟深度
+        let special_depth = standard::handle_info::HandleSwapInfo::handle_special_ticker(BinanceSwap, data.clone());
+        trace_stack.on_before_network(special_depth.create_at.clone());
+        trace_stack.on_after_format();
+
+        on_special_depth(bot_arc_clone, update_flag_u, data.label.clone(), trace_stack, special_depth).await;
+    } else if data.channel == "depth" {
+        trace_stack.on_before_format();
+        // 将depth数据转换为模拟深度
+        let special_depth = standard::handle_info::HandleSwapInfo::handle_special_depth(BinanceSwap, data.clone());
+        trace_stack.on_before_network(special_depth.create_at.clone());
+        trace_stack.on_after_format();
+
+        on_special_depth(bot_arc_clone, update_flag_u, data.label.clone(), trace_stack, special_depth).await;
+    }
 }

+ 69 - 73
strategy/src/gate_swap.rs

@@ -109,81 +109,77 @@ async fn on_data(bot_arc_clone: Arc<Mutex<Quant>>,
     trace_stack.on_after_network(data.time);
     trace_stack.on_before_unlock_quant();
 
-    if data.time != 0 {
-        info!("gate>{}", trace_stack.to_string());
+    if data.code != "200".to_string() {
+        return;
     }
 
-    // if data.code != "200".to_string() {
-    //     return;
-    // }
-    //
-    // if data.channel == "futures.order_book" {
-    //     trace_stack.on_before_format();
-    //     let depth = standard::handle_info::HandleSwapInfo::handle_special_depth(GateSwap, data.clone());
-    //     trace_stack.on_before_network(depth.create_at.clone());
-    //     trace_stack.on_after_format();
-    //
-    //     on_special_depth(bot_arc_clone, update_flag_u, data.label, trace_stack, depth).await;
-    // } else if data.channel == "futures.balances" {
-    //     let account = standard::handle_info::HandleSwapInfo::handle_account_info(GateSwap, data, run_symbol.clone());
-    //     {
-    //         let mut quant = bot_arc_clone.lock().await;
-    //         quant.update_equity(account).await;
-    //     }
-    // } else if data.channel == "futures.orders" {
-    //     trace_stack.on_before_format();
-    //     let orders = standard::handle_info::HandleSwapInfo::handle_order(GateSwap, data.clone(), multiplier.clone());
-    //     trace_stack.on_after_format();
-    //
-    //     let mut order_infos:Vec<OrderInfo> = Vec::new();
-    //     for order in orders.order {
-    //         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: Default::default(),
-    //         };
-    //         order_infos.push(order_info);
-    //     }
-    //
-    //     {
-    //         let mut quant = bot_arc_clone.lock().await;
-    //         quant.update_order(order_infos, trace_stack);
-    //     }
-    // } else if data.channel == "futures.positions" {
-    //     let positions = standard::handle_info::HandleSwapInfo::handle_position(GateSwap,data, multiplier.clone());
-    //     {
-    //         let mut quant = bot_arc_clone.lock().await;
-    //         quant.update_position(positions).await;
-    //     }
-    // } else if data.channel == "futures.trades" {
-    //     let mut quant = bot_arc_clone.lock().await;
-    //     let str = data.label.clone();
-    //     if quant.is_update.contains_key(&data.label) && *quant.is_update.get(str.as_str()).unwrap(){
-    //         *max_buy = Decimal::ZERO;
-    //         *min_sell = Decimal::ZERO;
-    //         quant.is_update.remove(str.as_str());
-    //     }
-    //     let trades: Vec<OriginalTradeGa> = serde_json::from_str(data.data.as_str()).unwrap();
-    //     for trade in trades {
-    //         if trade.price > *max_buy || *max_buy == Decimal::ZERO{
-    //             *max_buy = trade.price
-    //         }
-    //         if trade.price < *min_sell || *min_sell == Decimal::ZERO{
-    //             *min_sell = trade.price
-    //         }
-    //     }
-    //     quant.max_buy_min_sell_cache.insert(data.label, vec![*max_buy, *min_sell]);
-    // }
+    if data.channel == "futures.order_book" {
+        trace_stack.on_before_format();
+        let depth = standard::handle_info::HandleSwapInfo::handle_special_depth(GateSwap, data.clone());
+        trace_stack.on_before_network(depth.create_at.clone());
+        trace_stack.on_after_format();
+
+        on_special_depth(bot_arc_clone, update_flag_u, data.label, trace_stack, depth).await;
+    } else if data.channel == "futures.balances" {
+        let account = standard::handle_info::HandleSwapInfo::handle_account_info(GateSwap, data, run_symbol.clone());
+        {
+            let mut quant = bot_arc_clone.lock().await;
+            quant.update_equity(account).await;
+        }
+    } else if data.channel == "futures.orders" {
+        trace_stack.on_before_format();
+        let orders = standard::handle_info::HandleSwapInfo::handle_order(GateSwap, data.clone(), multiplier.clone());
+        trace_stack.on_after_format();
+
+        let mut order_infos:Vec<OrderInfo> = Vec::new();
+        for order in orders.order {
+            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: Default::default(),
+            };
+            order_infos.push(order_info);
+        }
+
+        {
+            let mut quant = bot_arc_clone.lock().await;
+            quant.update_order(order_infos, trace_stack);
+        }
+    } else if data.channel == "futures.positions" {
+        let positions = standard::handle_info::HandleSwapInfo::handle_position(GateSwap,data, multiplier.clone());
+        {
+            let mut quant = bot_arc_clone.lock().await;
+            quant.update_position(positions).await;
+        }
+    } else if data.channel == "futures.trades" {
+        let mut quant = bot_arc_clone.lock().await;
+        let str = data.label.clone();
+        if quant.is_update.contains_key(&data.label) && *quant.is_update.get(str.as_str()).unwrap(){
+            *max_buy = Decimal::ZERO;
+            *min_sell = Decimal::ZERO;
+            quant.is_update.remove(str.as_str());
+        }
+        let trades: Vec<OriginalTradeGa> = serde_json::from_str(data.data.as_str()).unwrap();
+        for trade in trades {
+            if trade.price > *max_buy || *max_buy == Decimal::ZERO{
+                *max_buy = trade.price
+            }
+            if trade.price < *min_sell || *min_sell == Decimal::ZERO{
+                *min_sell = trade.price
+            }
+        }
+        quant.max_buy_min_sell_cache.insert(data.label, vec![*max_buy, *min_sell]);
+    }
 }
 
 fn parse_btree_map_to_gate_swap_login(exchange_params: BTreeMap<String, String>) -> GateSwapLogin {