|
|
@@ -17,7 +17,8 @@ use tracing::{debug, error, info, warn};
|
|
|
use global::params::Params;
|
|
|
use global::public_params::{ASK_PRICE_INDEX, BID_PRICE_INDEX, LENGTH};
|
|
|
use standard::{Account, Market, Order, OrderCommand, Platform, Position, PositionModeEnum, SpecialTicker, Ticker};
|
|
|
-use standard::exchange::{Exchange, ExchangeEnum};
|
|
|
+use standard::exchange::{Exchange};
|
|
|
+use standard::exchange::ExchangeEnum::{BinanceSpot, BinanceSwap, GateSpot, GateSwap, KucoinSwap};
|
|
|
|
|
|
use crate::model::{LocalPosition, OrderInfo, TraderMsg};
|
|
|
|
|
|
@@ -102,7 +103,7 @@ pub struct Quant {
|
|
|
}
|
|
|
|
|
|
impl Quant {
|
|
|
- pub async fn new(exchange_rest: ExchangeEnum, params: Params, exchange_params: BTreeMap<String, String>, order_sender: Sender<Order>, error_sender: Sender<Error>) -> Quant {
|
|
|
+ pub async fn new(exchange: String, params: Params, exchange_params: BTreeMap<String, String>, order_sender: Sender<Order>, error_sender: Sender<Error>) -> Quant {
|
|
|
let symbol = params.pair.clone();
|
|
|
let pairs: Vec<&str> = params.pair.split('_').collect();
|
|
|
let mut quant_obj = Quant {
|
|
|
@@ -180,7 +181,26 @@ impl Quant {
|
|
|
max_notional: Default::default(),
|
|
|
ct_val: Default::default(),
|
|
|
},
|
|
|
- platform_rest: Exchange::new(exchange_rest, symbol, false, exchange_params, order_sender, error_sender).await,
|
|
|
+ platform_rest: match exchange.as_str() {
|
|
|
+ "kucoin_usdt_swap" => {
|
|
|
+ Exchange::new(KucoinSwap, symbol, false, exchange_params, order_sender, error_sender).await
|
|
|
+ },
|
|
|
+ "gate_usdt_swap" => {
|
|
|
+ Exchange::new(GateSwap, symbol, false, exchange_params, order_sender, error_sender).await
|
|
|
+ },
|
|
|
+ "gate_usdt_spot" => {
|
|
|
+ Exchange::new(GateSpot, symbol, false, exchange_params, order_sender, error_sender).await
|
|
|
+ },
|
|
|
+ "binance_usdt_swap" => {
|
|
|
+ Exchange::new(BinanceSwap, symbol, false, exchange_params, order_sender, error_sender).await
|
|
|
+ },
|
|
|
+ "binance_usdt_spot" => {
|
|
|
+ Exchange::new(BinanceSpot, symbol, false, exchange_params, order_sender, error_sender).await
|
|
|
+ }
|
|
|
+ _ => {
|
|
|
+ panic!("201未找到对应的交易所rest枚举!")
|
|
|
+ }
|
|
|
+ },
|
|
|
max_buy_min_sell_cache: Default::default(),
|
|
|
local_depths: Default::default(),
|
|
|
is_update: Default::default()
|
|
|
@@ -508,31 +528,31 @@ impl Quant {
|
|
|
// 检查 ticker 行情
|
|
|
for i in &self.ref_name {
|
|
|
if self.tickers.is_empty() || !self.tickers.contains_key(i) {
|
|
|
- info!("513参考盘口ticker未准备好");
|
|
|
+ info!("529参考盘口ticker未准备好: {:?}", self.tickers);
|
|
|
return;
|
|
|
} else {
|
|
|
if self.tickers.get(i).unwrap().buy == dec!(0) || self.tickers.get(i).unwrap().sell == dec!(0) {
|
|
|
- info!("517参考盘口ticker未准备好");
|
|
|
+ info!("533参考盘口ticker未准备好: {:?}", self.tickers);
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
if self.tickers.contains_key(&self.trade_name) {
|
|
|
if self.tickers.get(&self.trade_name).unwrap().buy == dec!(0) || self.tickers.get(&self.trade_name).unwrap().sell == dec!(0) {
|
|
|
- info!("524参考盘口ticker未准备好");
|
|
|
+ info!("540交易盘口ticker未准备好: {:?}", self.tickers);
|
|
|
return;
|
|
|
}
|
|
|
} else {
|
|
|
- info!("528交易盘口ticker未准备好");
|
|
|
+ info!("544交易盘口ticker未准备好: {:?}", self.tickers);
|
|
|
return;
|
|
|
}
|
|
|
// 检查 market 行情
|
|
|
let all_market: Vec<Decimal> = self.get_all_market_data();
|
|
|
if all_market.len() != LENGTH * (1usize + self.ref_num as usize) {
|
|
|
- info!("聚合行情未准备好");
|
|
|
+ info!("550聚合行情未准备好: market长度:{}, 检验数: {}", all_market.len(), LENGTH * (1usize + self.ref_num as usize));
|
|
|
return;
|
|
|
} else {
|
|
|
- info!("聚合行情准备就绪");
|
|
|
+ info!("553聚合行情准备就绪");
|
|
|
self.trade_msg.market = all_market;
|
|
|
self.predictor.market_info_handler(&self.trade_msg.market);
|
|
|
}
|