上次介紹了獲取個股基本數(shù)據(jù)和畫圖的方法叔汁,
今天來學(xué)習(xí)一個如何獲得所有股票的歷史交易數(shù)據(jù)摆舟。
通過tushare可以非常方便的獲得A+H所有股票的歷史交易數(shù)據(jù),主要思路是兩步:
第一步品嚣,獲得A+H所有的股票代碼:
pool = pro.stock_basic()
輸出是股票信息的dataframe,具體如下(僅展示前5行):
第二步,通過遍歷pool的股票代碼索引ts_code獲得每只股票的歷史交易數(shù)據(jù):
df = pro.daily()
輸出效果如下:
保存到excel:
writer = pd.ExcelWriter('H://quant//'+ i + '.xlsx')
df.to_excel(writer, sheet_name=i + '', index=False)
將代碼補(bǔ)全是晨,設(shè)置開始時間為一個較早的日期,等待下載完成之后便可以獲得成就——“我全都要”舔箭。
運行效果如下:
看著是不是很爽~
完整代碼如下:
import tushare as ts
import pandas as pd
import time
def maintask():
pro = ts.pro_api()
#獲取基礎(chǔ)信息數(shù)據(jù)罩缴,包括股票代碼、名稱层扶、上市日期箫章、退市日期等
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('獲得上市股票總數(shù):', 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__':
#設(shè)置起始日期
startdate = '19980101'
enddate = '20190304'
#主程序
maintask()