From 54430a0e062625b74c0a62e900774d27e0a0b4c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=96=87=E8=96=87=E5=AE=89?= Date: Thu, 15 Jan 2026 09:40:31 +0800 Subject: [PATCH] a --- trading_system/position_manager.py | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/trading_system/position_manager.py b/trading_system/position_manager.py index 935081e..5f55a94 100644 --- a/trading_system/position_manager.py +++ b/trading_system/position_manager.py @@ -492,12 +492,13 @@ class PositionManager: f"{symbol} 触发止损: {current_price:.4f} <= {stop_loss:.4f} " f"(盈亏: {pnl_percent:.2f}%)" ) + # 确定平仓原因 + exit_reason = 'trailing_stop' if position_info.get('trailingStopActivated') else 'stop_loss' # 更新数据库 if DB_AVAILABLE: trade_id = position_info.get('tradeId') if trade_id: try: - exit_reason = 'trailing_stop' if position_info.get('trailingStopActivated') else 'stop_loss' Trade.update_exit( trade_id=trade_id, exit_price=current_price, @@ -507,7 +508,7 @@ class PositionManager: ) except Exception as e: logger.warning(f"更新止损记录失败: {e}") - if await self.close_position(symbol): + if await self.close_position(symbol, reason=exit_reason): closed_positions.append(symbol) continue @@ -516,12 +517,13 @@ class PositionManager: f"{symbol} 触发止损: {current_price:.4f} >= {stop_loss:.4f} " f"(盈亏: {pnl_percent:.2f}%)" ) + # 确定平仓原因 + exit_reason = 'trailing_stop' if position_info.get('trailingStopActivated') else 'stop_loss' # 更新数据库 if DB_AVAILABLE: trade_id = position_info.get('tradeId') if trade_id: try: - exit_reason = 'trailing_stop' if position_info.get('trailingStopActivated') else 'stop_loss' Trade.update_exit( trade_id=trade_id, exit_price=current_price, @@ -531,7 +533,7 @@ class PositionManager: ) except Exception as e: logger.warning(f"更新止损记录失败: {e}") - if await self.close_position(symbol): + if await self.close_position(symbol, reason=exit_reason): closed_positions.append(symbol) continue @@ -542,6 +544,8 @@ class PositionManager: f"{symbol} 触发止盈: {current_price:.4f} >= {take_profit:.4f} " f"(盈亏: {pnl_percent:.2f}%)" ) + # 确定平仓原因 + exit_reason = 'take_profit' # 更新数据库 if DB_AVAILABLE: trade_id = position_info.get('tradeId') @@ -550,13 +554,13 @@ class PositionManager: Trade.update_exit( trade_id=trade_id, exit_price=current_price, - exit_reason='take_profit', + exit_reason=exit_reason, pnl=pnl_percent * entry_price * quantity / 100, pnl_percent=pnl_percent ) except Exception as e: logger.warning(f"更新止盈记录失败: {e}") - if await self.close_position(symbol): + if await self.close_position(symbol, reason=exit_reason): closed_positions.append(symbol) continue @@ -565,6 +569,8 @@ class PositionManager: f"{symbol} 触发止盈: {current_price:.4f} <= {take_profit:.4f} " f"(盈亏: {pnl_percent:.2f}%)" ) + # 确定平仓原因 + exit_reason = 'take_profit' # 更新数据库 if DB_AVAILABLE: trade_id = position_info.get('tradeId') @@ -573,13 +579,13 @@ class PositionManager: Trade.update_exit( trade_id=trade_id, exit_price=current_price, - exit_reason='take_profit', + exit_reason=exit_reason, pnl=pnl_percent * entry_price * quantity / 100, pnl_percent=pnl_percent ) except Exception as e: logger.warning(f"更新止盈记录失败: {e}") - if await self.close_position(symbol): + if await self.close_position(symbol, reason=exit_reason): closed_positions.append(symbol) continue