🚀 AI 一键生成 joinquant 策略代码
立即体验
👉 AI 生成代码 👈

JoinQuant聚宽平台attribute_history与get_price获取日线数据何时更新?

joinquant | 发布时间: 2026/6/24
以下内容由 EasyQuant 生成。

问题描述

attribute_history等获取的日线(1d)数据

attribute_history,get_price 获取的日线价格,当天的数据何时更新呢? 是当晚12点更新么?模拟交易中会使用这些函数

解决方案

在 JoinQuant(聚宽)量化平台上,关于 attribute_historyget_price 获取日线(1d)数据的更新时间以及使用机制,有以下几个关键点需要注意:

1. 日线数据的系统更新时间

根据聚宽官方文档,当日的回测/模拟交易日线数据会在收盘后通过多数据源进行校验,并在 T+1(第二天)的 00:01 更新。也就是说,当天的完整日线数据要在当晚 12 点过后的 00:01 才会正式入库并可作为历史日线数据被调用。

2. attribute_historyget_price 的调用机制

在模拟交易或回测中,为了严格避免“未来函数”(即提前使用未发生的数据),这两个函数在获取日线('1d')数据时有特殊的设定:

  • 不包含当天数据:当您使用 attribute_historyget_price(且未指定包含当天的特定参数)获取天级别('1d')数据时,返回的数据是不包括当天的,即使您是在 15:00 收盘后(如 after_trading_end 函数中)调用也是如此。
  • 获取的是历史切片:它们获取的是截至前一个交易日的历史数据。

3. 模拟交易中如何获取当天的数据?

如果您在模拟交易的盘中(或收盘后)需要获取当天的最新价格或行情,不能依赖获取日线历史数据的 API,而应该使用以下替代方案:

方案 A:使用 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

方案 B:获取分钟级('1m')数据

如果您需要当天盘中的 K 线序列(如当天的最高价、最低价轨迹),可以通过 get_priceattribute_history 获取分钟级别的数据,分钟数据是不包含当前这一分钟的,但包含了当天已经走完的分钟数据。

# 获取当天开盘到当前时间的分钟数据
df = get_price('000001.XSHE', end_date=context.current_dt, frequency='1m', count=240)

方案 C:使用 get_bars 函数

get_bars 函数支持 include_now 参数。如果您确实需要包含当前时刻所在 bar 的数据,可以使用 get_bars

# 获取包含当天的日线数据(盘中调用时,当天的收盘价为最新价)
bars = get_bars('000001.XSHE', count=5, unit='1d', fields=['open', 'close'], include_now=True)

总结

  • 正式日线数据更新:第二天 00:01。
  • attribute_history / get_price 取 '1d':默认不包含当天数据。
  • 模拟交易实战建议:盘中获取最新价格用 get_current_data(),获取当天已发生的 K 线用分钟级数据或 get_bars(include_now=True)