|
|
@@ -104,77 +104,79 @@ 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.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();
|
|
|
+ info!("{}", trace_stack.to_string());
|
|
|
|
|
|
- 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.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]);
|
|
|
+ // }
|
|
|
}
|
|
|
|
|
|
fn parse_btree_map_to_gate_swap_login(exchange_params: BTreeMap<String, String>) -> GateSwapLogin {
|