基于东方财富 BK1637 热门股票板块,每日收盘后自动采集热股数据,支持策略管理和回归测试分析收益。
- 数据采集:通过 Puppeteer 采集东方财富热股数据,支持手动/定时采集,非交易日自动跳过
- K线补全:同步热股日K线数据,支持按日期或全量补全
- 策略管理:自定义过滤条件、买入条件(收盘价/开盘价/涨停板追涨)、卖出条件(固定持有/止盈/止损/止盈止损组合)
- 回测分析:按策略过滤热股,模拟买入卖出计算收益率,支持多持有天数对比
- 热股列表:按日期查看热股,支持涨跌幅/换手率/成交额/排名筛选,支持删除指定日期数据
| 层级 | 技术 |
|---|---|
| 后端 | NestJS + better-sqlite3 + Puppeteer + @nestjs/schedule |
| 前端 | Vue3 + Vite + Ant Design Vue + ECharts |
| 数据库 | SQLite (WAL模式) |
moneryV2/
├── server/ # NestJS 后端
│ └── src/
│ ├── hot-stocks/ # 热股采集与查询
│ ├── kline/ # K线数据同步
│ ├── strategy/ # 策略 CRUD
│ ├── backtest/ # 回测分析
│ ├── database/ # 数据库初始化
│ └── utils/ # 交易日判断工具
├── client/ # Vue3 前端
│ └── src/
│ ├── views/
│ │ ├── collect/ # 数据采集页
│ │ ├── hot-stocks/ # 热股列表页
│ │ ├── strategy/ # 策略管理页
│ │ └── backtest/ # 回测分析页
│ ├── layouts/ # 布局组件
│ ├── router/ # 路由配置
│ └── api/ # 请求封装
└── .gitignore
- Node.js >= 18
- npm >= 9
- Chrome 浏览器(Puppeteer 采集需要)
# 后端
cd server && npm install
# 前端
cd client && npm install# 后端(开发模式,端口 3000)
cd server && npm run start:dev
# 前端(开发模式,端口 5173)
cd client && npm run dev访问 http://localhost:5173 即可使用。
# 后端
cd server && npm run build
# 前端
cd client && npm run build进入"数据采集"页面,点击"采集今日热股"获取当天数据。系统每日 15:05 自动采集(仅交易日)。
点击"补全选中日期"可同步该天热股的K线数据,"补全全部K线"则同步所有热股的历史K线。
进入"热股列表"页面,从下拉框选择日期查看当天热股数据。支持按涨跌幅、换手率、成交额、排名筛选。
进入"策略管理"页面,系统预设4个策略,也可新建自定义策略:
- 过滤条件:涨跌幅范围、换手率范围、成交额范围、排名范围
- 买入条件:收盘价买入 / 次日开盘价买入 / 涨停板追涨
- 卖出条件:固定持有天数 / 止盈 / 止损 / 止盈止损组合
进入"回测分析"页面,选择日期范围、策略和持有天数,运行回测查看收益率分布和明细。
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /api/hot-stocks/collect | 采集今日热股 |
| GET | /api/hot-stocks/history | 获取采集历史日期 |
| GET | /api/hot-stocks/:date | 查询指定日期热股 |
| DELETE | /api/hot-stocks/:date | 删除指定日期数据 |
| POST | /api/kline/sync | 同步K线数据(可选 tradeDate) |
| GET | /api/strategies | 获取策略列表 |
| POST | /api/strategies | 创建策略 |
| PUT | /api/strategies/:id | 更新策略 |
| DELETE | /api/strategies/:id | 删除策略 |
| POST | /api/backtest | 运行回测 |
| GET | /api/backtest/export | 导出回测结果CSV |
- 热股数据:东方财富 BK1637 板块(通过 Puppeteer 采集)
- K线数据:东方财富 push2his API