jq获取input选取的文件名_tushare获取交易数据并可视化分析
獲取數(shù)據(jù)是金融量化分析的第一步,找不到可靠、準(zhǔn)確的數(shù)據(jù),量化分析就無(wú)從談起。隨著信息技術(shù)的不斷發(fā)展,數(shù)據(jù)獲取渠道也越來(lái)越多,尤其是Python網(wǎng)絡(luò)爬蟲(chóng),近幾年愈來(lái)愈火。然而,很多人畢竟精力有限,沒(méi)時(shí)間專(zhuān)門(mén)去學(xué)習(xí)網(wǎng)絡(luò)爬蟲(chóng)技術(shù)。當(dāng)然,不會(huì)網(wǎng)絡(luò)爬蟲(chóng)不要緊,我們還可以借助Python的開(kāi)源數(shù)據(jù)包(其本質(zhì)也是網(wǎng)絡(luò)爬蟲(chóng)),如:tushare、baostock、pandas_datareader和yahoo等財(cái)經(jīng)數(shù)據(jù)API,這樣可以節(jié)省不少精力。本文將以tushare為例,演示如何獲取股票數(shù)據(jù),并進(jìn)行簡(jiǎn)單的可視化分析。
圖1 股票漲跌驅(qū)動(dòng)因素
圖2 公司基本面信息源
圖3 知名股票論壇
Tushare是一個(gè)免費(fèi)、開(kāi)源的python財(cái)經(jīng)數(shù)據(jù)接口包。主要實(shí)現(xiàn)對(duì)股票等金融數(shù)據(jù)從數(shù)據(jù)采集、清洗加工到數(shù)據(jù)存儲(chǔ)的過(guò)程,能夠?yàn)榻鹑诜治鋈藛T提供快速、整潔、和多樣的便于分析的數(shù)據(jù),為他們?cè)跀?shù)據(jù)獲取方面極大地減輕工作量,使他們更加專(zhuān)注于策略和模型的研究與實(shí)現(xiàn)上。考慮到Python pandas包在金融量化分析中體現(xiàn)出的優(yōu)勢(shì),Tushare返回的絕大部分的數(shù)據(jù)格式都是pandas DataFrame類(lèi)型,非常便于用pandas/NumPy/Matplotlib進(jìn)行數(shù)據(jù)分析和可視化。當(dāng)然,如果您習(xí)慣了用Excel或者關(guān)系型數(shù)據(jù)庫(kù)做分析,您也可以通過(guò)Tushare的數(shù)據(jù)存儲(chǔ)功能,將數(shù)據(jù)全部保存到本地后進(jìn)行分析。從0.2.5版本開(kāi)始,Tushare同時(shí)兼容Python 2.x和Python 3.x,對(duì)部分代碼進(jìn)行了重構(gòu),并優(yōu)化了一些算法,確保數(shù)據(jù)獲取的高效和穩(wěn)定。
使用前提
安裝Python
安裝pandas
lxml也是必須的,正常情況下安裝了Anaconda后無(wú)須單獨(dú)安裝,如果沒(méi)有可執(zhí)行:pip install lxml
建議安裝Anaconda(http://www.continuum.io/downloads),一次安裝包括了Python環(huán)境和全部依賴(lài)包,減少問(wèn)題出現(xiàn)的幾率。
下載安裝
方式1:pip install tushare
方式2:訪(fǎng)問(wèn)https://pypi.python.org/pypi/Tushare/下載安裝
除此之外,新版本需要注冊(cè)獲取token才能免費(fèi)使用,果想擁有自己的token,可以點(diǎn)擊https://tushare.pro/register?reg=300271注冊(cè)。
#先引入后面分析、可視化等可能用到的庫(kù)import tushare as tsimport pandas as pd import matplotlib.pyplot as pltimport numpy as np#正常顯示畫(huà)圖時(shí)出現(xiàn)的中文和負(fù)號(hào)from pylab import mplmpl.rcParams['font.sans-serif']=['SimHei']mpl.rcParams['axes.unicode_minus']=False#設(shè)置tokentoken='你的token'ts.set_token(token)pro = ts.pro_api(token)個(gè)股行情數(shù)據(jù):
pro.stock_basic()
參數(shù):is_hs:是否滬深港通標(biāo)的,N否、H滬股通、S深股通;list_status:上市狀態(tài),L上市、D退市、P暫停上市;exchange:交易所 SSE上交所,SZSE深交所,HKEX港交所。?
pro.daily(ts_code= 或 trade_date=)
日行情:daily;周行情:weekly;月行情:monthly
#獲取當(dāng)前上市的股票代碼、簡(jiǎn)稱(chēng)、注冊(cè)地、行業(yè)、上市時(shí)間等數(shù)據(jù)basic=pro.stock_basic(list_status='L')#查看前五行數(shù)據(jù)basic.head(5)#獲取平安銀行日行情數(shù)據(jù)pa=pro.daily(ts_code='000001.SZ', start_date='20150101', end_date='20200818')pa.head()得到如下結(jié)果:
#定義獲取多只股票函數(shù):def get_stocks_data(stocklist,start,end): all_data={} for name,code in stocklist.items(): #qfq,前復(fù)權(quán);hfq,后復(fù)權(quán) all_data[name]=ts.pro_bar(ts_code=code,start_date=start, end_date=end,adj='qfq') return all_data#保存本地def save_data(all_data): for code,data in all_data.items(): data.to_csv('D:/MasterStudy/python/學(xué)習(xí)/test/實(shí)盤(pán)/'+code+'.csv', header=True, index=False)#以下為本人持有股票stocklist={'四環(huán)生物':'000518.SZ','牧原股份':'002714.SZ','恒瑞醫(yī)藥':'600276.SH',???????????'亨通光電':'600487.SH','中國(guó)平安':'601318.SH'}#時(shí)間為2015-01-01至2020-08-18all_data=get_stocks_data(stocklist,'20150101','20200818')all_data['牧原股份'].tail()#將數(shù)據(jù)保存到本地save_data(all_data)#讀取本地文件夾里所有文件import os#文件存儲(chǔ)路徑file='D:/MasterStudy/python/學(xué)習(xí)/test/實(shí)盤(pán)/'g=os.walk(file)filenames=[]for path,d,filelist in g: for filename in filelist: filenames.append(os.path.join(filename))print(filenames)#將讀取的數(shù)據(jù)文件放入一個(gè)字典中df={}#從文件名中分離出股票代碼code=[name.split('.')[0] for name in filenames]for i in range(len(filenames)): filename=file+filenames[i] df[code[i]]=pd.read_csv(filename) df[code[i]]['trade_date']=pd.to_datetime(df[code[i]]['trade_date'],format='%Y%m%d') df[code[i]].set_index("trade_date", inplace=True)#查看第一只股票前五行數(shù)據(jù)df[code[0]].tail()以上涉及到了復(fù)權(quán)的概念,那么為什么要設(shè)置復(fù)權(quán)呢?
所謂復(fù)權(quán)就是對(duì)股價(jià)和成交量進(jìn)行權(quán)息修復(fù),按照股票的實(shí)際漲跌繪制股價(jià)走勢(shì)圖,并把成交量調(diào)整為相同的股本口徑。股票除權(quán)、除息之后,股價(jià)隨之產(chǎn)生了變化,但實(shí)際成本并沒(méi)有變化。
前復(fù)權(quán)即就是保持現(xiàn)有價(jià)位不變,將以前的價(jià)格縮減,將除權(quán)前的K線(xiàn)向下平移,使圖形吻合,保持股價(jià)走勢(shì)的連續(xù)性。前復(fù)權(quán)即就是保持現(xiàn)有價(jià)位不變,將以前的價(jià)格縮減,將除權(quán)前的K線(xiàn)向下平移,使圖形吻合,保持股價(jià)走勢(shì)的連續(xù)性。
后復(fù)權(quán)就是在K線(xiàn)圖上以除權(quán)前的價(jià)格為基準(zhǔn)來(lái)測(cè)算除權(quán)后股票的市場(chǎng)成本價(jià)。就是把除權(quán)后的價(jià)格按以前的價(jià)格換算過(guò)來(lái)。簡(jiǎn)單的說(shuō),就是保持先前的價(jià)格不變,而將以后的價(jià)格增加。
簡(jiǎn)單來(lái)說(shuō),就是隨著公司的發(fā)展,股價(jià)和市值不斷增高,而股價(jià)過(guò)高會(huì)把很多散(jiu)戶(hù)(cai)擋在門(mén)外,這時(shí)候進(jìn)行復(fù)權(quán),就是把整個(gè)池子里的總的錢(qián)保持不變,把每股單價(jià)降低,總股數(shù)增加,進(jìn)而降低散(jiu)戶(hù)(cai)們的入場(chǎng)門(mén)檻,已經(jīng)持股的股東則會(huì)得到配股。前復(fù)權(quán)就是保持現(xiàn)有價(jià)位不變,將以前的價(jià)格縮減;后復(fù)權(quán)就是保持以前的價(jià)位不變,將現(xiàn)在的價(jià)格提高。
plot_pos = [321,322,323,324,325] # 每個(gè)子圖的位置new_colors = ['#1f77b4','#ff7f0e', '#2ca02c', '#d62728','#9467bd']# 每個(gè)子圖的顏色fig = plt.figure(figsize=(16,18))fig.suptitle('自選股指走勢(shì)',fontsize=18)for pos in np.arange(len(plot_pos)): ax = fig.add_subplot(plot_pos[pos]) y_data =df[code[pos]]['close'] b = ax.plot(y_data,color=new_colors[pos]) ax.set_title(code[pos]) # 將右上邊的兩條邊顏色設(shè)置為空,相當(dāng)于抹掉這兩條邊 ax = plt.gca() ax.spines['right'].set_color('none') ax.spines['top'].set_color('none')plt.show()以上選取了從2015年1月1日開(kāi)始,到2020年8月18日的股票行情。可以看到,中國(guó)平安、恒瑞醫(yī)藥、牧原股份的漲勢(shì)較好,且較平穩(wěn)。亨通光電從長(zhǎng)時(shí)間跨度來(lái)看雖然漲幅還可以,但中間回撤幅度較大,非常不穩(wěn)定,四環(huán)生物則漲幅和穩(wěn)定性都不好。
#累計(jì)收益plot_pos = [321,322,323,324,325] # 每個(gè)子圖的位置new_colors = ['#1f77b4','#ff7f0e', '#2ca02c', '#d62728','#9467bd']fig = plt.figure(figsize=(16,18))fig.suptitle('股票收益率\n 2015-2020',fontsize=18)for pos in np.arange(len(plot_pos)): ax = fig.add_subplot(plot_pos[pos]) y_data =df[code[pos]]['close']/df[code[pos]]['close'].iloc[-1]-1 b = ax.plot(y_data,color=new_colors[pos]) ax.set_title(code[pos]) # 將右上邊的兩條邊顏色設(shè)置為空,相當(dāng)于抹掉這兩條邊 ax = plt.gca() ax.spines['right'].set_color('none') ax.spines['top'].set_color('none')plt.show()可以看出,從2015年1月1日至今,收益率從大到小的依次是牧原股份、恒瑞醫(yī)藥、亨通光電、中國(guó)平安、四環(huán)生物。
總結(jié)
以上是生活随笔為你收集整理的jq获取input选取的文件名_tushare获取交易数据并可视化分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 苦荞茶多少钱一斤啊?
- 下一篇: 高级cmd攻击命令_一步一步学习DVWA