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