jq获取input选取的文件名_tushare获取交易数据并可视化分析
獲取數據是金融量化分析的第一步,找不到可靠、準確的數據,量化分析就無從談起。隨著信息技術的不斷發(fā)展,數據獲取渠道也越來越多,尤其是Python網絡爬蟲,近幾年愈來愈火。然而,很多人畢竟精力有限,沒時間專門去學習網絡爬蟲技術。當然,不會網絡爬蟲不要緊,我們還可以借助Python的開源數據包(其本質也是網絡爬蟲),如:tushare、baostock、pandas_datareader和yahoo等財經數據API,這樣可以節(jié)省不少精力。本文將以tushare為例,演示如何獲取股票數據,并進行簡單的可視化分析。
圖1 股票漲跌驅動因素
圖2 公司基本面信息源
圖3 知名股票論壇
Tushare是一個免費、開源的python財經數據接口包。主要實現對股票等金融數據從數據采集、清洗加工到數據存儲的過程,能夠為金融分析人員提供快速、整潔、和多樣的便于分析的數據,為他們在數據獲取方面極大地減輕工作量,使他們更加專注于策略和模型的研究與實現上。考慮到Python pandas包在金融量化分析中體現出的優(yōu)勢,Tushare返回的絕大部分的數據格式都是pandas DataFrame類型,非常便于用pandas/NumPy/Matplotlib進行數據分析和可視化。當然,如果您習慣了用Excel或者關系型數據庫做分析,您也可以通過Tushare的數據存儲功能,將數據全部保存到本地后進行分析。從0.2.5版本開始,Tushare同時兼容Python 2.x和Python 3.x,對部分代碼進行了重構,并優(yōu)化了一些算法,確保數據獲取的高效和穩(wěn)定。
使用前提
安裝Python
安裝pandas
lxml也是必須的,正常情況下安裝了Anaconda后無須單獨安裝,如果沒有可執(zhí)行:pip install lxml
建議安裝Anaconda(http://www.continuum.io/downloads),一次安裝包括了Python環(huá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#正常顯示畫圖時出現的中文和負號from pylab import mplmpl.rcParams['font.sans-serif']=['SimHei']mpl.rcParams['axes.unicode_minus']=False#設置tokentoken='你的token'ts.set_token(token)pro = ts.pro_api(token)個股行情數據:
pro.stock_basic()
參數:is_hs:是否滬深港通標的,N否、H滬股通、S深股通;list_status:上市狀態(tài),L上市、D退市、P暫停上市;exchange:交易所 SSE上交所,SZSE深交所,HKEX港交所。?
pro.daily(ts_code= 或 trade_date=)
日行情:daily;周行情:weekly;月行情:monthly
#獲取當前上市的股票代碼、簡稱、注冊地、行業(yè)、上市時間等數據basic=pro.stock_basic(list_status='L')#查看前五行數據basic.head(5)#獲取平安銀行日行情數據pa=pro.daily(ts_code='000001.SZ', start_date='20150101', end_date='20200818')pa.head()得到如下結果:
#定義獲取多只股票函數:def get_stocks_data(stocklist,start,end): all_data={} for name,code in stocklist.items(): #qfq,前復權;hfq,后復權 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/學習/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()#將數據保存到本地save_data(all_data)#讀取本地文件夾里所有文件import os#文件存儲路徑file='D:/MasterStudy/python/學習/test/實盤/'g=os.walk(file)filenames=[]for path,d,filelist in g: for filename in filelist: filenames.append(os.path.join(filename))print(filenames)#將讀取的數據文件放入一個字典中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)#查看第一只股票前五行數據df[code[0]].tail()以上涉及到了復權的概念,那么為什么要設置復權呢?
所謂復權就是對股價和成交量進行權息修復,按照股票的實際漲跌繪制股價走勢圖,并把成交量調整為相同的股本口徑。股票除權、除息之后,股價隨之產生了變化,但實際成本并沒有變化。
前復權即就是保持現有價位不變,將以前的價格縮減,將除權前的K線向下平移,使圖形吻合,保持股價走勢的連續(xù)性。前復權即就是保持現有價位不變,將以前的價格縮減,將除權前的K線向下平移,使圖形吻合,保持股價走勢的連續(xù)性。
后復權就是在K線圖上以除權前的價格為基準來測算除權后股票的市場成本價。就是把除權后的價格按以前的價格換算過來。簡單的說,就是保持先前的價格不變,而將以后的價格增加。
簡單來說,就是隨著公司的發(fā)展,股價和市值不斷增高,而股價過高會把很多散(jiu)戶(cai)擋在門外,這時候進行復權,就是把整個池子里的總的錢保持不變,把每股單價降低,總股數增加,進而降低散(jiu)戶(cai)們的入場門檻,已經持股的股東則會得到配股。前復權就是保持現有價位不變,將以前的價格縮減;后復權就是保持以前的價位不變,將現在的價格提高。
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]) # 將右上邊的兩條邊顏色設置為空,相當于抹掉這兩條邊 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]) # 將右上邊的兩條邊顏色設置為空,相當于抹掉這兩條邊 ax = plt.gca() ax.spines['right'].set_color('none') ax.spines['top'].set_color('none')plt.show()可以看出,從2015年1月1日至今,收益率從大到小的依次是牧原股份、恒瑞醫(yī)藥、亨通光電、中國平安、四環(huán)生物。
總結
以上是生活随笔為你收集整理的jq获取input选取的文件名_tushare获取交易数据并可视化分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苦荞茶多少钱一斤啊?
- 下一篇: 高级cmd攻击命令_一步一步学习DVWA