- 基于Tushare Pro Java SDK 2.0.5-RELEASE版本 - 实现股票基本信息和日线行情数据获取 - 使用MyBatis进行数据库操作 - 支持定时任务调度 - Spring Boot框架集成 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
165 lines
4.2 KiB
Markdown
165 lines
4.2 KiB
Markdown
# 股票数据抓取项目
|
||
|
||
基于Tushare Pro接口的股票数据定时抓取系统,使用Spring Boot + MyBatis + MySQL技术栈。
|
||
|
||
## 功能特性
|
||
|
||
- 🔄 **定时抓取**: 支持定时获取股票基本信息和日线行情数据
|
||
- 📊 **数据存储**: 使用MySQL存储股票数据,支持批量插入和去重
|
||
- ⚡ **高性能**: 使用HikariCP连接池和MyBatis优化数据库操作
|
||
- 🔧 **灵活配置**: 支持通过配置文件自定义抓取策略和数据库连接
|
||
- 📈 **多时间周期**: 支持日线、周线、月线数据抓取
|
||
- 🗃️ **数据清理**: 自动清理历史数据,控制存储空间
|
||
|
||
## 技术栈
|
||
|
||
- **Java 8+**: 主要编程语言
|
||
- **Spring Boot 2.7**: 应用框架
|
||
- **MyBatis**: ORM框架
|
||
- **MySQL**: 数据存储
|
||
- **Tushare Pro SDK**: 股票数据接口
|
||
- **Quartz**: 定时任务调度
|
||
- **HikariCP**: 数据库连接池
|
||
|
||
## 快速开始
|
||
|
||
### 1. 环境准备
|
||
|
||
- JDK 8+
|
||
- Maven 3.6+
|
||
- MySQL 5.7+
|
||
|
||
### 2. 数据库初始化
|
||
|
||
执行SQL脚本创建数据库和表:
|
||
|
||
```sql
|
||
source src/main/resources/sql/init.sql
|
||
```
|
||
|
||
### 3. 配置文件修改
|
||
|
||
编辑 `src/main/resources/application.properties`:
|
||
|
||
```properties
|
||
# Tushare配置
|
||
tushare.token=your_actual_tushare_token
|
||
|
||
# 数据库配置
|
||
db.url=jdbc:mysql://localhost:3306/stock_data?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false
|
||
db.username=your_username
|
||
db.password=your_password
|
||
```
|
||
|
||
### 4. 编译和运行
|
||
|
||
```bash
|
||
# 编译项目
|
||
mvn clean compile
|
||
|
||
# 打包项目
|
||
mvn clean package
|
||
|
||
# 运行应用程序
|
||
java -jar target/go-stock-1.0-SNAPSHOT.jar
|
||
```
|
||
|
||
## 使用说明
|
||
|
||
### 命令行参数
|
||
|
||
```bash
|
||
# 启动应用程序并运行定时任务
|
||
java -jar go-stock.jar
|
||
|
||
# 手动获取股票基本信息
|
||
java -jar go-stock.jar fetch-basic
|
||
|
||
# 手动获取股票日线行情数据
|
||
java -jar go-stock.jar fetch-daily
|
||
|
||
# 清理历史数据,保留60天
|
||
java -jar go-stock.jar clean-data 60
|
||
|
||
# 显示帮助信息
|
||
java -jar go-stock.jar help
|
||
```
|
||
|
||
### 定时任务配置
|
||
|
||
在 `application.properties` 中配置定时任务:
|
||
|
||
```properties
|
||
# 启用定时任务
|
||
task.enabled=true
|
||
|
||
# 股票基本信息获取时间(每天凌晨1点)
|
||
task.cron.stock.basic=0 0 1 * * ?
|
||
|
||
# 股票日线数据获取时间(每个交易日下午3点30分)
|
||
task.cron.stock.daily=0 30 15 * * ?
|
||
```
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
src/main/java/com/sjz/
|
||
├── App.java # 主程序入口
|
||
├── config/ # 配置类
|
||
│ ├── DatabaseConfig.java # 数据库配置
|
||
│ └── TushareConfig.java # Tushare配置
|
||
├── mapper/ # 数据访问层
|
||
│ ├── StockBasicMapper.java
|
||
│ └── StockDailyMapper.java
|
||
├── model/ # 数据模型
|
||
│ ├── StockBasic.java
|
||
│ └── StockDaily.java
|
||
├── service/ # 业务逻辑层
|
||
│ ├── StockBasicService.java
|
||
│ └── StockDailyService.java
|
||
├── task/ # 定时任务
|
||
│ └── StockDataScheduler.java
|
||
└── util/ # 工具类
|
||
├── ConfigUtil.java
|
||
└── DateUtil.java
|
||
|
||
src/main/resources/
|
||
├── application.properties # 配置文件
|
||
├── mybatis-config.xml # MyBatis配置
|
||
└── sql/init.sql # 数据库初始化脚本
|
||
```
|
||
|
||
## API限制说明
|
||
|
||
Tushare Pro接口有以下限制:
|
||
|
||
- 每分钟请求次数限制:根据用户等级不同
|
||
- 每次返回记录数限制:通常5000条
|
||
- 建议在请求间添加适当延时,避免触发限制
|
||
|
||
## 监控和日志
|
||
|
||
- 使用SLF4J + Logback记录运行日志
|
||
- 数据库操作记录详细日志
|
||
- 定时任务执行状态监控
|
||
- 错误信息记录和报警
|
||
|
||
## 注意事项
|
||
|
||
1. **Tushare Token**: 需要在Tushare官网注册并获取有效的API Token
|
||
2. **交易日**: 系统会自动判断交易日,非交易日不会执行数据抓取
|
||
3. **数据去重**: 使用唯一键约束确保数据不重复
|
||
4. **数据备份**: 建议定期备份数据库
|
||
5. **监控告警**: 建议配置监控告警,及时发现问题
|
||
|
||
## 扩展功能
|
||
|
||
- 添加更多数据源
|
||
- 实现数据分析和统计功能
|
||
- 添加Web管理界面
|
||
- 支持更多时间周期数据
|
||
- 添加邮件通知功能
|
||
|
||
## 许可证
|
||
|
||
本项目仅供学习和研究使用,请遵守相关API使用条款。 |