fix: 信号-仓位一致性校验(观望/卖出→0%, 关注≤5%)

This commit is contained in:
知微
2026-07-10 00:09:38 +08:00
parent 02268405e2
commit 7026959f58
+10 -3
View File
@@ -149,20 +149,27 @@ def parse_response(text):
nums = re.findall(r'[\d.]+', l)
pct = ""
if nums:
# 取第一个合理的百分比(1-100之间)
for n in nums:
f = float(n)
if 1 <= f <= 100:
pct = f"{f:.0f}%"
break
# 如果没有百分比,用文字描述映射到百分比
raw = l.replace("建议仓位","").strip()
if not pct:
if "轻仓" in raw: pct = "3%"
elif "" in raw and "" in raw: pct = "5%"
elif "重仓" in raw: pct = "10%"
elif "清仓" in raw or "零仓" in raw: pct = "0%"
elif "清仓" in raw or "零仓" in raw or "不参与" in raw: pct = "0%"
else: pct = "5%"
# 信号与仓位一致性校验
if result["signal"] in ("观望", "卖出"):
pct = "0%"
elif result["signal"] == "关注":
# 关注信号仓位不超过5%
if pct and pct != "0%":
pct_num = int(pct.replace("%",""))
if pct_num > 5:
pct = "5%"
result["position"] = pct
break