From efbeb35d0705783a2ce37208b0a78bfe64a00e8b Mon Sep 17 00:00:00 2001 From: zhiyong Date: Wed, 4 Jun 2025 11:24:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BF=BD=E7=95=A5=E6=8C=81=E4=BB=93=E6=95=B0?= =?UTF-8?q?=E9=87=8F=E5=92=8C=E8=B5=84=E9=87=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/real/real_trader_manager.py | 57 ++++++--------------------------- 1 file changed, 9 insertions(+), 48 deletions(-) diff --git a/src/real/real_trader_manager.py b/src/real/real_trader_manager.py index 2bdf13f..329d437 100644 --- a/src/real/real_trader_manager.py +++ b/src/real/real_trader_manager.py @@ -224,14 +224,14 @@ class RealTraderManager: } try: - # 对于限价单,检查资金和持仓是否足够 + # 对于限价单,进行订单可行性检查(当前已禁用资金和持仓限制) if order_type == ORDER_TYPE_LIMIT and not self._check_order_feasibility( code, direction, amount, price ): logger.warning( - f"资金或持仓不足,忽略订单: {direction} {code} {amount}股 {price}元" + f"订单可行性检查失败,忽略订单: {direction} {code} {amount}股 {price}元" ) - return {"success": False, "error": "资金或持仓不足"} + return {"success": False, "error": "订单可行性检查失败"} # 下单 logger.info( @@ -356,7 +356,7 @@ class RealTraderManager: self._lock.release() def _check_order_feasibility(self, code, direction, amount, price): - """检查订单是否可行(资金或持仓是否足够) + """检查订单是否可行(已禁用资金和持仓检查,允许负数) Args: code: 股票代码 @@ -365,51 +365,12 @@ class RealTraderManager: price: 交易价格 Returns: - bool: 订单是否可行 + bool: 订单是否可行,始终返回True(已禁用限制检查) """ - try: - if direction == ORDER_DIRECTION_BUY: - # 检查资金是否足够 - balance = self.trader.get_balance() - if not balance: - logger.error("获取账户余额失败") - return False - - # 计算所需资金(加上3%的手续费作为缓冲) - required_cash = price * amount * 1.03 - available_cash = balance.get("cash", 0) - - if required_cash > available_cash: - logger.warning( - f"资金不足: 需要 {required_cash:.2f}, 可用 {available_cash:.2f}" - ) - return False - - return True - - elif direction == "sell": - # 检查持仓是否足够 - position = self.trader.get_position(code) - - if not position: - logger.warning(f"没有持仓: {code}") - return False - - available_volume = position.get("can_use_volume", 0) - - if amount > available_volume: - logger.warning( - f"可用持仓不足: 需要 {amount}, 可用 {available_volume}" - ) - return False - - return True - - return False - - except Exception as e: - logger.error(f"检查订单可行性时发生异常: {str(e)}") - return False + # 不再检查资金和持仓限制,允许持仓数量和资金为负数 + # 这样可以支持更灵活的交易策略,如融资融券、做空等场景 + logger.debug(f"订单可行性检查已禁用: {direction} {code} {amount}股 {price}元 - 允许执行") + return True def clean_expired_orders(self): """清理过期的未完成订单"""