Files
zjjk/ETF监控模块需求文档.md
2026-04-08 20:04:40 +08:00

394 lines
7.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ETF监控模块需求文档
## 1. 目标
在现有系统中新增一个与“南向资金监控”“A股资金监控”同级的新模块
- ETF监控
该模块面向个人投资跟踪使用,核心目标是:
- 实时观察重点宽基ETF与主题ETF的行情变化
- 通过分钟级变化识别资金快速异动
- 通过邮件提醒辅助追踪国家大基金及相关主题方向的动向
当前阶段以“可运行、可观察、可提醒”为主,不以机构级稳定性为目标。
---
## 2. 数据来源
### 2.1 主数据源
- 同花顺数据
### 2.2 当前数据源约束
当前无同花顺正式机构接口(如 iFinD / 正式API因此本模块按“个人可用验证版”设计
- 允许数据源存在不稳定、限流、断连、字段变更风险
- 允许分钟级数据偶发缺失
- 允许部分ETF在个别时段无法刷新
- 邮件提醒按“辅助追踪”定位,不承诺绝对准确
### 2.3 风险说明
由于当前不是同花顺正式授权接口:
- 不保证长期稳定
- 不保证分钟级数据持续完整
- 不保证字段口径始终不变
- 后续如拿到正式接口,需保留替换数据源的能力
---
## 3. 模块定位
ETF模块未来在前端主页面中与以下模块同级
- 南向资金监控
- A股资金监控
- ETF监控
ETF模块内部先分为两个一级页面
1. 宽基ETF监控列表
2. 板块ETF监控列表
后续如有需要再扩展ETF详情页、历史统计页、国家大基金专题页。
---
## 4. 监控范围
### 4.1 宽基ETF监控列表
当前重点监控以下宽基ETF
- 上证50ETF
- 沪深300ETF510300
- 中证500ETF
- 中证1000ETF563000
- 中证2000ETF
说明:
- 若同一指数存在多个ETF产品后续需固定一个主监控代码
- 当前未明确代码的ETF开发时可先按主流成交活跃产品确定默认代码后续可配置化
### 4.2 板块ETF监控列表
当前重点监控以下主题ETF
- 证券ETF
- 银行ETF
- 人工智能ETF
- 恒生科技ETF
- 半导体ETF
说明:
- 每个主题后续应明确对应的主ETF代码
- 若一个主题对应多只ETF当前阶段优先选一只主ETF作为代表产品
---
## 5. 页面需求
## 5.1 前端入口
在首页新增“ETF监控”入口卡片。
点击后进入ETF监控模块。
## 5.2 ETF监控主页面
页面结构:
- 顶部:返回首页、刷新数据、日期筛选
- 一级Tab
- 宽基ETF
- 板块ETF
页面整体风格应与现有南向/A股模块保持统一但模块实现需尽量独立避免污染现有逻辑。
---
## 6. 宽基ETF监控列表需求
支持按日期查看当天数据。
### 6.1 必要字段
列表字段至少包括:
- 代码
- 名称
- 最新价
- 涨跌额
- 涨跌幅
- 成交额
- 成交量
- 1分钟涨跌幅
- 3分钟涨跌幅
- 4分钟涨跌幅
- 更新时间
### 6.2 可补充字段
如数据源可获取,可增加:
- 振幅
- 换手率
- 当日最高价
- 当日最低价
- 昨收价
- 成交笔数
### 6.3 交互要求
- 支持代码/名称搜索
- 支持点击表头排序
- 默认不强制排序,优先保持原始返回顺序
- 支持手动刷新
- 支持当天实时展示
---
## 7. 板块ETF监控列表需求
与宽基ETF同级。
### 7.1 必要字段
字段参考宽基ETF列表
- 代码
- 名称
- 最新价
- 涨跌额
- 涨跌幅
- 成交额
- 成交量
- 1分钟涨跌幅
- 3分钟涨跌幅
- 4分钟涨跌幅
- 更新时间
### 7.2 交互要求
- 支持名称搜索
- 支持代码搜索
- 支持点击表头排序
- 默认不强制排序
- 支持手动刷新
---
## 8. 分钟级计算需求
由于目标包含3分钟、4分钟涨跌速度判断系统需具备分钟级数据缓存与计算能力。
### 8.1 计算口径
若数据源直接提供分钟级行情:
- 直接读取分钟级数据计算
若数据源仅提供实时快照:
- 系统每分钟抓取一次
- 缓存最近若干分钟价格
- 自行计算:
- 1分钟涨跌幅
- 3分钟涨跌幅
- 4分钟涨跌幅
### 8.2 展示口径
列表中展示的 1/3/4 分钟涨跌幅应统一为百分比。
---
## 9. 邮件提醒需求
## 9.1 邮箱类型
- QQ邮箱
沿用现有项目中的邮件配置能力。
## 9.2 提醒对象
以下所有ETF均纳入监控
- 宽基ETF列表中的ETF
- 板块ETF列表中的ETF
## 9.3 提醒规则
当某只ETF在最近3分钟内
- 上涨速度过快
- 下跌速度过快
则触发邮件提醒。
### 9.4 第一阶段建议规则
第一阶段先按配置项实现:
- `etf_3min_change_alert_percent`
例如:
- 3分钟涨跌幅绝对值超过某阈值即提醒
### 9.5 提醒要求
邮件内容至少包括:
- ETF名称
- ETF代码
- 当前价格
- 当前涨跌幅
- 3分钟涨跌幅
- 触发时间
- 简短说明
后续如需要,可加上“大模型操作建议”。
---
## 10. 数据存储需求
## 10.1 存储原则
ETF数据需要保留实时缓存能力并按天进行存储。
### 10.2 建议存储层次
1. 实时数据
- 当天最新快照
- 用于前端展示
2. 分钟级缓存
- 用于计算1分钟、3分钟、4分钟变化
3. 日度数据
- 按天保存每只ETF的收盘或当日最新有效数据
- 为后续历史统计做准备
### 10.3 存储位置
优先沿用现有项目方案:
- MySQL
同时保留本地文件缓存兜底能力。
---
## 11. 后端需求
后端新增独立ETF模块尽量不影响现有南向/A股逻辑。
建议新增:
- ETF client
- ETF service
- ETF schema
- ETF API route
- ETF alert logic
建议API
- `/api/etf/broad/realtime`
- `/api/etf/sector/realtime`
- `/api/etf/broad/daily`
- `/api/etf/sector/daily`
如后续有详情页,可再增加:
- `/api/etf/detail`
---
## 12. 前端需求
前端新增ETF独立页面尽量复用现有表格、状态面板、Tab结构但不直接污染现有A股页面逻辑。
建议新增:
- ETF主页面组件
- ETF数据表组件
- ETF数据获取 composable
- 首页入口卡片
---
## 13. 配置文件需求
配置文件中应新增ETF监控相关配置例如
- `etf_enabled`
- `etf_realtime_interval_seconds`
- `etf_3min_change_alert_percent`
- `etf_broad_list`
- `etf_sector_list`
- `etf_data_source`
并支持后续配置:
- ETF主监控代码
- 主题ETF代码映射
- 告警阈值
---
## 14. 当前实现边界
当前阶段先做“个人验证版”,边界如下:
- 先做实时展示
- 先做3分钟异动提醒
- 允许同花顺源偶发失败
- 不承诺机构级稳定性
- 不先做复杂回测与策略系统
---
## 15. 后续扩展方向
后续可逐步扩展:
- ETF详情页
- ETF历史趋势图
- ETF近5/10/20/30日统计
- 国家大基金专题ETF观察
- 与A股资金联动分析
- 大模型自动摘要与建议
- 正式数据接口切换
---
## 16. 当前结论
在无同花顺正式接口的前提下,本模块仍可按“个人验证版”推进开发。
当前开发定位:
- 可以运行
- 可以看实时变化
- 可以做分钟级异动提醒
- 可以辅助跟踪国家大基金相关主题方向
但需接受:
- 数据源不稳定
- 分钟级提醒存在误差风险
- 后续可能需要切换到正式接口重构数据源层