# 股票行情数据更新与检查系统 本项目是一个基于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. 安装依赖 ```bash 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连接信息: ```python 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. 更新行情数据 **方法一:使用批处理文件** ```bash update_tushare_totxt.bat ``` **方法二:直接运行Python脚本** ```bash python update_tushare_totxt.py ``` ### 2. 检查数据完整性 ```bash 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`:主账户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上的地址(如果有的话)] - 邮箱:[你的邮箱地址]