3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 JoinQuant(聚宽)量化平台上,关于 attribute_history 和 get_price 获取日线(1d)数据的更新时间以及使用机制,有以下几个关键点需要注意:
根据聚宽官方文档,当日的回测/模拟交易日线数据会在收盘后通过多数据源进行校验,并在 T+1(第二天)的 00:01 更新。也就是说,当天的完整日线数据要在当晚 12 点过后的 00:01 才会正式入库并可作为历史日线数据被调用。
attribute_history 和 get_price 的调用机制在模拟交易或回测中,为了严格避免“未来函数”(即提前使用未发生的数据),这两个函数在获取日线('1d')数据时有特殊的设定:
attribute_history 或 get_price(且未指定包含当天的特定参数)获取天级别('1d')数据时,返回的数据是不包括当天的,即使您是在 15:00 收盘后(如 after_trading_end 函数中)调用也是如此。如果您在模拟交易的盘中(或收盘后)需要获取当天的最新价格或行情,不能依赖获取日线历史数据的 API,而应该使用以下替代方案:
get_current_data() 获取最新快照如果您只需要当天的最新价、开盘价、涨跌停价等,推荐使用 get_current_data()。这个函数专门用于获取当前单位时间的实时数据。
def handle_data(context, data):
current_data = get_current_data()
# 获取最新价(盘中为最新成交价,09:30前为昨日收盘价)
last_price = current_data['000001.XSHE'].last_price
# 获取当天开盘价
day_open = current_data['000001.XSHE'].day_open
如果您需要当天盘中的 K 线序列(如当天的最高价、最低价轨迹),可以通过 get_price 或 attribute_history 获取分钟级别的数据,分钟数据是不包含当前这一分钟的,但包含了当天已经走完的分钟数据。
# 获取当天开盘到当前时间的分钟数据
df = get_price('000001.XSHE', end_date=context.current_dt, frequency='1m', count=240)
get_bars 函数get_bars 函数支持 include_now 参数。如果您确实需要包含当前时刻所在 bar 的数据,可以使用 get_bars。
# 获取包含当天的日线数据(盘中调用时,当天的收盘价为最新价)
bars = get_bars('000001.XSHE', count=5, unit='1d', fields=['open', 'close'], include_now=True)
attribute_history / get_price 取 '1d':默认不包含当天数据。get_current_data(),获取当天已发生的 K 线用分钟级数据或 get_bars(include_now=True)。