5.8 KiB
5.8 KiB
股票行情数据更新与检查系统
本项目是一个基于Python和Tushare API的股票行情数据更新与检查系统,用于获取、存储和维护股票行情数据。
功能特性
1. 数据更新功能 (update_tushare_totxt.py)
- 多账户轮询:支持配置多个Tushare账户,自动轮询使用以避免API请求限制
- 增量更新:仅下载最新的行情数据,避免重复下载
- 数据持久化:将数据保存为制表符分隔的文本文件
- 数据库同步:支持将数据同步到MySQL数据库
- 多线程处理:使用多线程提高数据下载效率
- 目录自动创建:自动创建所需的数据目录结构
- 请求频率控制:自动控制API请求频率,避免超过限制
- 错误重试机制:网络错误或API请求失败时自动重试
2. 数据检查功能 (check_market_data.py)
- 数据完整性检查:检查本地行情数据的完整性
- 交易日历同步:获取并缓存交易日历信息
- 停牌状态检查:自动检查股票的停牌状态
- 自动数据更新:发现数据缺失或过期时自动更新
- 在线数据验证:可选择与在线数据进行对比验证
- 结果输出:检查结果保存为CSV文件
目录结构
D:\data\update_day\
├── update_tushare_totxt.py # 主数据更新脚本
├── check_market_data.py # 数据检查脚本
├── update_tushare_totxt.bat # 批处理文件
├── app.log # 应用日志
├── market_data_check.log # 数据检查日志
├── market_data_check_result.csv # 数据检查结果
└── README.md # 项目说明文档
安装与配置
1. 安装依赖
pip install pandas tushare pymysql sqlalchemy
2. Tushare配置
需要注册Tushare账号并获取API Token,然后在配置文件中设置:
- 在
update_tushare_totxt.py中的Config.ACCOUNTS配置 - 在
check_market_data.py中的Config.TUSHARE_TOKENS配置
3. 数据目录配置
默认数据保存目录为D:\gp_data,包含以下子目录:
code:存放股票代码文件day:存放日行情数据文件index:存放指数数据文件
4. 数据库配置(可选)
在update_tushare_totxt.py中的Config.DB_CONFIG配置MySQL连接信息:
DB_CONFIG = {
'host': os.getenv('DB_HOST', '127.0.0.1'),
'port': int(os.getenv('DB_PORT', 3306)),
'user': os.getenv('DB_USER', 'root'),
'password': os.getenv('DB_PASSWORD', 'your_password'),
'database': os.getenv('DB_NAME', 'stock_data')
}
使用方法
1. 更新行情数据
方法一:使用批处理文件
update_tushare_totxt.bat
方法二:直接运行Python脚本
python update_tushare_totxt.py
2. 检查数据完整性
python check_market_data.py
配置说明
1. 主要配置参数
update_tushare_totxt.py
MAX_THREADS:最大线程数(默认20)REQUEST_LIMIT:每分钟最大请求次数(默认500)MAX_RETRIES:请求失败最大重试次数(默认3)ACCOUNTS:Tushare API Token列表DB_CONFIG:数据库连接配置
check_market_data.py
MAX_REQUESTS_PER_MINUTE:API请求频率限制DATA_DIR:数据目录路径OUTPUT_FILE:检查结果输出文件TRADE_CALENDAR_START_YEARS:交易日历查询起始年份(默认2年)TRADE_CALENDAR_END_MONTHS:交易日历查询结束月份(默认1个月)
2. 环境变量配置
可以通过环境变量覆盖默认配置:
MAX_THREADS:最大线程数REQUEST_LIMIT:每分钟最大请求次数TUSHARE_TOKEN1:主账户TokenTUSHARE_TOKEN2:备用账户TokenDB_HOST:数据库主机DB_PORT:数据库端口DB_USER:数据库用户名DB_PASSWORD:数据库密码DB_NAME:数据库名称
数据文件格式
行情数据以制表符分隔的文本文件保存,文件名格式为[股票代码]_daily_data.txt,例如:
688800.SH_daily_data.txt
文件包含以下字段:
ts_code:股票代码trade_date:交易日期open:开盘价high:最高价low:最低价close:收盘价pre_close:前收盘价change:涨跌额pct_chg:涨跌幅(百分比)vol:成交量(手)amount:成交额(千元)
日志说明
app.log:数据更新脚本的运行日志market_data_check.log:数据检查脚本的运行日志
日志记录了程序运行状态、错误信息和重要操作,便于调试和问题排查。
注意事项
- API限制:Tushare API有请求频率限制,程序会自动控制请求频率,但仍需注意账户的权限和配额
- 网络连接:确保网络连接稳定,特别是在批量更新数据时
- 数据库配置:如需使用数据库功能,请确保MySQL服务已启动并正确配置连接信息
- 数据备份:定期备份数据文件和数据库,避免数据丢失
- 账户安全:不要将API Token泄露给他人,建议使用环境变量配置
更新日志
- 2025-12-18:添加了停牌状态检查功能,优化了数据更新逻辑
- 2025-12-17:修复了程序退出逻辑,增加了目录自动创建功能
- 2025-12-16:优化了多线程处理和请求频率控制
- 2025-12-15:添加了数据库同步功能,支持将数据同步到MySQL
- 2025-12-14:初始版本,实现了基本的数据更新和保存功能
许可证
本项目采用MIT许可证。
贡献
欢迎提交Issue和Pull Request,共同改进项目功能。
联系方式
如有问题或建议,请通过以下方式联系:
- 项目地址:[本项目在GitHub上的地址(如果有的话)]
- 邮箱:[你的邮箱地址]