Skip to content

kerrydu/cntrade

Repository files navigation

CNTrade - 中国股票数据下载工具

Python License: MIT

CNTrade 是一个用于下载中国股票和指数历史交易数据的 Python 工具包。它能够从东方财富网 API 获取沪深A股和主要指数的完整历史数据。

✨ 特性

  • 🚀 高速下载:基于东方财富网高性能 API
  • 📊 全面数据:支持沪深A股、创业板股票和主要指数
  • 🔄 实时更新:获取从上市日期到最新交易日的完整数据
  • 📈 丰富字段:包含开高低收、涨跌幅、成交量、成交额等完整信息
  • 💾 多种格式:支持 CSV 格式输出,便于后续分析
  • 🛡️ 稳定可靠:内置错误处理和数据验证机制

📦 安装

从源码安装

git clone https://github.com/kerrydu/cntrade.git
cd cntrade
pip install -e .

安装依赖

pip install -r requirements.txt

🚀 快速开始

基本使用

from cntrade import cntrade

# 下载单个股票数据(平安银行)
cntrade(['000001'], path='./data', stock=True, index=False)

# 下载多个股票数据
stock_list = ['000001', '000002', '600000', '600036']
cntrade(stock_list, path='./stock_data', stock=True, index=False)

# 下载指数数据
index_list = ['000001', '399001', '399006']  # 上证指数、深证成指、创业板指
cntrade(index_list, path='./index_data', stock=False, index=True)

数据分析示例

import pandas as pd
from cntrade import cntrade

# 下载数据
cntrade(['000001'], path='./data')

# 读取和分析数据
df = pd.read_csv('./data/000001.csv')

print(f"数据期间: {df['date'].min()}{df['date'].max()}")
print(f"总交易日数: {len(df)}")
print(f"最新收盘价: {df['clsprc'].iloc[-1]:.2f}")
print(f"最近一年平均涨跌幅: {df['rit'].tail(250).mean()*100:.2f}%")

📖 API 文档

主函数

cntrade(tickers, path=None, stock=True, index=False)

下载中国股票或指数交易数据的主函数。

参数:

  • tickers (list): 股票代码或指数代码列表
  • path (str, optional): 数据保存路径,默认为当前目录
  • stock (bool): 是否下载股票数据,默认为 True
  • index (bool): 是否下载指数数据,默认为 False

返回值:

  • 成功时返回 DataFrame,失败时返回 None

注意:

  • stockindex 参数不能同时为 True
  • 股票代码支持 6 位数字,会自动补零
  • 数据保存为 CSV 格式,文件名为 {代码}.csvindex{代码}.csv

支持的市场

股票市场

  • 上海证券交易所:6开头的股票代码
  • 深圳证券交易所主板:000开头的股票代码
  • 深圳证券交易所创业板:300开头的股票代码

指数市场

  • 上证指数:000001
  • 深证成指:399001
  • 创业板指:399006
  • 其他主要指数

数据字段说明

股票数据字段

字段名 含义 类型
stkcd 股票代码 str
stknme 股票名称 str
date 交易日期 datetime
opnprc 开盘价 float
clsprc 收盘价 float
hiprc 最高价 float
lowprc 最低价 float
rit 涨跌幅 float
turnover 换手率 float
volume 成交量 int
transaction 成交额(元) float
amplitude 振幅 float

指数数据字段

字段名 含义 类型
indexcd 指数代码 str
indexnme 指数名称 str
date 交易日期 datetime
opnprc 开盘价 float
clsprc 收盘价 float
hiprc 最高价 float
lowprc 最低价 float
rmt 涨跌幅 float
turnover 换手率 float
volume 成交量 int
transaction 成交额(元) float
amplitude 振幅 float

📝 使用示例

示例 1: 批量下载热门股票

from cntrade import cntrade

# 定义热门股票列表
hot_stocks = [
    '000001',  # 平安银行
    '000002',  # 万科A
    '600000',  # 浦发银行
    '600036',  # 招商银行
    '000858',  # 五粮液
    '600519',  # 贵州茅台
    '300001',  # 特锐德
]

# 批量下载
cntrade(hot_stocks, path='./hot_stocks', stock=True, index=False)
print("热门股票数据下载完成!")

示例 2: 下载主要指数

from cntrade import cntrade

# 主要指数
major_indices = [
    '000001',  # 上证指数
    '399001',  # 深证成指
    '399006',  # 创业板指
    '000016',  # 上证50
    '000300',  # 沪深300
    '000905',  # 中证500
]

# 下载指数数据
cntrade(major_indices, path='./indices', stock=False, index=True)
print("主要指数数据下载完成!")

⚠️ 注意事项

  1. 请求频率限制:建议在批量下载时添加适当的延时,避免请求过于频繁
  2. 数据准确性:数据来源于东方财富网,仅供学习和研究使用
  3. 网络连接:需要稳定的网络连接,下载大量数据时建议检查网络状态
  4. 存储空间:历史数据较多,请确保有足够的存储空间

🐛 故障排除

常见问题

Q: 下载失败,提示"invalid stock code"

  • A: 检查股票代码是否正确,确保代码存在且已上市

Q: 下载的数据不完整

  • A: 可能是网络问题,建议重试或检查网络连接

Q: 某些字段有缺失值

  • A: 早期数据可能不完整,这是正常现象

Q: 涨跌幅数据超过10%

  • A: 早期市场没有涨跌停限制,或包含除权除息等特殊情况

🤝 贡献

欢迎提交 Issue 和 Pull Request!

  1. Fork 本项目
  2. 创建功能分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 打开 Pull Request

📄 许可证

本项目使用 MIT 许可证。详见 LICENSE 文件。

📧 联系

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

🙏 致谢


免责声明: 本工具仅供学习和研究使用,不构成投资建议。投资有风险,入市需谨慎。

About

CNTrade - 中国股票数据下载工具 | Chinese Stock Trading Data Download Tool

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages