|
|
@@ -348,7 +348,7 @@ impl Core {
|
|
|
if self.local_orders_backup.contains_key(&data.client_id) {
|
|
|
// 不在已处理cid缓存队列中 说明还没参与过仓位计算 则执行订单计算
|
|
|
if self.handled_orders_cid.contains(&data.client_id) {
|
|
|
- // info!("订单已经参与过仓位计算 拒绝重复进行计算, 订单号:{}", data.client_id);
|
|
|
+ info!("订单已经参与过仓位计算 拒绝重复进行计算, 订单号:{}", data.client_id);
|
|
|
} else {
|
|
|
// 添加进已处理队列
|
|
|
self.handled_orders_cid.push(data.client_id.clone());
|
|
|
@@ -562,7 +562,7 @@ impl Core {
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
- // info!("订单不属于本策略 拒绝进行仓位计算: {}", data.client_id);
|
|
|
+ info!("订单不属于本策略 拒绝进行仓位计算: {}", data.client_id);
|
|
|
}
|
|
|
|
|
|
if self.local_orders.contains_key(&data.client_id) {
|
|
|
@@ -1059,31 +1059,31 @@ impl Core {
|
|
|
}
|
|
|
|
|
|
// 仓位异常风控,只在合约模式下执行
|
|
|
- // if !self.exchange.contains("spot") {
|
|
|
- // let local_position_by_orders_pos = (self.local_position_by_orders.long_pos - self.local_position_by_orders.short_pos).abs();
|
|
|
- // let local_position_pos = (self.local_position.long_pos - self.local_position.short_pos).abs();
|
|
|
- //
|
|
|
- // if local_position_by_orders_pos != local_position_pos {
|
|
|
- // warn!("{}发现仓位异常", self.params.account_name);
|
|
|
- // warn!(?self.local_position_by_orders, ?self.local_position);
|
|
|
- // self.position_check_series.push(1);
|
|
|
- // } else {
|
|
|
- // self.position_check_series.push(0);
|
|
|
- // }
|
|
|
- //
|
|
|
- // // self.position_check_series长度限制
|
|
|
- // if self.position_check_series.len() > 6 {
|
|
|
- // self.position_check_series.remove(0);
|
|
|
- // }
|
|
|
- //
|
|
|
- // // 连续不符合判定
|
|
|
- // if self.position_check_series.iter().sum::<i8>() >= 6 {
|
|
|
- // let exit_msg = format!("{} 合约连续检查本地仓位和推算仓位不符合,退出。", self.params.account_name);
|
|
|
- // warn!(exit_msg);
|
|
|
- // self.exit_msg = exit_msg;
|
|
|
- // self.stop().await;
|
|
|
- // }
|
|
|
- // }
|
|
|
+ if !self.exchange.contains("spot") {
|
|
|
+ let local_position_by_orders_pos = (self.local_position_by_orders.long_pos - self.local_position_by_orders.short_pos).abs();
|
|
|
+ let local_position_pos = (self.local_position.long_pos - self.local_position.short_pos).abs();
|
|
|
+
|
|
|
+ if local_position_by_orders_pos != local_position_pos {
|
|
|
+ warn!("{}发现仓位异常", self.params.account_name);
|
|
|
+ warn!(?self.local_position_by_orders, ?self.local_position);
|
|
|
+ self.position_check_series.push(1);
|
|
|
+ } else {
|
|
|
+ self.position_check_series.push(0);
|
|
|
+ }
|
|
|
+
|
|
|
+ // self.position_check_series长度限制
|
|
|
+ if self.position_check_series.len() > 6 {
|
|
|
+ self.position_check_series.remove(0);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 连续不符合判定
|
|
|
+ if self.position_check_series.iter().sum::<i8>() >= 6 {
|
|
|
+ let exit_msg = format!("{} 合约连续检查本地仓位和推算仓位不符合,退出。", self.params.account_name);
|
|
|
+ warn!(exit_msg);
|
|
|
+ self.exit_msg = exit_msg;
|
|
|
+ self.stop().await;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
// 下单异常风控
|
|
|
if self.strategy.total_amount == Decimal::ZERO {
|