|
|
@@ -125,7 +125,7 @@ async fn on_data(core_arc_clone: Arc<Mutex<Core>>,
|
|
|
let position = positions[0].clone();
|
|
|
let mut result_position = vec![];
|
|
|
info!("本地仓位推算:{:?}", local_position_by_orders);
|
|
|
- let position_num = local_position_by_orders.long_pos - local_position_by_orders.short_pos;
|
|
|
+ let position_num = (local_position_by_orders.long_pos - local_position_by_orders.short_pos).abs();
|
|
|
let mut long_pos = Position::new();
|
|
|
let mut short_pos = Position::new();
|
|
|
if position_num == position.amount {
|
|
|
@@ -138,7 +138,7 @@ async fn on_data(core_arc_clone: Arc<Mutex<Core>>,
|
|
|
} else {
|
|
|
match position.position_mode {
|
|
|
PositionModeEnum::Long => {
|
|
|
- long_pos.amount = position.amount;
|
|
|
+ long_pos.amount = position.amount + local_position_by_orders.short_pos;
|
|
|
long_pos.price = position.price;
|
|
|
long_pos.position_mode = PositionModeEnum::Long;
|
|
|
short_pos.amount = local_position_by_orders.short_pos;
|
|
|
@@ -146,7 +146,7 @@ async fn on_data(core_arc_clone: Arc<Mutex<Core>>,
|
|
|
short_pos.position_mode = PositionModeEnum::Short;
|
|
|
},
|
|
|
PositionModeEnum::Short => {
|
|
|
- short_pos.amount = position.amount;
|
|
|
+ short_pos.amount = position.amount + local_position_by_orders.long_pos;
|
|
|
short_pos.price = position.price;
|
|
|
short_pos.position_mode = PositionModeEnum::Short;
|
|
|
long_pos.amount = local_position_by_orders.long_pos;
|