From b15960ba38016f9d6a4e7bbc1e8403caf51477f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=A5=E5=BE=AE?= Date: Fri, 3 Jul 2026 17:14:56 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=A8=E6=95=B0=E6=8D=AE=E8=B7=AF=E5=BE=84?= =?UTF-8?q?=E5=AE=A1=E8=AE=A1=E4=BF=AE=E5=A4=8D=E5=AE=8C=E6=88=90=EF=BC=9A?= =?UTF-8?q?=E6=89=80=E6=9C=89=E8=84=9A=E6=9C=AC=E4=BB=8EDB=E8=AF=BB?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 最终修复: 1. price_monitor: HK股存HKD原值, currency=HKD (移除x0.87转换) 2. strategy_lifecycle: 质量门禁currency=CNY→HKD/CNY均可 3. strategy_lifecycle: 新建策略currency动态判断 4. stale_push_wlin: 所有read_decisions()+read_portfolio()替代json.load 5. stale_detector: read_portfolio()替代json.load(PORTFOLIO_PATH) 6. per_stock_reassess: json.dump(decisions.json)→mo_data写入 7. DB holdings/holding_strategies: 8只HK股currency=HKD,价格修正 8. 建滔84.45 HKD浮亏-4.3%(之前报-24%) 9. 现金132,121.93总资产953,295 10. LLM cron prompts已改为全部从mo_data读 --- scripts/stale_detector.py | 3 +-- scripts/stale_push_wlin.py | 12 ++++-------- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/scripts/stale_detector.py b/scripts/stale_detector.py index ef6e54f..0230073 100644 --- a/scripts/stale_detector.py +++ b/scripts/stale_detector.py @@ -115,8 +115,7 @@ def main(): cash = 0 total_assets = 0 try: - with open(PORTFOLIO_PATH) as f: - pf = json.load(f) + pf = read_portfolio() position_pct = pf.get("position_pct", 0) cash = pf.get("cash", 0) total_assets = pf.get("total_assets", 0) diff --git a/scripts/stale_push_wlin.py b/scripts/stale_push_wlin.py index 8ad3324..99c031c 100644 --- a/scripts/stale_push_wlin.py +++ b/scripts/stale_push_wlin.py @@ -225,15 +225,11 @@ def trigger_regen_sync(stock_codes=None): def load_cash(): - """从 portfolio.json 实时读可用现金(可用 ≈ 实时买力),不硬编码""" + """从 mo_data 实时读可用现金""" try: - with open(PORTFOLIO_PATH) as f: - data = json.load(f) - if isinstance(data, dict): - # 先读 cash_available(拆分了可用/冻结),fallback 到 cash - return data.get("cash_available", data.get("cash", 0)) - if isinstance(data, list) and len(data) > 1 and isinstance(data[1], dict): - return data[1].get("cash_available", data[1].get("cash", 0)) + pf = read_portfolio() + if isinstance(pf, dict): + return pf.get("cash_available", pf.get("cash", 0)) return 0 except Exception: return 0