go-stock/README.md
ycg ef5cbc22dc Initial commit: Java股票数据获取项目
- 基于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>
2025-12-05 11:31:25 +08:00

165 lines
4.2 KiB
Markdown
Raw Permalink 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.

# 股票数据抓取项目
基于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使用条款。