辅助分析系统

prototype-design.md

/app/prototype-design.md

# 郑国成规则辅助型系统 V1 原型设计

## 1. 目标定位

- 目标形态:部署到腾讯云服务器,通过域名直接访问。
- 核心能力:只做筛股、买入提示、卖出提示,不做自动下单,不做持仓打分。
- 策略定位:基于现有规则表,构建“硬规则量化 + 软规则标签 + 例外条件人工复核”的半量化系统。

## 2. V1 范围

### 2.1 做什么

- 每日收盘后生成候选股列表。
- 根据买入提示规则生成可关注买点列表。
- 根据卖出提示规则生成风险提示列表。
- 在网页上展示规则、信号、日志和人工复核结果。
- 支持通过域名访问,支持基础账号登录。

### 2.2 不做什么

- 不做自动交易。
- 不做券商接口接入。
- 不做盘中高频信号。
- 不做多用户协作。
- 不做复杂回测系统。

## 3. 推荐技术路线

### 3.1 部署架构

- 服务器:腾讯云 CVM,Linux。
- 访问方式:域名 -> Nginx -> Python Web 服务。
- 部署形态:支持宿主机直接部署,也支持 Docker / Docker Compose 部署。
- Web 服务:FastAPI。
- 容器编排:V1 推荐 Docker Compose,单机部署更直接。
- 进程管理:如果不用 Docker,则使用 systemd。
- HTTPS:Nginx + Let's Encrypt。

### 3.3 Docker 部署建议

- 应用容器:运行 FastAPI 原型服务。
- Nginx 容器:负责域名访问和反向代理。
- 数据卷:挂载 SQLite 文件与后续导出的日志目录。
- 腾讯云上线时,可先放通 80/443,对外只暴露 Nginx 容器。

### 3.2 应用结构

- Web 层:展示页面、规则表、信号结果、人工复核入口。
- 规则引擎层:按筛股/买入/卖出三张规则表计算信号。
- 数据适配层:负责行情、行业标签、概念标签、基础财务字段读取。
- 任务调度层:每日定时跑筛股与信号计算。
- 存储层:V1 建议 SQLite,后续再迁移 MySQL/PostgreSQL。

## 4. V1 页面设计

### 4.1 首页仪表盘

- 今日候选股数量
- 今日买入提示数量
- 今日卖出提示数量
- 最近一次任务执行时间
- 最近一次任务状态

### 4.2 筛股页面

- 展示进入候选池的股票
- 显示命中的筛股规则
- 显示软规则标签
- 显示是否需要人工复核

### 4.3 买入提示页面

- 展示股票、命中规则、触发时间、触发条件
- 显示是否为硬规则、软规则加分或例外条件
- 支持人工标记“已复核/忽略/关注”

### 4.4 卖出提示页面

- 展示股票、风险类型、触发条件、建议动作
- 支持人工标记“已复核/忽略”

### 4.5 规则配置页面

- 展示三张规则表
- 展示每条规则的优先级、执行级别、冲突处理、最小字段
- V1 先只读展示,不开放网页修改

### 4.6 任务与日志页面

- 展示每日任务执行记录
- 展示失败日志
- 支持手动触发一次全量刷新

## 5. V1 数据流设计

### 5.1 每日批处理流程

1. 拉取 A 股股票池与基础行情数据
2. 生成筛股候选池
3. 在候选池上运行买入提示规则
4. 对观察池运行卖出提示规则
5. 写入数据库
6. 更新网页展示

### 5.2 运行频率建议

- V1 先做日频,不做盘中实时推送。
- 每个交易日收盘后跑一次。
- 如需盘中能力,放到 V2。

## 6. 规则引擎设计

### 6.1 筛股层

- 输入:A 股全市场股票池
- 输出:候选股列表
- 主要规则:
  - 长期需求主题优先
  - 趋势对齐过滤
  - 季节轮动方向过滤
  - 阶段性重点人工复核

### 6.2 买入提示层

- 输入:候选股列表
- 输出:买入关注提示
- 主要规则:
  - 趋势确认后买入关注
  - 起涨点/二波结构买点
  - 熟悉标的回补提示
  - 阶段主线共振加分

### 6.3 卖出提示层

- 输入:观察池或人工关注池
- 输出:卖出风险提示
- 主要规则:
  - 短线转弱离场提示
  - 阶段收益兑现提示
  - 题材生命周期结束提示
  - 阶段窗口结束降权

## 7. 数据字段最小集合

### 7.1 行情数据

- 股票代码
- 股票名称
- 交易日期
- 开高低收
- 成交量
- 成交额
- 换手率

### 7.2 技术指标

- MA5 / MA10 / MA20 / MA60
- MACD DIF / DEA / Histogram
- 阶段高点 / 阶段低点
- 启动位 / 前高位

### 7.3 主题与标签

- 行业标签
- 概念标签
- 是否属于季节轮动方向
- 是否属于长期需求主题

### 7.4 事件与人工标签

- 当前阶段重点方向
- 是否进入人工复核池
- 是否属于熟悉标的

## 8. V1 API 设计

### 8.1 页面接口

- `GET /`
- `GET /screening`
- `GET /signals/buy`
- `GET /signals/sell`
- `GET /rules`
- `GET /jobs`

### 8.2 数据接口

- `GET /api/screening/latest`
- `GET /api/signals/buy/latest`
- `GET /api/signals/sell/latest`
- `POST /api/jobs/run`
- `POST /api/review/mark`

## 9. 数据库存储建议

### 9.1 主要表

- `stocks`
- `daily_bars`
- `screening_results`
- `buy_signals`
- `sell_signals`
- `manual_reviews`
- `job_runs`

### 9.2 V1 存储建议

- 本地 SQLite 文件即可。
- 等到需要多用户或更高并发,再迁移到 MySQL/PostgreSQL。

## 10. 安全与运维建议

- V1 增加基础登录,不裸露所有接口。
- 后台管理接口只允许登录后访问。
- 域名只暴露 Nginx 80/443,应用服务走 Docker 内部网络或本地回环。
- Docker 部署时应用容器和 Nginx 容器使用 `docker-compose.yml` 管理并开启自动重启。
- 非 Docker 部署时可继续使用 systemd 托管应用进程,开启自动重启。
- 日志写文件并保留最近 7-14 天。

## 11. 推荐实施顺序

### 第一步

- 在现有项目内加入 Web 服务骨架
- 能通过域名或 Docker 反向代理打开首页和规则页

### 第二步

- 接入 SQLite
- 落地筛股/买入/卖出结果表

### 第三步

- 接入规则引擎
- 支持手动运行一次任务

### 第四步

- 增加每日定时任务
- 首页显示最新结果

## 12. 我对 V1 的建议结论

- V1 不要追求实时和复杂回测。
- V1 先做成“收盘后自动刷新 + 网页查看 + 人工复核”的规则辅助系统。
- 只要这个流程跑顺,后面再做盘中提醒、更多数据源、回测和策略迭代,都会容易很多。