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

JoinQuant 聚宽 get_current_data() 函数在研究环境无法使用的原因及替代方案

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

问题描述

get_current_data()函数

get_current_data()函数在研究环境中使用不了嘛?

解决方案

直接回答

是的,get_current_data() 函数无法在 JoinQuant(聚宽)的投资研究环境中使用。根据聚宽官方 API 文档,get_current_data() 属于回测环境/模拟专用 API

为什么研究环境不能使用?

get_current_data() 的设计初衷是为了在回测或模拟交易的运行过程中(如 handle_data 或定时运行函数中),获取**当前逻辑时间(当天/当前分钟)**的动态数据,例如:

  • 最新价 (last_price)
  • 涨停价 (high_limit)
  • 跌停价 (low_limit)
  • 是否停牌 (paused)
  • 当天开盘价 (day_open)

它强依赖于回测引擎的上下文时间(context.current_dt),并且仅仅限在要获取数据的标的在交易时段时调用。由于研究环境没有回测引擎的实时时间推进机制,因此无法调用此函数。

研究环境中的替代方案

如果您在研究环境中需要获取类似的数据(如最新价、涨跌停价、停牌状态等),可以使用以下替代 API:

1. 获取最新价格或历史价格

可以使用 get_price()get_bars() 函数。这两个函数在研究环境中完全可用。

# 获取平安银行最近一个交易日的收盘价
df = get_price('000001.XSHE', count=1, end_date='2023-10-10', frequency='daily', fields=['close'])
print(df['close'][-1])

2. 获取涨跌停价及停牌状态

get_price() 函数的 fields 参数支持传入 'high_limit'(涨停价)、'low_limit'(跌停价)和 'paused'(是否停牌,1表示停牌,0表示正常交易)。

# 获取平安银行在指定日期的涨跌停价和停牌状态
df = get_price('000001.XSHE', count=1, end_date='2023-10-10', frequency='daily', 
               fields=['high_limit', 'low_limit', 'paused'])

print("涨停价:", df['high_limit'][-1])
print("跌停价:", df['low_limit'][-1])
print("是否停牌:", df['paused'][-1] == 1)

3. 获取股票名称、是否ST等基本信息

如果您需要获取股票现在的名称或判断是否是 ST 股票,可以使用 get_security_info()get_extras()

# 获取股票基本信息
info = get_security_info('000001.XSHE')
print("股票名称:", info.display_name)

# 判断是否是 ST 股票
st_df = get_extras('is_st', ['000001.XSHE'], start_date='2023-10-10', end_date='2023-10-10')
print("是否ST:", st_df.iloc[-1]['000001.XSHE'])

总结:在编写策略代码时,get_current_data() 是获取盘中即时状态的利器;但在进行数据分析和策略研究时,请务必切换为 get_priceget_bars 等历史数据获取函数。