From 738bae5a4d6f20b4a7b3d4efbdebcab192fb11f6 Mon Sep 17 00:00:00 2001 From: zhiyong Date: Wed, 30 Apr 2025 14:00:27 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E6=9B=B4=E6=96=B0=E7=AD=96=E7=95=A5?= =?UTF-8?q?=E6=8C=81=E4=BB=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/trade_server.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/trade_server.py b/src/trade_server.py index 7be047f..a65e12b 100644 --- a/src/trade_server.py +++ b/src/trade_server.py @@ -162,12 +162,12 @@ def update_strategy_position(strategy_name, code, direction, amount): 'total_amount': 0, 'closeable_amount': 0 } - - # 直接使用交易实例返回的持仓数据更新策略持仓 + + # 直接使用实际持仓数据更新策略持仓 strategy_positions[strategy_name][code]['total_amount'] = actual_total strategy_positions[strategy_name][code]['closeable_amount'] = actual_can_use - logger.info(f"更新策略持仓 - 策略: {strategy_name}, 代码: {code}, 总量: {strategy_positions[strategy_name][code]['total_amount']}, 可用: {strategy_positions[strategy_name][code]['closeable_amount']}") + logger.info(f"更新策略持仓 - 策略: {strategy_name}, 代码: {code}, 方向: {direction}, 数量: {amount}, 总量: {strategy_positions[strategy_name][code]['total_amount']}, 可用: {strategy_positions[strategy_name][code]['closeable_amount']}") except Exception as e: logger.error(f"获取实际持仓失败: {str(e)}") @@ -351,6 +351,9 @@ def should_use_simulation(): def buy(): """Buy an item with given parameters.""" logger.info("Received buy request") + # 每次操作前更新未完成委托状态 + update_pending_orders() + # Get data from request body data = request.get_json() code = data.get("code") @@ -453,6 +456,9 @@ def buy(): def sell(): """Sell an item with given parameters.""" logger.info("Received sell request") + # 每次操作前更新未完成委托状态 + update_pending_orders() + # Get data from request body data = request.get_json() code = data.get("code") @@ -591,15 +597,15 @@ def get_balance(): def get_positions(): """Get the positions of the account.""" logger.info("Received positions request") + # 每次查询前更新未完成委托状态 + update_pending_orders() + try: # 获取查询参数中的策略名称 strategy_name = request.args.get("strategy_name", "") # 如果指定了策略名称,返回该策略的持仓 if strategy_name: - # 更新未完成委托状态 - update_pending_orders() - # 获取真实账户持仓,用于计算可交易量 current_trader = get_trader() # get_trader 已经确保交易实例是登录状态的,无需再次检查