1. 程式人生 > >keras量化分析之路(1)--獲取歷史交易資料

keras量化分析之路(1)--獲取歷史交易資料

tushare提供方法,方便獲取某隻股票的歷史交易資料

方法名稱:get_hist_data

1。獲取某隻股票全部交易資料

import tushare as ts

ts.get_hist_data('600848') #一次性獲取全部日k線資料

輸出結果:

是一個DataFrame結構的資料,index就是交易日期,也就是每個交易日
共有15列;說明如下:

date:日期 —index列
open:開盤價
high:最高價
close:收盤價
low:最低價
volume:成交量
price_change:價格變動
p_change:漲跌幅
ma5:5日均價
ma10:10日均價
ma20:20日均價
v_ma5:5日均量
v_ma10:10日均量
v_ma20:20日均量
turnover:換手率[注:指數無此項]

可以自主選擇交易範圍,即交易日期可以自由設定
例如這樣:

df=ts.get_hist_data('601857',start='2016-06-15',end='2017-11-06')

接下來如果不想要那麼多列,可以自由選擇列表,即是對DataFrame資料結構的一個操作,
例如這樣:

dd=df[['open','high','low','close']]

得到子項
open high low close
date
2018-04-20 42.93 43.65 41.71 41.89
2018-04-19 41.88 43.18 41.37 42.96
2018-04-18 42.82 43.24 41.00 41.89
2018-04-17 43.74 43.95 42.29 42.79
2018-04-16 42.80 44.70 42.59 43.72
2018-04-13 43.61 44.25 42.28 42.55
2018-04-12 43.72 44.65 43.38 43.61
2018-04-11 43.04 44.45 42.75 43.72
2018-04-10 41.98 43.24 41.26 43.10
2018-04-09 41.70 43.00 41.08 42.00
2018-04-04 42.52 43.47 41.69 42.48

接下來順道說下,對交易資料的排序動作:

上面得到的dd,獲取的資料順序,從日期上來看,是倒序的,就是越晚的交易資料,越在前面
你可以換,逆序排列下:

dd1=dd .sort_index()

接下來對資料的處理有:

如:將df資料結構轉換為一維資料結構:

dd2=dd1.values.flatten()

得到個格式,就是將上面排序之後的資料,從最後一個向最前一個,全部放在一維數組裡面:
[ 40.2 41.99 40.2 40.85 40.35 42.22 40.25 42.08 42.52 43.47
41.69 42.48 41.7 43. 41.08 42. 41.98 43.24 41.26 43.1
43.04 44.45 42.75 43.72 43.72 44.65 43.38 43.61 43.61 44.25
42.28 42.55 42.8 44.7 42.59 43.72 43.74 43.95 42.29 42.79
42.82 43.24 41. 41.89 41.88 43.18 41.37 42.96 42.93 43.65
41.71 41.89]

這步操作實際對交易流水的行為就是:從交易開始日期到交易結束日期的資料,根據選擇的特徵,例如:開盤價,最高價,最低價,收盤價;四個一節段,平接在一起,存放在一個一維數組裡面;

可以繼續將上面的陣列進行逆序,獲取的結果將是從收盤當日往前推若干個日期的交易資料:

g1=dd2[::-1]

結果就是這樣的:
[ 41.89 41.71 43.65 42.93 42.96 41.37 43.18 41.88 41.89 41. 43.24
42.82 42.79 42.29 43.95 43.74 43.72 42.59 44.7 42.8 42.55
42.28 44.25 43.61 43.61 43.38 44.65 43.72 43.72 42.75 44.45
43.04 43.1 41.26 43.24 41.98 42. 41.08 43. 41.7 42.48
41.69 43.47 42.52 42.08 40.25 42.22 40.35 40.85 40.2 41.99
40.2 ]