|
|
@@ -1,13 +1,12 @@
|
|
|
use std::str::FromStr;
|
|
|
use rust_decimal::Decimal;
|
|
|
use rust_decimal::prelude::FromPrimitive;
|
|
|
-use rust_decimal_macros::dec;
|
|
|
use serde_json::Value;
|
|
|
use tokio::time::Instant;
|
|
|
use tracing::{error};
|
|
|
use exchanges::response_base::ResponseData;
|
|
|
use global::trace_stack::TraceStack;
|
|
|
-use crate::{Account, MarketOrder, Order, Position, PositionModeEnum, SpecialDepth, SpecialOrder, SpecialTicker};
|
|
|
+use crate::{Account, MarketOrder, Order, Position, PositionModeEnum, SpecialDepth, SpecialOrder};
|
|
|
|
|
|
// 处理账号信息
|
|
|
pub fn handle_account_info(res_data: ResponseData, symbol: String) -> Account {
|
|
|
@@ -121,28 +120,28 @@ pub fn format_order_item(order: serde_json::Value, ct_val: Decimal) -> Order {
|
|
|
}
|
|
|
// 处理特殊Ticket信息
|
|
|
pub fn handle_special_ticker(res_data: &ResponseData) -> SpecialDepth {
|
|
|
- let depth_asks = format_depth_items(res_data.data["asks"].clone());
|
|
|
- let depth_bids = format_depth_items(res_data.data["bids"].clone());
|
|
|
- let t = Decimal::from_str(&res_data.data["t"].to_string()).unwrap();
|
|
|
- let create_at = res_data.data["t"].as_i64().unwrap() * 1000;
|
|
|
-
|
|
|
- let ap = depth_asks[0].price;
|
|
|
- let bp = depth_bids[0].price;
|
|
|
- let aq = depth_asks[0].amount;
|
|
|
- let bq = depth_bids[0].amount;
|
|
|
- let mp = (bp + ap) * dec!(0.5);
|
|
|
- let ticker_info = SpecialTicker { sell: ap, buy: bp, mid_price: mp, t, create_at };
|
|
|
- let depth_info = vec![bp, bq, ap, aq];
|
|
|
+ // let depth_asks = format_depth_items(&res_data.data["asks"]);
|
|
|
+ // let depth_bids = format_depth_items(&res_data.data["bids"]);
|
|
|
+ // let t = Decimal::from_str(&res_data.data["t"].to_string()).unwrap();
|
|
|
+ // let create_at = res_data.data["t"].as_i64().unwrap() * 1000;
|
|
|
+ //
|
|
|
+ // let ap = depth_asks[0].price;
|
|
|
+ // let bp = depth_bids[0].price;
|
|
|
+ // let aq = depth_asks[0].amount;
|
|
|
+ // let bq = depth_bids[0].amount;
|
|
|
+ // let mp = (bp + ap) * dec!(0.5);
|
|
|
+ // let ticker_info = SpecialTicker { sell: ap, buy: bp, mid_price: mp, t, create_at };
|
|
|
+ // let depth_info = vec![bp, bq, ap, aq];
|
|
|
SpecialDepth {
|
|
|
name: (*res_data).label.clone(),
|
|
|
- depth: depth_info,
|
|
|
- ticker: ticker_info,
|
|
|
- t,
|
|
|
- create_at,
|
|
|
+ depth: Default::default(),
|
|
|
+ ticker: Default::default(),
|
|
|
+ t: Default::default(),
|
|
|
+ create_at: Default::default(),
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-pub fn format_depth_items(value: serde_json::Value) -> Vec<MarketOrder> {
|
|
|
+pub fn format_depth_items(value: &Value) -> Vec<MarketOrder> {
|
|
|
let mut depth_items: Vec<MarketOrder> = vec![];
|
|
|
for value in value.as_array().unwrap() {
|
|
|
depth_items.push(MarketOrder {
|