2025-12-18 16:24:44 +08:00

股票行情数据更新与检查系统

本项目是一个基于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
  • ACCOUNTSTushare API Token列表
  • DB_CONFIG:数据库连接配置

check_market_data.py

  • MAX_REQUESTS_PER_MINUTEAPI请求频率限制
  • DATA_DIR:数据目录路径
  • OUTPUT_FILE:检查结果输出文件
  • TRADE_CALENDAR_START_YEARS交易日历查询起始年份默认2年
  • TRADE_CALENDAR_END_MONTHS交易日历查询结束月份默认1个月

2. 环境变量配置

可以通过环境变量覆盖默认配置:

  • MAX_THREADS:最大线程数
  • REQUEST_LIMIT:每分钟最大请求次数
  • TUSHARE_TOKEN1主账户Token
  • TUSHARE_TOKEN2备用账户Token
  • DB_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:数据检查脚本的运行日志

日志记录了程序运行状态、错误信息和重要操作,便于调试和问题排查。

注意事项

  1. API限制Tushare API有请求频率限制程序会自动控制请求频率但仍需注意账户的权限和配额
  2. 网络连接:确保网络连接稳定,特别是在批量更新数据时
  3. 数据库配置如需使用数据库功能请确保MySQL服务已启动并正确配置连接信息
  4. 数据备份:定期备份数据文件和数据库,避免数据丢失
  5. 账户安全不要将API Token泄露给他人建议使用环境变量配置

更新日志

  • 2025-12-18添加了停牌状态检查功能优化了数据更新逻辑
  • 2025-12-17修复了程序退出逻辑增加了目录自动创建功能
  • 2025-12-16优化了多线程处理和请求频率控制
  • 2025-12-15添加了数据库同步功能支持将数据同步到MySQL
  • 2025-12-14初始版本实现了基本的数据更新和保存功能

许可证

本项目采用MIT许可证。

贡献

欢迎提交Issue和Pull Request共同改进项目功能。

联系方式

如有问题或建议,请通过以下方式联系:

  • 项目地址:[本项目在GitHub上的地址如果有的话]
  • 邮箱:[你的邮箱地址]
Description
更新日行情数据,检查日数据更新。
Readme 624 KiB
Languages
Python 99.9%