From 850afa1d185a9f8cffe7ea37bc06834c3ff1bf69 Mon Sep 17 00:00:00 2001 From: aaron <> Date: Sat, 14 Feb 2026 22:53:19 +0800 Subject: [PATCH] update --- backend/app/services/paper_trading_service.py | 40 ++++++++++++------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/backend/app/services/paper_trading_service.py b/backend/app/services/paper_trading_service.py index cd0756d..65bd426 100644 --- a/backend/app/services/paper_trading_service.py +++ b/backend/app/services/paper_trading_service.py @@ -297,6 +297,7 @@ class PaperTradingService: 'order_id': order.order_id, 'symbol': order.symbol, 'side': order.side.value, + 'entry_price': order.entry_price, # 挂单价 'filled_price': filled_price, 'quantity': order.quantity, 'signal_grade': order.signal_grade.value if order.signal_grade else None, @@ -579,22 +580,33 @@ class PaperTradingService: def get_active_orders(self, symbol: Optional[str] = None) -> List[Dict[str, Any]]: - """获取活跃订单""" - orders = list(self.active_orders.values()) - if symbol: - orders = [o for o in orders if o.symbol == symbol] + """获取活跃订单(从数据库读取,确保多进程同步)""" + db = db_service.get_session() + try: + query = db.query(PaperOrder).filter( + PaperOrder.status.in_([OrderStatus.PENDING, OrderStatus.OPEN]) + ) + if symbol: + query = query.filter(PaperOrder.symbol == symbol) - # 转换为字典,添加错误处理 - result = [] - for order in orders: - try: - result.append(order.to_dict()) - except Exception as e: - logger.error(f"转换订单 {order.order_id} 为字典失败: {e}") - import traceback - logger.error(traceback.format_exc()) + orders = query.all() - return result + # 转换为字典 + result = [] + for order in orders: + try: + result.append(order.to_dict()) + except Exception as e: + logger.error(f"转换订单 {order.order_id} 为字典失败: {e}") + import traceback + logger.error(traceback.format_exc()) + + return result + except Exception as e: + logger.error(f"获取活跃订单失败: {e}") + return [] + finally: + db.close() def get_order_by_id(self, order_id: str) -> Optional[Dict[str, Any]]: """根据ID获取订单"""