关于opt.XXXX表的提取方法,建议先看看query的教程
注意
- 期权数据中只有50etf期权有分钟数据,tick数据,盘前静态文件,合约调整记录,排名统计,交收信息,商品期权没有这几项数据。
- 期权数据中只有50etf期权可以使用get_price/get_bars,商品期权行情数据获取需要通过OPT_DAILY_PRICE表
- 期权风险指标我们目前提供的数据和交易所一致,如果交易所未披露该项指标,则指标值为空。
以下提供几种常见的数据提取的方法的示例:
获取期权列表¶
可以通过get_all_securities获取,也可以通过OPT_CONTRACT_INFO表或OPT_DAILY_PREOPEN表获取
# 通过get_all_securities获,dataframe的过滤方法可以查看 https://www.joinquant.com/view/community/detail/3e93cf2c6bcc0787c2cdd736a0d4117f?type=1
df1 = get_all_securities('options',date=None)
df1.tail()
# 通过OPT_CONTRACT_INFO 表获取50etf的所有合约 query的过滤方法 https://www.joinquant.com/view/community/detail/433d0e9ed9fed11fc9f7772eab8d9376?type=1
from jqdata import *
df2 = opt.run_query(query(opt.OPT_CONTRACT_INFO).filter(opt.OPT_CONTRACT_INFO.underlying_symbol=='510050.XSHG'))
df2.tail()
50etf期权¶
50etf期权的行情数据目前提供有天,分钟,tick级别。
其中天数据可以通过get_price,get_bars函数获取,也可以通过opt.OPT_DAILY_PRICE表获得(OPT_DAILY_PRICE表是盘后更新,get_price等盘中实时更新,对50etf期权,建议直接使用get_price/get_bars获取数据);
分钟数据可以通过 get_price/get_bars获取;
tick数据通过get_ticks获取。
获取50etf期权天/分钟数据¶
以下仅做示例,关于get_price及get_bars的用法,可以直接查看API。
# 使用get_price 获取多个期权的日行情
get_price(["10001908.XSHG","10001907.XSHG"],end_date='2019-07-03',count=5)
# 使用get_bars获取多个期权的15m行情
get_bars(["10001908.XSHG","10001907.XSHG"],end_dt='2019-07-03',count=5,unit='15m')
获取50etf期权tick数据¶
get_ticks的API : https://www.joinquant.com/help/api/help?name=api#get_ticks
# 获取 10001908 在 2019-07-02 的tick数据
get_ticks("10001908.XSHG", end_dt='2019-07-02 15:30:00', start_dt='2019-07-02 09:00:00')
商品期权¶
关于query的用法,请查看此篇教程: Query的简单教程
商品期权的行情目前只有天级别的,仅可以通过 opt.OPT_CONTRACT_INFO 表查询。
商品期货没有OPT_DAILY_PREOPEN表,OPT_TRADE_RANK_STK表以及分钟和tick行情数据
获取所有SR1911合约的合约资料¶
from jqdata import *
info_df = opt.run_query(query(opt.OPT_CONTRACT_INFO).filter(opt.OPT_CONTRACT_INFO.underlying_symbol=="SR1911.XZCE"))
info_df.tail()
获取 SR911P5900.XZCE 在2019-07-02这天及之前10个交易日的行情数据¶
from jqdata import *
q = query(opt.OPT_DAILY_PRICE).filter(
opt.OPT_DAILY_PRICE.code=='SR911P5900.XZCE',# 选择标的,多个合约用in_操作,详细查看query教程
opt.OPT_DAILY_PRICE.date<='2019-07-02' # 过滤掉date大于2019-07-02 的数据
).order_by(opt.OPT_DAILY_PRICE.date.desc() # 根据日期排序
).limit(10)
opt.run_query(q)
获取2019-07-02 这天所有SR合约的日行情数据¶
from jqdata import *
q = query(opt.OPT_DAILY_PRICE).filter(
opt.OPT_DAILY_PRICE.code.like('SR%'), # 选择code中以SR开头的标的,详细查看query教程
opt.OPT_DAILY_PRICE.date=='2019-07-02' # 指定date等于2019-07-02
).order_by(opt.OPT_DAILY_PRICE.date.desc() # 根据日期排序
).limit(10)
opt.run_query(q)
其他涉及到query的数据获取和上述逻辑相同,按照表中对应的字段进行过滤,排序及限制,提取就可以了¶