量化分析:把Tushare数据源,规整成PyalgoTrade所需格式
分析A股历史数据,首先须要肯定数据来源。若是只想作日k线、周k线的技术分析,能够用PyalgoTrade直接从yahoo、google等下载数据,用不着Tushare。可是,若是想作分钟k线的技术分析,或者想了解基本面和消息面的数据,就用得着Tushare了。python
PyalgoTrade使用的基本数据格式有两种,一是Yahoo格式,二是NinjaTrader格式。google
Yahoo格式的数据分段为:spa
- 日线数据:Date,Open,High,Low,Close,Volume,Adj Close
- 分钟数据:Date Time,Open,High,Low,Close,Volume,Adj Close
Tushare提供的数据格式,日k线、分钟线均为:.net
- date:日期
- 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:换手率[注:指数无此项]
把Tushar数据转换成Yahoo格式,本来很简单。但我对Pandas不熟,只好找来相关pdf书,加上Baidu,在Jupyter Notebook中,边学边练,实验屡次,最终搞定。blog
- import tushare as ts
- import pandas as pd
-
- data = ts.get_hist_data('300336','2016-01-01','2016-05-24','15')
- data.to_csv('15-300336-2016.csv')
- df = pd.read_csv('15-300336-2016.csv')
- df2 = pd.DataFrame({'Date Time' : df['date'], 'Open' : df['open'],
- 'High' : df['high'],'Close' : df['close'],
- 'Low' : df['low'],'Volume' : df['volume'],
- 'Adj Close':df['close']})
- dt = df2.pop('Date Time')
- df2.insert(0,'Date Time',dt)
- o = df2.pop('Open')
- df2.insert(1,'Open',o)
- h = df2.pop('High')
- df2.insert(2,'High',h)
- l = df2.pop('Low')
- df2.insert(3,'Low',l)
- c = df2.pop('Close')
- df2.insert(4,'Close',c)
- v = df2.pop('Volume')
- df2.insert(5,'Volume',v)
- df2.to_csv("15-1.csv", index=False)