소스 검색

coinex 仓位计算

JiahengHe 1 년 전
부모
커밋
dacd90bf23
1개의 변경된 파일3개의 추가작업 그리고 3개의 파일을 삭제
  1. 3 3
      strategy/src/coinex_usdt_swap.rs

+ 3 - 3
strategy/src/coinex_usdt_swap.rs

@@ -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;