tradingSystem/DEVLOG.md

66 lines
3.5 KiB
Markdown
Raw Normal View History

2026-08-06 12:34:57 +08:00
# 开发节点记录(三系统量化交易)
> 这份文件的用途只有一个:**让下一次交接不必重新查一遍**。
> 每个重要节点写一条,写完就补,不攒到最后。一条节点包含五样东西:
> 做了什么、动了哪些文件、部署方式、真机判收结果、还欠着什么。
>
> 三个系统的部署方式(改错等于白改):
> - **tradingSystemPMS** 跑在 `factor@factorevaluation`,源码打进镜像,
> 改码必须 `make deploy`,跑完 `make test` 见 ALL SUITES PASS盯盘 `make watch`。
> 容器时钟是北京时间。
> - **bionic_trader决策系统** 跑在 `192.168.16.188:38000`,挂载卷,
> `git pull` 后 `docker compose restart backend-api worker-brain` 即生效;
> **新增 env 必须 `docker compose up -d --force-recreate`**restart 不重读 env。
> 容器时钟是 UTC看时间戳先加八小时。
> - **akg-factor-bridge因子桥** 在 `factorevaluation`,容器名 `akg_factor_bridge`
> API 在 8300常驻 API 改码要 compose restart。容器时钟是 UTC。
>
> 记录纪律:判收状态只写「真机见过」或「未判收」两种,不写「应该没问题」。
> 时间一律写北京时间,引用桥或决策系统的日志时间时先加八小时并标注已换算。
---
## 2026-08-06 · 新建仓动作:方案已出,待拍板
**做了什么**
读完 PMS 的动作引擎主链代码,出了《给动作引擎加「新建仓」动作》的方案,等待拍板。
一行代码都还没改。
**读代码得到的、与既有文档不一致的事实(以代码为准)**
1. `OPEN` 这个动作名在 PMS 里**已经存在**,而且从方案到下单的整条管道是通的:
`planner.py:31` 定义 `A_OPEN`、`executor.py:41` 的 `BUY_ACTIONS` 已含 `OPEN`
`command_service.py:647` 已经在用 `action="OPEN"` 写评审账本。
缺的只有自主提议这一段:`action_engine.py:27` 的动作词表没有 OPEN
`action_engine.scan()` 的输入是持仓列表,结构上不可能引入新标的。
2. `caps_ctx(view, ts_code=...)` 对**从未持仓过的票**不会带出行业名,
不显式传 `sector` 的话,行业集中度那道硬拦截会整段静默跳过。
3. 从未持仓过的票在 `pms_position` 里没有行,`update_position` 会影响 0 行。
建行要显式调 `ensure_position`,它只写 `ts_code / status='PLANNED' / updated_at`
4. `command_spec.py` 里那个 `"planner": "..."` 字段**全代码库没有任何一处读它**
真正的分派是 `command_service._dispatch_planner` 里一串硬编码的 `if cmd_type ==`
5. 参考位取数(`ledger_service` 盘前那一跳)只对 `only_open=True` 的持仓取,
候选票没有支撑压力。这对择时实现 A 无影响(它用决策系统自己库里的结论),
但实现 B 的「回踩带」判据对新票是空的。
**动了哪些文件**
无。方案文件 `NEW_POSITION_ACTION_PLAN.md` 已放进 tradingSystem 项目目录。
**部署方式**
不涉及。
**真机判收**
未判收(尚未动码)。
**还欠着什么**
方案第十节的四件待拍板:新建仓的档位怎么给、每天最多新开几只、研判闸这一轮做不做、
盘中参考位漂移要不要加防护。拍板之后才动手。
---
<!--
下一条节点从这里往下写,格式照抄上面:
## YYYY-MM-DD · 一句话标题
**做了什么** / **动了哪些文件** / **部署方式** / **真机判收** / **还欠着什么**
-->