jq获取input选取的文件名_tushare获取交易数据并可视化分析
獲取數(shù)據(jù)是金融量化分析的第一步,找不到可靠、準(zhǔn)確的數(shù)據(jù),量化分析就無從談起。隨著信息技術(shù)的不斷發(fā)展,數(shù)據(jù)獲取渠道也越來越多,尤其是Python網(wǎng)絡(luò)爬蟲,近幾年愈來愈火。然而,很多人畢竟精力有限,沒時間專門去學(xué)習(xí)網(wǎng)絡(luò)爬蟲技術(shù)。當(dāng)然,不會網(wǎng)絡(luò)爬蟲不要緊,我們還可以借助Python的開源數(shù)據(jù)包(其本質(zhì)也是網(wǎng)絡(luò)爬蟲),如:tushare、baostock、pandas_datareader和yahoo等財經(jīng)數(shù)據(jù)API,這樣可以節(jié)省不少精力。本文將以tushare為例,演示如何獲取股票數(shù)據(jù),并進行簡單的可視化分析。
圖1 股票漲跌驅(qū)動因素
圖2 公司基本面信息源
圖3 知名股票論壇
Tushare是一個免費、開源的python財經(jīng)數(shù)據(jù)接口包。主要實現(xiàn)對股票等金融數(shù)據(jù)從數(shù)據(jù)采集、清洗加工到數(shù)據(jù)存儲的過程,能夠為金融分析人員提供快速、整潔、和多樣的便于分析的數(shù)據(jù),為他們在數(shù)據(jù)獲取方面極大地減輕工作量,使他們更加專注于策略和模型的研究與實現(xiàn)上。考慮到Python pandas包在金融量化分析中體現(xiàn)出的優(yōu)勢,Tushare返回的絕大部分的數(shù)據(jù)格式都是pandas DataFrame類型,非常便于用pandas/NumPy/Matplotlib進行數(shù)據(jù)分析和可視化。當(dāng)然,如果您習(xí)慣了用Excel或者關(guān)系型數(shù)據(jù)庫做分析,您也可以通過Tushare的數(shù)據(jù)存儲功能,將數(shù)據(jù)全部保存到本地后進行分析。從0.2.5版本開始,Tushare同時兼容Python 2.x和Python 3.x,對部分代碼進行了重構(gòu),并優(yōu)化了一些算法,確保數(shù)據(jù)獲取的高效和穩(wěn)定。
使用前提
安裝Python
安裝pandas
lxml也是必須的,正常情況下安裝了Anaconda后無須單獨安裝,如果沒有可執(zhí)行:pip install lxml
建議安裝Anaconda(http://www.continuum.io/downloads),一次安裝包括了Python環(huán)境和全部依賴包,減少問題出現(xiàn)的幾率。
下載安裝
方式1:pip install tushare
方式2:訪問https://pypi.python.org/pypi/Tushare/下載安裝
除此之外,新版本需要注冊獲取token才能免費使用,果想擁有自己的token,可以點擊https://tushare.pro/register?reg=300271注冊。
#先引入后面分析、可視化等可能用到的庫import tushare as tsimport pandas as pd import matplotlib.pyplot as pltimport numpy as np#正常顯示畫圖時出現(xiàn)的中文和負號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)個股行情數(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)前上市的股票代碼、簡稱、注冊地、行業(yè)、上市時間等數(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/實盤/'+code+'.csv', header=True, index=False)#以下為本人持有股票stocklist={'四環(huán)生物':'000518.SZ','牧原股份':'002714.SZ','恒瑞醫(yī)藥':'600276.SH',???????????'亨通光電':'600487.SH','中國平安':'601318.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#文件存儲路徑file='D:/MasterStudy/python/學(xué)習(xí)/test/實盤/'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ù)文件放入一個字典中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)就是對股價和成交量進行權(quán)息修復(fù),按照股票的實際漲跌繪制股價走勢圖,并把成交量調(diào)整為相同的股本口徑。股票除權(quán)、除息之后,股價隨之產(chǎn)生了變化,但實際成本并沒有變化。
前復(fù)權(quán)即就是保持現(xiàn)有價位不變,將以前的價格縮減,將除權(quán)前的K線向下平移,使圖形吻合,保持股價走勢的連續(xù)性。前復(fù)權(quán)即就是保持現(xiàn)有價位不變,將以前的價格縮減,將除權(quán)前的K線向下平移,使圖形吻合,保持股價走勢的連續(xù)性。
后復(fù)權(quán)就是在K線圖上以除權(quán)前的價格為基準(zhǔn)來測算除權(quán)后股票的市場成本價。就是把除權(quán)后的價格按以前的價格換算過來。簡單的說,就是保持先前的價格不變,而將以后的價格增加。
簡單來說,就是隨著公司的發(fā)展,股價和市值不斷增高,而股價過高會把很多散(jiu)戶(cai)擋在門外,這時候進行復(fù)權(quán),就是把整個池子里的總的錢保持不變,把每股單價降低,總股數(shù)增加,進而降低散(jiu)戶(cai)們的入場門檻,已經(jīng)持股的股東則會得到配股。前復(fù)權(quán)就是保持現(xiàn)有價位不變,將以前的價格縮減;后復(fù)權(quán)就是保持以前的價位不變,將現(xiàn)在的價格提高。
plot_pos = [321,322,323,324,325] # 每個子圖的位置new_colors = ['#1f77b4','#ff7f0e', '#2ca02c', '#d62728','#9467bd']# 每個子圖的顏色fig = plt.figure(figsize=(16,18))fig.suptitle('自選股指走勢',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日開始,到2020年8月18日的股票行情。可以看到,中國平安、恒瑞醫(yī)藥、牧原股份的漲勢較好,且較平穩(wěn)。亨通光電從長時間跨度來看雖然漲幅還可以,但中間回撤幅度較大,非常不穩(wěn)定,四環(huán)生物則漲幅和穩(wěn)定性都不好。
#累計收益plot_pos = [321,322,323,324,325] # 每個子圖的位置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ī)藥、亨通光電、中國平安、四環(huán)生物。
總結(jié)
以上是生活随笔為你收集整理的jq获取input选取的文件名_tushare获取交易数据并可视化分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苦荞茶多少钱一斤啊?
- 下一篇: 极米光电有限公司是国企吗