🚀 AI 一键生成 joinquant 策略代码

JoinQuant 聚宽 get_current_data 在分钟回测中是否存在未来函数?

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

问题描述

get_current_data分钟回测的未来函数问题

get_current_data函数如果按分钟回测,调取的.last_price是当天的收盘价吗,是当前分钟的价格还是上一分钟的价格?

解决方案

在 JoinQuant (聚宽) 平台的分钟回测中,使用 get_current_data() 获取的 .last_price 不是当天的收盘价,也不存在未来函数问题

具体取值逻辑如下:

1. 取的是“上一分钟的收盘价”

在分钟回测模式下,策略的 handle_data 函数是在每分钟的第一秒触发的(例如 09:31:00)。此时,当前这一分钟(09:31:00 - 09:31:59)的行情还没有走完,因此你无法获取当前分钟的收盘价。

get_current_data()[security].last_price 获取的是当前时刻你能看到的最新切片价格,也就是上一分钟的收盘价

举个例子:

  • 当策略在 09:35:00 运行 handle_data 时,.last_price 获取的是 09:34:00 ~ 09:34:59 这一分钟 K 线的收盘价。

2. 特殊时间点的取值

  • 09:30 之前:如果在开盘前(如 before_trading_start 中)调用,.last_price 返回的是昨日收盘价
  • 09:30 集合竞价:在日级模拟盘或特定开盘时刻,获取到的可能是集合竞价产生的开盘价。

3. 为什么没有未来函数?

未来函数是指在历史回测中使用了当时无法获取到的未来数据(例如在早上 10:00 获取了当天 15:00 的收盘价)。

get_current_data() 的设计初衷就是为了模拟真实交易环境中的“当前快照”。在分钟回测中,它严格遵守时间轴,只返回触发时刻已经产生的最新价格(即上一分钟的收盘价),因此绝对不会取到当天的最终收盘价,也不包含未来函数

总结

按分钟回测时,get_current_data()[security].last_price 获取的是上一分钟的收盘价(即当前时刻的最新价),请放心使用,不用担心未来函数问题。