🚀 AI 一键生成 joinquant 策略代码

JoinQuant API 应用:利用 get_call_auction 集合竞价数据制定开盘策略

joinquant | 发布时间: 2025/11/28
以下内容由 EasyQuant 生成。

问题描述

如何获取股票在早上9点25分的集合竞价数据?

解决方案

在 JoinQuant(聚宽)平台中,获取股票早上 9:25 的集合竞价数据,主要使用 get_call_auction 函数。

该函数专门用于获取指定时间区间内交易日 09:25 的集合竞价快照数据。

核心函数说明

get_call_auction(security, start_date=None, end_date=None, fields=None)

  • security: 标的代码(字符串)或标的代码列表(如 ['000001.XSHE', '600000.XSHG'])。支持股票、指数、50ETF期权。
  • start_date: 开始日期(字符串,如 '2023-01-01')。
  • end_date: 结束日期(字符串,如 '2023-01-31')。
  • fields: (可选) 需要获取的字段列表。如果不填,默认获取全部字段。

代码示例

以下代码展示了如何获取“平安银行”在指定日期范围内的集合竞价数据:

# -*- coding: utf-8 -*-
from jqdata import *

# 获取平安银行(000001.XSHE) 在 2023-06-01 到 2023-06-05 期间的集合竞价数据
# 默认获取所有字段
df = get_call_auction('000001.XSHE', start_date='2023-06-01', end_date='2023-06-05')

# 打印结果
print(df)

# 如果只需要特定字段(例如:时间、当前价、成交量、买一量、卖一量)
df_specific = get_call_auction(
    ['000001.XSHE', '600519.XSHG'], 
    start_date='2023-06-01', 
    end_date='2023-06-05',
    fields=['time', 'current', 'volume', 'b1_v', 'a1_v']
)

print(df_specific)

返回数据字段说明

返回的数据格式为 pandas.DataFrame,包含以下字段:

字段名 说明 类型
time 时间(通常显示为当日 09:25:xx) 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

注意事项

  1. 数据更新时间:在回测和模拟交易中,当日的集合竞价数据通常最晚于 09:28 返回。因此,建议在 09:30 开盘后的逻辑中调用,或者在 run_daily 设置 time='9:30' 时调用。
  2. 历史数据范围
    • 股票:支持 2010 年至今。
    • 场内基金:支持 2019 年至今。
    • 指数:支持 2017 年至今。
  3. 未来函数:在回测模式下,如果在 before_trading_start(通常是 9:00 运行)中调用当天的 get_call_auction,会因为时间未到 9:25 而获取不到数据(或视作未来函数)。请确保调用时间点在 9:25 之后。

Q&A

Q: get_call_auction 可以获取到 9:15 到 9:24 之间的逐笔挂单详情吗?
A: 不可以。get_call_auction 仅返回 9:25 这一时刻集合竞价撮合完成后的快照数据(开盘价、成交量及当时的五档盘口)。如果需要更细颗粒度的 Tick 数据,需要使用 Tick 级回测并订阅 Tick 事件,但历史 Tick 数据量巨大且通常不包含未撮合的挂单明细。

Q: 如果我在 before_trading_start 中调用该函数会怎样?
A: before_trading_start 默认运行时间是 09:00。此时 09:25 的集合竞价尚未发生。在回测中,如果尝试获取当天的竞价数据,可能会报错或返回空值(取决于是否开启了“避免未来数据”选项)。正确的做法是在 handle_data 或定时在 09:30 运行的函数中获取。

Q: 集合竞价的 current 价格和当天的 open 开盘价一样吗?
A: 通常情况下是一样的。09:25 产生的撮合价格即为当天的开盘价。但在极少数异常波动或无成交的情况下,可能会有细微差别,但在数据处理上通常视作一致。