trigger字段永久同步(strategy_lifecycle)+ 知微TODO系统

T006: regenerate_all() 新增 trigger 填充(stop_loss/entry_zone/take_profit_zone),
      price_monitor 依赖此字段检测止损区间/买入区/止盈区触发。
      历史数据已通过 fix_trigger.py 一次性补全39只。

新增 devops/self-todo skill + cronjob 自我驱动-TODO自动执行。
每天8轮检查pending任务,主动完成并报告进度。
TODO数据:~/.hermes/profiles/position-analyst/todo.json
This commit is contained in:
知微
2026-06-24 17:24:45 +08:00
parent 9a702a66f7
commit d4ad5a57ef
9 changed files with 5489 additions and 17865 deletions
+50
View File
@@ -0,0 +1,50 @@
#!/usr/bin/env python3
"""修复decisions.json中所有决策的trigger字段(由regenerate_all负责填充)"""
import json, sys, os
DECISIONS_PATH = "/home/hmo/web-dashboard/data/decisions.json"
DECISIONS_BAK = DECISIONS_PATH + ".bak"
try:
with open(DECISIONS_PATH) as f:
dec = json.load(f)
except Exception as e:
print(f"读decisions.json失败: {e}")
sys.exit(1)
count = 0
for d in dec.get("decisions", []):
trig = d.get("trigger", {})
if trig:
continue # 已有trigger,跳过
sl = d.get("stop_loss", 0) or 0
tp = d.get("take_profit", 0) or 0
el = d.get("entry_low", 0) or 0
eh = d.get("entry_high", 0) or 0
code = d.get("code", "")
name = d.get("name", "")
new_trig = {}
if sl and float(sl) > 0:
new_trig["stop_loss"] = float(sl)
if el and eh and float(el) > 0 and float(eh) > 0:
new_trig["entry_zone"] = f"{float(el)}~{float(eh)}"
if tp and float(tp) > 0:
new_trig["take_profit_zone"] = f"0~{float(tp)}"
d["trigger"] = new_trig
count += 1
if new_trig:
print(f" {code} {name}: trigger={new_trig}")
# 备份
os.makedirs(os.path.dirname(DECISIONS_BAK), exist_ok=True)
with open(DECISIONS_BAK, 'w') as f:
json.dump(json.load(open(DECISIONS_PATH)), f, indent=2, ensure_ascii=False)
with open(DECISIONS_PATH, 'w') as f:
json.dump(dec, f, indent=2, ensure_ascii=False)
print(f"\n{count}只,已更新trigger字段")