用tushare保存A+H所有股票的历史交易数据

我全都要

上次介绍了获取个股基本数据和画图的方法,
今天来学习一个如何获得所有股票的历史交易数据。
通过tushare可以非常方便的获得A+H所有股票的历史交易数据,主要思路是两步:
第一步,获得A+H所有的股票代码:

pool = pro.stock_basic()

输出是股票信息的dataframe,具体如下(仅展示前5行):


股票信息

第二步,通过遍历pool的股票代码索引ts_code获得每只股票的历史交易数据:

df = pro.daily()

输出效果如下:


输出效果如下

保存到excel:

writer = pd.ExcelWriter('H://quant//'+ i + '.xlsx')
df.to_excel(writer, sheet_name=i + '', index=False)

将代码补全,设置开始时间为一个较早的日期,等待下载完成之后便可以获得成就——“我全都要”。
运行效果如下:


运行效果

看着是不是很爽~


运行效果

我全都要

完整代码如下:

import tushare as ts
import pandas as pd
import time


def maintask():
    pro = ts.pro_api()
    #获取基础信息数据,包括股票代码、名称、上市日期、退市日期等
    pool = pro.stock_basic(exchange = '',
                           list_status = 'L',
                           adj = 'qfq',
                           fields = 'ts_code,symbol,name,area,industry,fullname,list_date, market,exchange,is_hs')
    #print(pool.head())
    print('获得上市股票总数:', len(pool)-1)
    j = 1
    for i in pool.ts_code:
        print('正在获取第%d家,股票代码%s.' % (j, i))
        #接口限制访问200次/分钟,加一点微小的延时防止被ban
        time.sleep(0.301)
        j += 1
        df = pro.daily(ts_code = i,
                       start_date = startdate,
                       end_date = enddate,
                       fields = 'ts_code, trade_date, open, high, low, close, pre_close, change, pct_chg, vol, amount')
        #print(df.head())
        writer = pd.ExcelWriter(i + '.xlsx')
        df.to_excel(writer, sheet_name = i + '', index = False)


if __name__ == '__main__':
    #设置起始日期
    startdate = '19980101'
    enddate = '20190304'
    #主程序
    maintask()

你可能感兴趣的:(用tushare保存A+H所有股票的历史交易数据)