From 0e171dc572b4bb92bc22e5cf27ea47e302ebb409 Mon Sep 17 00:00:00 2001 From: zhiyong Date: Mon, 12 May 2025 13:39:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0get=5Forder?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/real/xt_trader.py | 5 ++++- src/trade_server.py | 28 ++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/real/xt_trader.py b/src/real/xt_trader.py index 07817f4..1283dc7 100644 --- a/src/real/xt_trader.py +++ b/src/real/xt_trader.py @@ -253,6 +253,7 @@ class XtTrader(BaseTrader): def get_order(self, order_id): if not self.is_available(): + logger.error(f"交易系统连接失败,无法获取订单: {order_id}") return None order = self.xt_trader.query_stock_order(self.account, int(order_id)) @@ -271,7 +272,9 @@ class XtTrader(BaseTrader): "order_status": order.order_status, "status_msg": order.status_msg } - return None + else: + logger.error(f"无法获取订单: {order_id}") + return None def _convert_price_type(self, price_type): """Convert numeric price type to readable string""" diff --git a/src/trade_server.py b/src/trade_server.py index 1b2fee2..c2a02f3 100644 --- a/src/trade_server.py +++ b/src/trade_server.py @@ -507,6 +507,34 @@ def get_today_orders(): abort(500, description="Internal server error") +@app.route("/yu/order/", methods=["GET"]) +def get_order(order_id): + """Get order information by order_id.""" + logger.info(f"Received order request for order {order_id}") + + try: + # 检查交易系统是否可用 + trader = get_trader() + if is_real_mode() and not trader.is_available(): + return jsonify({ + "success": False, + "error": trader.connection_error_message or "交易系统连接失败,请稍后再试" + }), 503 + + order = trader.get_order(order_id) + return jsonify(order), 200 + except Exception as e: + logger.error(f"Error processing order request: {str(e)}") + abort(500, description="Internal server error") + + +def get_order(order_id): + """Get order information by order_id.""" + logger.info(f"Received order request for order {order_id}") + + + + @app.route("/yu/clear/", methods=["DELETE"]) def clear_strategy(strategy_name): """清除指定策略的持仓管理数据"""