|
|
@@ -20,7 +20,7 @@ use global::cci::CentralControlInfo;
|
|
|
use global::params::Params;
|
|
|
use global::public_params::{ASK_PRICE_INDEX, BID_PRICE_INDEX, LENGTH};
|
|
|
use global::trace_stack::TraceStack;
|
|
|
-use standard::{Account, Market, Order, OrderCommand, Platform, Position, PositionModeEnum, SpecialTicker, Ticker};
|
|
|
+use standard::{Account, Market, Order, OrderCommand, Platform, Position, PositionModeEnum, PriceOrder, SpecialTicker, Ticker};
|
|
|
use standard::exchange::{Exchange};
|
|
|
use standard::exchange::ExchangeEnum::{BinanceSwap, BybitSwap, GateSwap};
|
|
|
|
|
|
@@ -47,6 +47,8 @@ pub struct Core {
|
|
|
pub local_orders: HashMap<String, OrderInfo>,
|
|
|
// 本地订单缓存队列
|
|
|
pub local_orders_backup: HashMap<String, OrderInfo>,
|
|
|
+ // 本地订单对应的止损订单,注意key是本地订单id,value是其对应的止损单实体
|
|
|
+ pub local_price_orders: HashMap<String, PriceOrder>,
|
|
|
// 本地订单缓存cid队列
|
|
|
pub local_orders_backup_cid: Vec<String>,
|
|
|
// 本地已处理cid缓存队列
|
|
|
@@ -122,6 +124,7 @@ impl Core {
|
|
|
params: Params,
|
|
|
exchange_params: BTreeMap<String, String>,
|
|
|
order_sender: Sender<Order>,
|
|
|
+ price_order_sender: Sender<PriceOrder>,
|
|
|
error_sender: Sender<Error>,
|
|
|
running: Arc<AtomicBool>,
|
|
|
cci_arc: Arc<Mutex<CentralControlInfo>>) -> Core {
|
|
|
@@ -138,6 +141,7 @@ impl Core {
|
|
|
strategy: Strategy::new(¶ms, true),
|
|
|
local_orders: Default::default(),
|
|
|
local_orders_backup: Default::default(),
|
|
|
+ local_price_orders: Default::default(),
|
|
|
local_orders_backup_cid: Default::default(),
|
|
|
handled_orders_cid: Default::default(),
|
|
|
local_profit: Default::default(),
|
|
|
@@ -204,28 +208,28 @@ impl Core {
|
|
|
},
|
|
|
platform_rest: match exchange.as_str() {
|
|
|
// "kucoin_usdt_swap" => {
|
|
|
- // Exchange::new(KucoinSwap, symbol, params.colo != 0i8, exchange_params, order_sender, error_sender).await
|
|
|
+ // Exchange::new(KucoinSwap, symbol, params.colo != 0i8, exchange_params, order_sender, price_order_sender, error_sender).await
|
|
|
// }
|
|
|
"gate_usdt_swap" => {
|
|
|
- Exchange::new(GateSwap, symbol, params.colo != 0i8, exchange_params, order_sender, error_sender).await
|
|
|
+ Exchange::new(GateSwap, symbol, params.colo != 0i8, exchange_params, order_sender, price_order_sender, error_sender).await
|
|
|
}
|
|
|
// "gate_usdt_spot" => {
|
|
|
- // Exchange::new(GateSpot, symbol, params.colo != 0i8, exchange_params, order_sender, error_sender).await
|
|
|
+ // Exchange::new(GateSpot, symbol, params.colo != 0i8, exchange_params, order_sender, price_order_sender, error_sender).await
|
|
|
// }
|
|
|
"binance_usdt_swap" => {
|
|
|
- Exchange::new(BinanceSwap, symbol, params.colo != 0i8, exchange_params, order_sender, error_sender).await
|
|
|
+ Exchange::new(BinanceSwap, symbol, params.colo != 0i8, exchange_params, order_sender, price_order_sender, error_sender).await
|
|
|
}
|
|
|
// "binance_spot" => {
|
|
|
- // Exchange::new(BinanceSpot, symbol, params.colo != 0i8, exchange_params, order_sender, error_sender).await
|
|
|
+ // Exchange::new(BinanceSpot, symbol, params.colo != 0i8, exchange_params, order_sender, price_order_sender, error_sender).await
|
|
|
// }
|
|
|
// "bitget_spot" => {
|
|
|
- // Exchange::new(BitgetSpot, symbol, params.colo != 0i8, exchange_params, order_sender, error_sender).await
|
|
|
+ // Exchange::new(BitgetSpot, symbol, params.colo != 0i8, exchange_params, order_sender, price_order_sender, error_sender).await
|
|
|
// }
|
|
|
// "okex_usdt_swap" => {
|
|
|
- // Exchange::new(OkxSwap, symbol, params.colo != 0i8, exchange_params, order_sender, error_sender).await
|
|
|
+ // Exchange::new(OkxSwap, symbol, params.colo != 0i8, exchange_params, order_sender, price_order_sender, error_sender).await
|
|
|
// }
|
|
|
"bybit_usdt_swap" => {
|
|
|
- Exchange::new(BybitSwap, symbol, params.colo != 0i8, exchange_params, order_sender, error_sender).await
|
|
|
+ Exchange::new(BybitSwap, symbol, params.colo != 0i8, exchange_params, order_sender, price_order_sender, error_sender).await
|
|
|
}
|
|
|
_ => {
|
|
|
error!("203未找到对应的交易所rest枚举!");
|