- 后端实现: - 实现 NBA 比赛数据服务,从 Polymarket API 获取数据 - 实现数据库存储和增量拉取逻辑(优先从 DB 获取,数据不足时增量拉取) - 使用 sports_market_types 参数直接筛选 moneyline 类型 - 实现分页拉取逻辑(基于 gameStartTime 和 createdAt) - 移除 nba_markets 相关的外键约束(V12 迁移) - 修复数据拉取逻辑:超过 3 天的数据不拉取 - 前端实现: - 实现策略创建/编辑/列表页面 - 实现交易信号展示页面和统计页面 - 修复重复请求问题(使用 useCallback 包装 fetchGames) - 支持选择单场比赛进行配置 - 使用西8区时间格式化显示 - 数据库: - 创建 NBA 量化交易相关表(V11 迁移) - 移除外键约束(V12 迁移) - 文档: - 添加产品需求文档、技术方案、算法文档等
219 lines
5.2 KiB
Markdown
219 lines
5.2 KiB
Markdown
# NBA 量化交易系统后端实现总结
|
||
|
||
## 已完成部分
|
||
|
||
### 1. 数据库设计 ✅
|
||
|
||
**迁移文件**: `V11__create_nba_quantitative_trading_tables.sql`
|
||
|
||
创建了以下表:
|
||
- `nba_markets`: NBA 市场表(Polymarket 市场信息)
|
||
- `nba_games`: NBA 比赛表
|
||
- `nba_quantitative_strategies`: 量化策略配置表
|
||
- `nba_trading_signals`: 交易信号表
|
||
- `nba_strategy_statistics`: 策略执行统计表
|
||
|
||
### 2. 实体类 ✅
|
||
|
||
已创建以下实体类:
|
||
- `NbaMarket.kt`: NBA 市场实体
|
||
- `NbaGame.kt`: NBA 比赛实体
|
||
- `NbaQuantitativeStrategy.kt`: 量化策略配置实体
|
||
- `NbaTradingSignal.kt`: 交易信号实体
|
||
- `NbaStrategyStatistics.kt`: 策略统计实体
|
||
|
||
### 3. Repository 层 ✅
|
||
|
||
已创建以下 Repository:
|
||
- `NbaMarketRepository.kt`
|
||
- `NbaGameRepository.kt`
|
||
- `NbaQuantitativeStrategyRepository.kt`
|
||
- `NbaTradingSignalRepository.kt`
|
||
- `NbaStrategyStatisticsRepository.kt`
|
||
|
||
### 4. DTO 层 ✅
|
||
|
||
已创建:
|
||
- `NbaQuantitativeStrategyDto.kt`: 包含创建、更新、列表请求和响应 DTO
|
||
|
||
### 5. Service 层(部分完成)✅
|
||
|
||
已创建:
|
||
- `NbaQuantitativeStrategyService.kt`: 策略管理服务
|
||
- 创建策略
|
||
- 更新策略
|
||
- 获取策略列表
|
||
- 获取策略详情
|
||
- 删除策略
|
||
- 获取启用的策略列表
|
||
|
||
### 6. Controller 层(部分完成)✅
|
||
|
||
已创建:
|
||
- `NbaQuantitativeStrategyController.kt`: 策略管理 API
|
||
- `POST /api/nba/strategies/create`: 创建策略
|
||
- `POST /api/nba/strategies/update`: 更新策略
|
||
- `POST /api/nba/strategies/list`: 获取策略列表
|
||
- `POST /api/nba/strategies/detail`: 获取策略详情
|
||
- `POST /api/nba/strategies/delete`: 删除策略
|
||
|
||
---
|
||
|
||
## 待完成部分
|
||
|
||
### 1. NBA 市场数据获取服务 ⏳
|
||
|
||
**需要创建**:
|
||
- `NbaMarketService.kt`:
|
||
- 从 Polymarket API 获取市场列表
|
||
- 同步市场数据到数据库
|
||
- 根据条件查询市场
|
||
- 匹配 NBA 比赛和市场
|
||
|
||
**参考文档**: `docs/zh/polymarket-nba-markets-fetching-solution.md`
|
||
|
||
### 2. NBA 比赛数据获取服务 ⏳
|
||
|
||
**需要创建**:
|
||
- `NbaGameService.kt`:
|
||
- 从 NBA API 获取比赛数据
|
||
- 同步比赛数据到数据库
|
||
- 实时更新比赛状态
|
||
- 匹配比赛和市场
|
||
|
||
**需要集成**: NBA Stats API 或第三方 NBA 数据 API
|
||
|
||
### 3. 量化分析服务 ⏳
|
||
|
||
**需要创建**:
|
||
- `NbaQuantitativeAnalysisService.kt`:
|
||
- 综合评分计算
|
||
- 对位分析
|
||
- 实时状态分析
|
||
- 获胜概率计算
|
||
- 交易价值计算
|
||
|
||
**参考文档**: `docs/zh/nba-quantitative-strategy-algorithm.md`
|
||
|
||
### 4. 交易信号生成服务 ⏳
|
||
|
||
**需要创建**:
|
||
- `NbaTradingSignalService.kt`:
|
||
- 生成买入信号
|
||
- 生成卖出信号
|
||
- 风险控制检查
|
||
- 信号验证
|
||
|
||
### 5. WebSocket 推送服务 ⏳
|
||
|
||
**需要创建**:
|
||
- `NbaTradingSignalPushService.kt`:
|
||
- WebSocket 连接管理
|
||
- 信号推送
|
||
- 订阅管理
|
||
|
||
**参考**: 现有的 `OrderPushService.kt`
|
||
|
||
### 6. 定时任务和同步服务 ⏳
|
||
|
||
**需要创建**:
|
||
- `NbaMarketSyncScheduler.kt`: 同步 NBA 市场数据
|
||
- `NbaGameSyncScheduler.kt`: 同步 NBA 比赛数据
|
||
- `NbaQuantitativeAnalysisScheduler.kt`: 定时执行量化分析
|
||
|
||
### 7. 其他 Controller ⏳
|
||
|
||
**需要创建**:
|
||
- `NbaMarketController.kt`: 市场数据 API
|
||
- `NbaGameController.kt`: 比赛数据 API
|
||
- `NbaTradingSignalController.kt`: 交易信号 API
|
||
- `NbaStatisticsController.kt`: 统计 API
|
||
|
||
### 8. 其他 DTO ⏳
|
||
|
||
**需要创建**:
|
||
- `NbaMarketDto.kt`
|
||
- `NbaGameDto.kt`
|
||
- `NbaTradingSignalDto.kt`
|
||
- `NbaStatisticsDto.kt`
|
||
|
||
---
|
||
|
||
## 实现优先级
|
||
|
||
### 第一阶段(核心功能)
|
||
1. ✅ 数据库设计和实体类
|
||
2. ✅ 策略管理服务(CRUD)
|
||
3. ⏳ NBA 市场数据获取服务
|
||
4. ⏳ NBA 比赛数据获取服务
|
||
|
||
### 第二阶段(量化分析)
|
||
5. ⏳ 量化分析服务
|
||
6. ⏳ 交易信号生成服务
|
||
7. ⏳ 风险控制逻辑
|
||
|
||
### 第三阶段(实时推送)
|
||
8. ⏳ WebSocket 推送服务
|
||
9. ⏳ 定时任务和同步服务
|
||
|
||
### 第四阶段(完善功能)
|
||
10. ⏳ 统计服务
|
||
11. ⏳ 其他 API 接口
|
||
12. ⏳ 错误处理和日志
|
||
|
||
---
|
||
|
||
## 技术要点
|
||
|
||
### 1. 数据同步策略
|
||
- 市场数据:每天全量同步,每小时增量同步
|
||
- 比赛数据:实时更新(比赛进行中)
|
||
- 分析频率:根据策略配置(默认 30 秒)
|
||
|
||
### 2. 量化分析算法
|
||
- 综合评分计算(基础实力、近期状态、阵容完整度等)
|
||
- 对位分析(球星对位、阵容克制)
|
||
- 实时状态分析(分差、势头)
|
||
- 获胜概率计算
|
||
- 交易价值计算
|
||
|
||
### 3. 风险控制
|
||
- 持仓限制检查
|
||
- 每日限制检查
|
||
- 价格容忍度检查
|
||
- 概率置信度检查
|
||
|
||
### 4. WebSocket 推送
|
||
- 实时推送交易信号
|
||
- 支持订阅/取消订阅
|
||
- 连接管理和重连机制
|
||
|
||
---
|
||
|
||
## 下一步工作
|
||
|
||
1. **实现 NBA 市场数据获取服务**
|
||
- 参考 `polymarket-nba-markets-fetching-solution.md`
|
||
- 实现批量查询和过滤逻辑
|
||
|
||
2. **实现 NBA 比赛数据获取服务**
|
||
- 集成 NBA Stats API
|
||
- 实现比赛数据同步和更新
|
||
|
||
3. **实现量化分析服务**
|
||
- 参考 `nba-quantitative-strategy-algorithm.md`
|
||
- 实现综合评分、对位分析、概率计算等核心算法
|
||
|
||
4. **实现交易信号生成服务**
|
||
- 集成量化分析结果
|
||
- 实现买入/卖出信号生成逻辑
|
||
|
||
5. **实现 WebSocket 推送服务**
|
||
- 参考现有的 `OrderPushService`
|
||
- 实现信号推送和订阅管理
|
||
|
||
---
|
||
|
||
**文档结束**
|
||
|