处理Tushare数据源,统一PyalgoTrade格式

分析A股历史数据,首先需要确定数据来源。如果只想做日k线、周k线的技术分析,可以用PyalgoTrade直接从yahoo、google等下载数据,用不着Tushare。但是,如果想做分钟k线的技术分析,或者想了解基本面和消息面的数据,就用得着Tushare了。

PyalgoTrade使用的基本数据格式有两种,一是Yahoo格式,二是NinjaTrader格式。

Yahoo格式的数据分段为:

日线数据:Date,Open,High,Low,Close,Volume,Adj Close
分钟数据:Date Time,Open,High,Low,Close,Volume,Adj Close

Tushare提供的数据格式,日k线、分钟线均为:

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中,边学边练,实验多次,最终搞定。

[python] view plain copy
在CODE上查看代码片派生到我的代码片

import tushare as ts  
import pandas as pd  

# 得到15分钟数据(股票300336,始于2016-01-01,止于2016-05-24,15分钟数据)  
data = ts.get_hist_data('300336','2016-01-01','2016-05-24','15')  
# 数据存盘  
data.to_csv('15-300336-2016.csv')  
# 读出数据,DataFrame格式  
df = pd.read_csv('15-300336-2016.csv')  
# 从df中选取数据段,改变段名;新段'Adj Close'使用原有段'close'的数据  
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']})  
# 按照Yahoo格式的要求,调整df2各段的顺序  
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)  
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值