2026-07-27 15:50:57 +08:00
|
|
|
|
# tradingSystem — 综合交易系统(PMS 持仓管理)
|
|
|
|
|
|
|
|
|
|
|
|
命令驱动的持仓管理系统:**用户通过管理页面下达大方向命令**(总规模/仓位上限/升降仓/对某股做T)→ **持仓系统制订分股分批方案并管理账本**(批次、摊薄成本、安全垫、纪律)→ **决策系统负责研判与择时**(其形态计算、每日定时分析等核心功能照旧运行)→ **下游系统(QMT 侧)挂单成交**。
|
|
|
|
|
|
|
|
|
|
|
|
架构要点:持仓系统 ↔ 决策系统直接交互;持仓系统 ↔ 下游系统交互;**决策系统与下游断开**——对下游的管理权限(建仓审批、卖出指挥)由决策系统移交持仓系统,其全部分析产出保留并成为持仓系统的输入。上游量化系统输出不变,持仓系统的建仓计划围绕上游输出建立。
|
|
|
|
|
|
|
|
|
|
|
|
仓位框架:百分比制(规模 200 万 / 总仓 ≤60% / 单股 ≤8% / ≤15 只,均为用户参数命令、页面可调),单股分批 50/25/25,含一手可行性检查,行业集中度硬性拦截(划分依据留接口)。决策方式:规则引擎为主,定性研判委托决策系统(持仓系统不自建研判栈)。安全垫三义:分批建仓留缓冲、浮盈垫后加仓、做T降成本(命令授权制)。
|
|
|
|
|
|
|
|
|
|
|
|
## 文档与交付物
|
|
|
|
|
|
|
|
|
|
|
|
| 文件 | 内容 |
|
|
|
|
|
|
|---|---|
|
|
|
|
|
|
| `POSITION_MGMT_DESIGN.md` | 总体设计 **V0.4(定稿,开发启动)**:命令系统与管理页面/账本/仓位框架/动作引擎/两道关口/择时执行/下游通道。功能一次性开发,上线按依赖分三步切换 |
|
|
|
|
|
|
| `QMT_INTERFACE_REQUIREMENTS.md` | 与 QMT 侧下游系统协商用的数据与接口需求清单(含资金快照、统一指令通道建议 DDL),按编号答复回填 |
|
|
|
|
|
|
| `ddl_pms_v1.sql` | PMS 全部自有表建表语句(153 代理侧,10 张) |
|
|
|
|
|
|
| `config/settings.py` | 配置(基础设施键名对齐 bionic;业务参数为初值,页面调参持久化到 `pms_runtime_param` 后优先) |
|
|
|
|
|
|
| `app/core/sizer.py` / `app/core/cushion.py` | 首批核心纯逻辑:批次拆分与一手合并、组合约束、风险披露;摊薄成本、安全垫状态机、保垫触发、卖出核销次序 |
|
|
|
|
|
|
| `scripts/test_core_units.py` | 上述模块的实机单测(`python scripts/test_core_units.py`,零外部依赖,14 例) |
|
|
|
|
|
|
|
|
|
|
|
|
## 三条铁律
|
|
|
|
|
|
|
|
|
|
|
|
1. **命令至上**:自动决策不得突破用户命令参数;冲突时命令优先;命令间冲突由用户裁决。
|
|
|
|
|
|
2. **分工不越权**:持仓系统管「做什么、多少」,决策系统管「该不该、何时」,下游只管执行;研判不可用时降级为保守规则 + 人工确认,不自建第二套研判。
|
|
|
|
|
|
3. **先记账后动作 + 故障即守成**:指令先落表再下发;故障不产生新指令;账本与下游定期对账,以下游为实际持仓事实源。
|
|
|
|
|
|
|
2026-07-27 16:02:43 +08:00
|
|
|
|
## Docker 部署(项目统一以容器方式构建运行)
|
|
|
|
|
|
|
|
|
|
|
|
服务共用一个镜像:`pms-web`(管理页面,端口 38100)+ `pms-beat` / `pms-worker`(Celery 调度与执行,挂在 `sched` profile 下,调度器代码就绪后启用)。
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 服务器首次部署
|
|
|
|
|
|
git clone <仓库地址> && cd tradingSystem
|
|
|
|
|
|
cp .env.example .env && vim .env # 填入真实连接串 (.env 不入库)
|
|
|
|
|
|
docker compose build # 默认走清华 PyPI 镜像; 可 --build-arg PIP_INDEX_URL=... 覆盖
|
|
|
|
|
|
docker compose run --rm pms-web python scripts/test_core_units.py # 构建验证: 应输出 ALL PASS (14 cases)
|
|
|
|
|
|
docker compose up -d # 当前仅启动 pms-web
|
|
|
|
|
|
curl http://127.0.0.1:38100/health # 健康检查 + 配置装载自证
|
|
|
|
|
|
|
|
|
|
|
|
# 调度器代码就绪后
|
|
|
|
|
|
docker compose --profile sched up -d
|
|
|
|
|
|
|
|
|
|
|
|
# 日常更新
|
|
|
|
|
|
git pull && docker compose build && docker compose up -d
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
基础镜像 `python:3.11-slim` 拉取慢时,先给服务器 Docker 配置 registry 镜像加速。日志落 `./logs`(已挂载卷);容器时区 Asia/Shanghai。
|
|
|
|
|
|
|
2026-07-27 15:50:57 +08:00
|
|
|
|
## 开发约定
|
|
|
|
|
|
|
2026-07-27 16:02:43 +08:00
|
|
|
|
- 开发机与服务器经 git 同步代码;**构建与运行统一走 Docker**(`docker compose build` → 容器内跑测试脚本 → `up -d`),测试结果回传后迭代。
|
2026-07-27 15:50:57 +08:00
|
|
|
|
- 153 代理侧数据库严格单表访问;持仓系统内部代码统一 Tushare 点式。
|
2026-07-27 16:02:43 +08:00
|
|
|
|
- 配置分两层:基础设施连接串在 `.env`(服务器手工维护,不入库,模板见 `.env.example`);业务参数在 `config/settings.py` 只是初值,上线后经管理页面修改并持久化到 `pms_runtime_param` 表。
|
2026-07-27 15:50:57 +08:00
|
|
|
|
- 里程碑(设计定稿、建表、各期上线)及时 git 提交。
|