tradingSystem/docs/盘中改判与信号聚合方案_2026-09-09.md

6.9 KiB
Raw Blame History

盘中改判与信号聚合2026-09-09 落地记录)

方案已实施完毕,本文改成落地记录:做了什么、实测读数是多少、怎么验证、怎么回退。 台账见两个仓库各自的 docs/复盘决定台账.md(持仓管理系统 001 到 005择时决策系统 001 到 004


一、两件事各解决什么

第一件。 信号栏一行等于上游流里的一条原始消息,一只活跃票一天十来条散在好几个分组里。 现在点一下票名,抽屉里按时间倒序摊开它今天的全部信号。

第二件。 新建仓被研判驳回后,那只票当天就不再被评估。现在盘中输入确实变了就解除一次, 重新问一遍;同时择时决策系统新增一条主动通道,遍历候选池找今天转强的票。


二、实测读数09-09 收盘,全部只读、未落任何表)

按代码回扫。 四方股份 16 条、0.36 秒五路全部读到、没有触到回扫上限。第二次点同一只票走缓存0.001 秒。

量比口径。 三只票交叉验证:

股票 较昨收 时段折算量比 与当天研判说法对不对得上
四方股份 +7.58% 1.128 对得上。10:12 驳回理由正是"今日突破量能未确认"
长源电力 +2.22% 1.553 量比够但涨幅不够
洛阳钼业 -0.82% 0.806 都不够

解锁试算。 11 只被驳回的票按 11:30 那一刻算,一只都不解锁

  • 9 只较驳回价没走够 2%,其中 5 只在跌
  • 四方股份的转多留痕在 10:05早于 10:12 的驳回,按第一条解锁条件不算新信息
  • 唯一接近的是 600875.SH涨 4.73%、量比 2.408,只因为当天的驳回行是旧格式、没有基线快照,判不了"是不是相对驳回那一刻变强"

这说明阈值不松。部署之后新的驳回行都带基线快照,这类票会被正常解锁。

跨系统闭环。 持仓管理系统写候选池键,择时决策系统立刻读到,两侧算出的读数完全一致 (四方股份量比都是 1.128,长源电力都是 1.554)。这是"三处同源"那条纪律的运行时证据。


三、必须知道的三件事

一、改完之后不会立刻追高买入。 两只票的现价都高于择时买入区间上沿:

股票 买入区间 现价
四方股份 39.60 到 40.60 42.60
长源电力 24.25 到 25.38 26.18

即使解锁重问、研判放行、你在页面上点了头,落成指令之后择时仍会说"高于上沿,不追" 指令挂在窗口期里等价格回落。解锁重问买到的不是"立刻追高",而是"让这只票进入待办、等回调时自动买入"。 追高那条线一个字没改。

二、不追高那道闸量的是相对今日开盘,不是相对昨收。 四方股份今天较昨收涨 7.6%,较开盘是 -0.2% 所以它其实从没被那道闸拦过。这次只登记口径,不改闸。

三、资金流开全量比原方案想的危险。 实施时查出两处:股票池门控总开关默认关着时覆盖面等于 全市场(日均一千三到一千六条,没底牌的票逐条走冷启动重算,可能一天几百次打满大模型队列); 流出侧会触发风控仲裁,大模型不可用时硬规则会直接判卖出。所以加了方向闸、覆盖面闸与冷启动配额, 第一阶段只放流入侧。详见择时决策系统台账 003。


四、验证命令

甲、持仓管理系统(在它所在的服务器上,仓库根目录)

单测。预期最后一行是 ALL SUITES PASS

docker compose run --rm --no-deps -v "$PWD:/app" pms-web python scripts/run_tests.py

解锁判定试算。只读,一行都不写。预期打印当日被驳回的票与逐只的解锁判定:

docker compose run --rm --no-deps -v "$PWD:/app" pms-web python -c "from datetime import datetime; from app.services import proposal_service as ps, reask_service as rs; jk = ps._judge_rejected_open_keys(); print('当日被研判驳回:', len(jk), '只'); print('解锁:', rs.evaluate_all(jk, datetime.now()) or '(无)')"

全链试算,不落任何表。预期打印候选数与分流结果:

docker compose run --rm --no-deps -v "$PWD:/app" pms-web python -c "from app.services import proposal_service as p; import json; print(json.dumps(p.scan_and_route(dry_run=True), ensure_ascii=False)[:600])"

单票信号回扫。预期打印条数与耗时,五路都标 ok

docker compose run --rm --no-deps -v "$PWD:/app" pms-web python -c "import json,time; from app.services import upstream_signals as u; t=time.time(); d=u.by_code('601126.SH', force=True); print('%d 条 %.2f 秒' % (len(d['timeline']), time.time()-t)); print(json.dumps(d['sources'], ensure_ascii=False))"

乙、择时决策系统(在它所在的服务器上,仓库根目录)

三个自检。每个预期最后一行都是 ALL OK

docker exec trader_worker_brain python3 scripts/selftest_strength_scan.py
docker exec trader_worker_brain python3 scripts/selftest_pms_judge_force.py
docker exec trader_worker_brain python3 scripts/selftest_metrics_scope.py

候选池键通不通。预期打印"候选池 N 只"与代码列表:

docker exec trader_worker_brain python3 -c "from workers.strength_scan import load_universe; print(load_universe())"

单轮扫描试跑。总开关关着时预期是 SKIP 总开关关着

docker exec trader_worker_brain python3 -c "from workers.strength_scan import run_scan; print(run_scan())"

五、上线顺序与开关

做什么 前提 观察多久
第零段 两侧代码全部到位、全部测试绿、容器重启 半天,只看日志没有新报错
第一段 打开解锁重问(页面改参数,即时生效,不用重启) 第零段完成 三个交易日
第二段 打开强势扫描的观察档(只记不派,一次大模型都不打 第一段观察满三天 两个交易日
第三段 关掉观察档,真派单 第二段读数正常 三个交易日
第四段 资金流分发半开(全量 + 只放流入 + 覆盖面收着) 必须单独一段 两个交易日
第五段 资金流分发全开(放两侧) 第四段全绿,且当日兜底卖出恒为 0 两个交易日

第一段与第二段为什么不能同时开:它们会互相喂 —— 强势扫描产的转多广播正好是解锁重问的第一条解锁条件。 同时开就分不清"今天解锁了五次"是解锁阈值定得准,还是扫描在制造信号。

六、回退

三条互相独立,可以单独拉:

  1. 资金流分发:改服务器环境文件回只留痕,重建那一个容器
  2. 强势扫描:改环境文件把总开关关掉,重启大脑工作进程
  3. 解锁重问:页面上把总开关改成关,即时生效,不用重启