教你用tushare获取A股历史数据


无论你是刚入门量化投资,还是想手动复盘个股走势,获取高质量的历史数据都是第一步。虽然市场上有各种数据终端(如 Wind、iFinD),但对个人开发者而言,开源接口 + Python 其实就够用。

一、准备工作
  1. 安装 Python 库 打开命令行,执行:
pip install tushare akshare pandas
  1. 注册 Tushare Token 访问 https://tushare.pro,注册账号并进入“个人中心”获取你的 Token。
二、获取单只股票的历史数据(Tushare 示例)
  1. 获取 600000.SH 的日线行情(不复权)
import tushare as ts
import pandas as pd
ts.set_token("你的Token")       # 用你自己的 token 替换
pro = ts.pro_api()
df = pro.daily(ts_code="600000.SH", start_date="20240101", end_date="20240625")
df = df.sort_values("trade_date")   # 按时间正序
print(df.head())
  1. 获取复权数据(常用于因子研究)
df_qfq = ts.pro_bar(ts_code="600000.SH", adj="qfq",
                    start_date="20240101", end_date="20240625")
字段 含义
open/close/high/low 日内价格
vol 成交量(手)
amount 成交额(元)
pct_chg 涨跌幅
三、批量下载多个股票的历史数据

import os
from time import sleep

if not os.path.exists("data"): os.makedirs("data")

def download_one_stock(ts_code):
    try:
        df = ts.pro_bar(ts_code=ts_code, adj="qfq", start_date="20200101", end_date="20240625")
        if df is not None and not df.empty:
            df.to_csv(f"data/{ts_code}.csv", index=False)
            print(f"{ts_code} 下载成功")
        sleep(1)  # 防止触发限速
    except Exception as e:
        print(f"{ts_code} 出错:{e}")
四、使用 AkShare 替代获取(无需 Token)
import akshare as ak

df = ak.stock_zh_a_hist(symbol="600000", period="daily",
                        start_date="20240101", end_date="20240625", adjust="qfq")
print(df.head())
五、数据清洗建议
操作 说明
日期标准化 pd.to_datetime(df['trade_date'])
缺失值处理 df.fillna(method='ffill') 或删除
重复值检测 df.duplicated().sum()
存储格式 建议使用 .parquet 替代 .csv,更小更快
最新回复 ( 0条评论 )


官方微信
码力十足学量化
Powered by Xiuno BBS 4.0.7

官方微信