JoinQuant 心得——股票行情数据
聚宽使用两个月,分享些心得,方便后来人。
若朋友们觉得有帮助,回复一下,权当鼓励。
当然,若觉得有疑问或建议,也请告知。
API文档已有一定的说明,故只写重点,但附上API连接,请自行查阅。
JoinQuant 心得——股票行情数据
JoinQuant 心得——时间持仓资金数据
JoinQuant 心得——基本面数据
JoinQuant 心得——订单
JoinQuant 心得——回测功能性完善
JoinQuant 心得——数据存取
用CTRL F 在API文档中检索
想要找数据,但是面对API文档中众多的API,不知道该用哪个,这对于新手可能是个的问题。
首先,有个功能有可能有人不知道,但是查看API很有用,那就是CTRL F。
按CTRL F,输入关键字,就可以在当前网页检索。如在API文档页面,按CTRL F,输入成交量,页面中有“成交量”的地方都会被找出来。
这个功能至少我在360游览器,谷歌游览器都是能用的。
SecurityUnitData基本属性的获取
数据简介:
API原文:SecurityUnitData
open 时间段开始时价格
close 时间段结束时价格
low 最低价
high 最高价
volume 成交的股票数量
money 成交的金额
factor 前复权因子
high_limit 涨停价
low_limit 跌停价
price 这段时间的平均价, 等于money/volume
pre_close 前一个单位时间结束时的价格, 按天则是前一天的收盘价, 按分钟这是前一分钟的结束价格
paused bool值, 这只股票是否停牌, 停牌时open/close/low/high/pre_close依然有值,都等于停牌前的收盘价, volume=money=0
获取方式概述
获取方法有如下四种:
直接在回测中从data读取
只能在策略中使用,不能在研究中使用。
该方法代码相对简单,调用方便。
可以取得额外的属性,如security , returns , isnan,m*g, vwap, stddev。具体用法见API原文:SecurityUnitData。
只能调用回测当前时间的数据。如,按日回测,回测到20120112这一天时,只能调用这一天前一天的数据(高开低收等)。
只能在handle_data中使用。在before_trading_start,after_trading_end,run_monthly,run_weekly,run_daily中无法使用。
attribute_history 获取
API原文:attribute_history
只能在策略中使用,不能在研究中使用。
只能取得相对当前时间前n个单位时间的数据。如,按日回测,回测到20120112这一天时,只能调用这一天前若干天的数据,不能获得未来数据。
只能获取单独一个股票的数据,但可以同时获得多个字段的数据。如获得 平安银行这一只股票,前3天的交易额,交易量,最高价,最低价等。(与history相区别)
可以选择是否跳过跳过停牌的日期, 选不跳过,则停牌时使用停牌前的数据填充。
history 获取
API原文:history
只能在策略中使用,不能在研究中使用。
只能取得相对当前时间前n个单位时间的数据。如,按日回测,回测到20120112这一天时,只能调用这一天前若干天的数据(高开低收等),不能获得未来数据。
可以同时获得多个股票的数据,但只能获得相同的一个数据字段。如获得 平安银行,建设银行,农业银行这3只股票,前3天的交易额。(与attribute_history相区别)
没有跳过跳过停牌的日期, 停牌时使用停牌前的数据填充
get_current_data 获取
get_price 获取
API原文:get_price
使用相对困难
在策略与研究中都能使用。
可以获得任意指定时间段的数据。
可以同时获得多个股票的数据,相同的多个字段数据。如获得 平安银行,建设银行,农业银行这3只股票,20120112-20121212的交易额,交易量,最高价,最低价。
没有跳过跳过停牌的日期, 停牌时使用停牌前的数据填充。
get_price 代码实现举例
由于get_price能够获得panel,但是使用起来需要特殊的代码,所以特别举例说明。
其他的函数用法API中有用法举例,自行查看吧。
代码:
# 该段程序只能在策略中使用,不能在研究中用# 回测时间为20151129-20151130# 资金100000def initialize(context):# 定义一个全局变量, 保存要操作的股票g.security = ['000001.XSHE','000002.XSHE']# 设置我们要操作的股票池set_universe(g.security)# 每个单位时间(如果按天回测,则每天调用一次,如果按分钟,则每分钟调用一次)调用一次def handle_data(context, data):security = g.securityprint security
df=get_price(security=security, start_date='2015-11-26', end_date='2015-11-27', frequency='1d', fields=['open','high','low','close'])print df #得到的数据是个panelprint df['close']print df.major_xs('2015-11-27')#也可以写成 print df.ix[:,'2015-11-27',:]print df.minor_xs('000001.XSHE')#也可以写成 print df.ix[:,:,'000001.XSHE']
输出:
2015-11-30 09:30:00 - INFO - [u'000001.XSHE', u'000002.XSHE']2015-11-30 09:30:00 - INFO - Dimensions: 4 (items) x 2 (major_axis) x 2 (minor_axis)Items axis: close to openMajor_axis axis: 2015-11-26 00:00:00 to 2015-11-27 00:00:00Minor_axis axis: 000001.XSHE to 000002.XSHE2015-11-30 09:30:00 - INFO - 000001.XSHE 000002.XSHE2015-11-26 12.23 14.502015-11-27 11.73 14.262015-11-30 09:30:00 - INFO - close high low open000001.XSHE 11.73 12.20 11.53 12.18000002.XSHE 14.26 14.65 14.24 14.432015-11-30 09:30:00 - INFO - close high low open2015-11-26 12.23 12.38 12.20 12.362015-11-27 11.73 12.20 11.53 12.18