fix(rec): RR基准价改用买入区中值(老爸决策)
- 区/损/盈三数同出一份分析, 自洽闭环; 不随价格波动; 脏区间自动算出RR=0现形 - 区间缺失才兜底现价
This commit is contained in:
+14
-12
@@ -1145,26 +1145,28 @@ def reconcile_signal_from_analysis(conn, code: str) -> str:
|
||||
|
||||
|
||||
def recompute_rr(conn, code: str) -> float:
|
||||
"""用现价+已存止损/止盈重算 RR 并写回 rr_ratio。
|
||||
"""用买入区中值+已存止损/止盈重算 RR 并写回 rr_ratio。
|
||||
根治"LLM 不输出 RR → rr_ratio 永远 0"的断链(红线:RR 由系统算,不信 LLM)。
|
||||
公式: RR = (止盈 - 基准价) / (基准价 - 止损);基准价=现价,兜底区间上沿。
|
||||
公式: RR = (止盈 - 基准价) / (基准价 - 止损);基准价=买入区中值(与策略自洽、
|
||||
不随价格波动、脏区间自动算出 RR=0 现形),区间缺失时兜底现价。
|
||||
损/盈缺失或基准价<=止损 → RR=0(不达标,不参与排序)。"""
|
||||
try:
|
||||
row = conn.execute(
|
||||
"SELECT entry_high, stop_loss, take_profit FROM holding_strategies WHERE code=? AND status='active'",
|
||||
"SELECT entry_low, entry_high, stop_loss, take_profit FROM holding_strategies WHERE code=? AND status='active'",
|
||||
(code,)).fetchone()
|
||||
if not row:
|
||||
return 0.0
|
||||
eh, sl, tp = (row[0] or 0), (row[1] or 0), (row[2] or 0)
|
||||
el, eh, sl, tp = (row[0] or 0), (row[1] or 0), (row[2] or 0), (row[3] or 0)
|
||||
ref = 0.0
|
||||
try:
|
||||
pr = conn.execute("SELECT price FROM live_prices WHERE code=?", (code,)).fetchone()
|
||||
if pr and (pr[0] or 0) > 0:
|
||||
ref = float(pr[0])
|
||||
except Exception:
|
||||
pass
|
||||
if ref <= 0:
|
||||
ref = float(eh or 0)
|
||||
if el > 0 and eh > el:
|
||||
ref = (el + eh) / 2.0 # 买入区中值:策略自洽的期望入场价
|
||||
else:
|
||||
try:
|
||||
pr = conn.execute("SELECT price FROM live_prices WHERE code=?", (code,)).fetchone()
|
||||
if pr and (pr[0] or 0) > 0:
|
||||
ref = float(pr[0])
|
||||
except Exception:
|
||||
pass
|
||||
rr = 0.0
|
||||
if sl > 0 and tp > 0 and ref > sl:
|
||||
rr = round((tp - ref) / (ref - sl), 2)
|
||||
|
||||
Reference in New Issue
Block a user