问题描述
集合竞价期间的价格如何获取?
getprice获取不到
解决方案
在 JoinQuant 平台上,常规的行情获取函数 get_price 或 history 主要是获取连续竞价期间的 K 线数据,因此无法直接获取集合竞价期间的详细价格和盘口信息。
要获取集合竞价期间的数据,您需要使用专门的 API:get_call_auction。
get_call_auction 函数详解
该函数用于获取指定时间区间内交易日 09:25 的集合竞价数据。支持股票(2010年至今)、场内基金(2019年至今)、指数(2017年至今)和上交所ETF期权(2017年至今)的集合竞价数据。
注意:当日的集合竞价数据最晚于 9:28 分返回。
函数原型
from jqdata import *
get_call_auction(security, start_date=None, end_date=None, fields=None)
参数说明
security: 标的代码或者标的代码组成的列表,支持股票、指数、50ETF期权。start_date: 开始日期,一个时间字符串,比如"2019-01-01"。不能为 None。end_date: 结束日期,一个时间字符串,比如"2019-02-01"。不能为 None。fields: 选择要获取的行情字段(类似 tick 数据的每一个字段)。如果为 None,默认获取全部字段。可选字段包括:time: 时间 (datetime)current: 当前价 (float)volume: 累计成交量(股) (float)money: 累计成交额 (float)b1_v~b5_v: 五档买量 (float)b1_p~b5_p: 五档买价 (float)a1_v~a5_v: 五档卖量 (float)a1_p~a5_p: 五档卖价 (float)
返回值
返回一个 pandas.DataFrame,索引为 pandas 默认的整数索引。
代码示例
示例 1:获取多只股票指定字段的集合竞价数据
from jqdata import *
# 获取平安银行和万科A在指定时间段的集合竞价当前价和买卖一档量
d = get_call_auction(['000001.XSHE', '000002.XSHE'],
start_date='2019-01-01',
end_date='2019-10-10',
fields=['time', 'current', 'a1_v', 'b1_v'])
print(d)
示例 2:获取单只股票全部字段的集合竞价数据
from jqdata import *
# fields不填,默认获取全部字段数据
d = get_call_auction('000001.XSHE', '2019-08-10', '2019-08-20')
print(d)
注意事项
- 数据量限制:为了防止返回数据量过大,每次调用最多返回 5000 行 数据。如果需要更长时间段的数据,请分批次获取。
- 模拟/回测环境:在日级模拟或回测中,如果您在
09:30之前(如09:00的before_trading_start)调用此函数获取当天的集合竞价数据,可能会获取不到,因为当天的数据最晚在09:28生成。建议在09:30的handle_data或定时函数中获取前一日或当天的集合竞价数据。