问题描述
如果能添加IOPV字段就好了
fields=('time', 'current', 'high', 'low', 'volume', 'money', 'a1_p', 'b1_p', 'a1_v', 'b1_v', 'IOPV')
df=get_ticks('510050.XSHG','2019-10-16 15:30:00','2019-10-16 09:00:00', fields=fields)
df
ValueError: no field of name IOPV
解决方案
聚宽 ETF Tick 行情是否支持 IOPV 字段?
很遗憾,根据 JoinQuant 聚宽当前的 API 文档,get_ticks 接口目前不支持获取 ETF 的 IOPV(基金份额参考净值) 字段。
这就是为什么您在 fields 中添加 'IOPV' 时,会遇到 ValueError: no field of name IOPV 的报错。
get_ticks 支持的字段
对于股票和场内基金(如 ETF),get_ticks 接口支持的 fields 仅包含以下量价和盘口数据:
time: 时间open: 当日开盘价current: 当前价high: 截至到当前时刻的日内最高价low: 截至到当前时刻的日内最低价volume: 累计成交量money: 累计成交额a1_v~a5_v: 五档卖量a1_p~a5_p: 五档卖价b1_v~b5_v: 五档买量b1_p~b5_p: 五档买价
正确的 ETF Tick 获取代码示例:
from jqdata import *
# 移除不支持的 'IOPV' 字段
fields = ['time', 'current', 'high', 'low', 'volume', 'money', 'a1_p', 'b1_p', 'a1_v', 'b1_v']
df = get_ticks('510050.XSHG', end_dt='2019-10-16 15:30:00', start_dt='2019-10-16 09:00:00', fields=fields, df=True)
print(df.head())
替代方案:获取日频基金净值
如果您需要获取基金的净值数据用于策略分析,虽然无法获取 Tick 级别的 IOPV,但您可以使用 get_extras 函数获取日频的基金净值数据:
unit_net_value: 基金单位净值acc_net_value: 基金累计净值
获取日频净值代码示例:
from jqdata import *
# 获取 510050.XSHG 的单位净值
df_net_value = get_extras('unit_net_value', ['510050.XSHG'], start_date='2019-10-01', end_date='2019-10-16', df=True)
print(df_net_value)
关于添加 IOPV 字段的建议,这是一个非常实用的量化需求(常用于 ETF 折溢价套利策略),建议您可以通过聚宽社区的建议反馈板块向官方提出该需求,以便官方在未来的 API 更新中考虑加入。