Commit Graph

3 Commits

Author SHA1 Message Date
claude_dev b436adef1b fix(live): 成交时间1970守卫——08-20探针首日实锤9笔traded_at=1970-01-01 00:00:01(QMT原始时间经引擎pd.to_datetime失败形态落epoch),前端『今日成交』按日期过滤全空+账本trade_date失真(当日仓被当历史仓,T+1视图frozen=0);修=_effective_trade_time守卫:年份<2000一律回退当前时刻(归因轮询≤60s,日期误差仅跨日60s窗口);+2测试(1970回退当日记账且frozen生效/有效时间原样保留);附带已治疗VPS存量9行(从引擎日志按标的+数量回填13:03/13:05真实时刻,#18今日成交即时可见);portfolio 29+398绿 [vps] 2026-08-20 13:32:54 +08:00
claude_dev e7c5defe64 fix(live): runtime副本孤立加载ImportError根治——2026-08-20晨12引擎崩溃循环事故(6实盘+6影子自建队07:10起每60s崩,当日0成交,9:05/9:30/9:35全未触发)——根因=live_strategy.py台账/B2两行相对导入(from . import live_instance_ledger/from .live_portfolio_proxy):文件被_instance_adapter逐字节复制到runtime/<实例>/后bullet_trade以顶层模块加载(无包上下文)→ImportError;测试全绿盲区=测试以包成员导入相对导入合法,生产孤立加载才崩,nas-verify不启引擎——修=改绝对导入from sanguo_portfolio import(引擎进程项目根在sys.path,同文件其它绝对导入生产已验证可跑);抽_ledger_tools()单函数两种加载上下文单测直打;+3测试(孤立副本顶层import_module复现事故点/包内上下文/静态禁from .回潮);_instance_adapter启动时内容比对自动重拷→VPS落地后下轮引擎重启自愈免手工清runtime;顺手修2个日期硬编码测试(proxy fixture与snapshot的trade_date=2026-08-19→动态今天,当日买入跨日T+1断言必翻红,CI不跑此套件故昨日未暴露);portfolio 398绿 [vps] 2026-08-20 11:41:47 +08:00
claude_dev dae56e29aa fix(live): instance虚拟账本+成交归因+实盘日志黑洞——共享QMT账户三害根治第一步 [vps]
CI/CD / test (push) Successful in 11s
CI/CD / nas-deploy (push) Successful in 34s
CI/CD / nas-verify (push) Successful in 11s
2026-08-19盘后QMT实锤:①互卖当日真实发生(518880两个实例各卖183700、
600036两实例各卖42900)②买入sizing被全账户污染(channel_test实盘买
183700股@9.12≈168万=全账户995万/6,影子才16.8万=100万/6)③QMT委托带
remark=bt:live_strateg:<hash>实例指纹(归因可交叉验证)。

①live_instance_ledger(新模块):每live实例一份虚拟子账本(现金=初始−Σ买
−Σ费+Σ卖,持仓+移动加权成本+T+1当日买入锁定,线程安全锁),由**本实例
真实成交**驱动——engine.get_trades()按order_id∈engine.get_orders()归因
(引擎_broker_order_index已映射回本实例id空间),别家实例/手动单不进账;
卖超账面/无账面卖出如实留痕不崩;restore_from_trades重启恢复。
②runner_live:_sync_trades旧轮询(写不进live_trades的坏件)替换为归因
落库(方向取自订单is_buy);快照落库从context.portfolio全账户改**实例视图**
(positions=账本持仓T+1冻结;balance=虚拟现金+市值,现价取全账户快照/退
加权成本)——治8实例同写一份全账户持仓+收益率=全账户/初始资金无意义;
balance节流:有成交立即写否则≥5分钟(治1440行/天/实例量偏大遗留)。
③通道注入:BrokerFacade.get_instance_positions字段+live_strategy._setup
读get_active()注入positions_view(策略session消费,getattr兜底回退
context.portfolio;回测/单测无账本=保持None)。
④实盘引擎日志黑洞根治:supervisor子进程stdout/stderr落logs/live_{aid}.log
(>5MB截断+spawn标记,对齐影子#88同款修法;8-17起实盘委托/成交零留存)。
+15测试(算术/归因过滤/幂等/快照实例视图/通道注入/日志重定向);
portfolio+live+shadow 400绿。
2026-08-19 18:39:13 +08:00