This commit is contained in:
薇薇安 2026-01-13 23:55:56 +08:00
parent df634a8f02
commit e43ee63de3

View File

@ -256,16 +256,26 @@ class RiskManager:
min_notional = 5.0 # 币安合约最小名义价值
if position_value < min_notional:
logger.warning(f" ⚠ 仓位价值 {position_value:.2f} USDT < 最小名义价值 {min_notional:.2f} USDT")
# 尝试增加仓位价值到最小名义价值,但不超过最大仓位限制
max_allowed_value = available_balance * max_position_percent
if min_notional <= max_allowed_value:
# 计算需要的最小仓位比例来满足最小名义价值
required_position_percent = min_notional / available_balance
logger.info(f" 需要的最小仓位比例: {required_position_percent*100:.2f}% (最小名义价值 {min_notional:.2f} USDT / 可用余额 {available_balance:.2f} USDT)")
# 检查是否可以使用更大的仓位比例(但不超过最大仓位限制)
if required_position_percent <= max_position_percent:
# 可以使用更大的仓位比例来满足最小名义价值
position_percent = required_position_percent
position_value = min_notional
logger.info(f" ✓ 调整仓位价值到最小名义价值: {position_value:.2f} USDT")
logger.info(f" ✓ 调整仓位比例到 {position_percent*100:.2f}% 以满足最小名义价值: {position_value:.2f} USDT")
else:
# 即使使用最大仓位比例也无法满足最小名义价值
max_allowed_value = available_balance * max_position_percent
logger.warning(
f" ❌ 无法满足最小名义价值要求: "
f"需要 {min_notional:.2f} USDT但最大允许 {max_allowed_value:.2f} USDT"
f"需要 {min_notional:.2f} USDT (仓位比例 {required_position_percent*100:.2f}%)"
f"但最大允许 {max_allowed_value:.2f} USDT (仓位比例 {max_position_percent*100:.1f}%)"
)
logger.warning(f" 💡 建议: 增加账户余额到至少 {min_notional / max_position_percent:.2f} USDT 才能满足最小名义价值要求")
return None
# 计算数量(考虑合约的最小数量精度)