上次介绍了获取个股基本数据和画图的方法,
今天来学习一个如何获得所有股票的历史交易数据。
通过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()