🚀 AI 一键生成 joinquant 策略代码

JoinQuant 平台获取集合竞价实时价格与最终结果的完整指南

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

问题描述

怎么获取集合竞价当前价格,get_ticks不行

_ = get_ticks('000001.XSHE', start_dt='2023-07-03 09:20:00', end_dt='2023-07-03 09:30:00', fields=['time','volume', 'money', 'b1_v', 'a1_v', 'b2_v', 'a2_v' ],df=True, skip=False)
_['time'] = _['time'].astype(str)
display(_)
直到9:25,current 才有值,可是,同花顺、东财什么的,集合竞价阶段也是有当前的价格的。
如果用错函数了,怎么获取呢?

解决方案

在 A 股市场中,09:15 - 09:25 为集合竞价阶段。在这个阶段,交易所并没有产生实际的成交,因此 get_ticks 返回的数据中 current(最新成交价)字段通常是没有值的。您在同花顺、东方财富等炒股软件上看到的“当前价格”,实际上是交易所实时发送的虚拟开盘参考价(Virtual Open Reference Price)

在 JoinQuant 平台上,要获取集合竞价的数据,有两种解决方案,取决于您的具体需求:

方案一:获取 09:25 集合竞价结束时的最终结果(推荐)

如果您只需要获取集合竞价结束时(09:25)的最终开盘价、成交量以及当时的盘口数据,JoinQuant 提供了一个专门的 API:get_call_auction

代码示例:

from jqdata import *

# 获取平安银行在指定日期的集合竞价结果
df_call_auction = get_call_auction('000001.XSHE', start_date='2023-07-03', end_date='2023-07-03')
display(df_call_auction)

说明:

  • get_call_auction 会返回 09:25:03 左右的那个决定开盘价的 Tick 数据。
  • 包含的字段有:time, current (即集合竞价产生的开盘价), volume, money, 以及买五卖五的量价数据。

方案二:获取 09:15 - 09:25 期间的动态虚拟撮合价格

如果您确实需要观察 09:15 到 09:25 之间每一秒的虚拟撮合价格变化过程,您仍然需要使用 get_ticks 函数,并且设置 skip=False。但是,不要看 current 字段,而是看买一价(b1_p)或卖一价(a1_p

在集合竞价期间,交易所发送的 Tick 数据中,买一价和卖一价通常是相等的,这个价格就是当时的虚拟撮合价格

代码示例:

from jqdata import *

# 获取集合竞价期间的 tick 数据,注意 fields 中加入了 b1_p 和 a1_p
_ = get_ticks('000001.XSHE', 
              start_dt='2023-07-03 09:15:00', 
              end_dt='2023-07-03 09:25:00', 
              fields=['time', 'current', 'volume', 'money', 'b1_p', 'a1_p', 'b1_v', 'a1_v'],
              df=True, 
              skip=False)

_['time'] = _['time'].astype(str)

# 虚拟撮合价格通常体现在买一价或卖一价上
# 我们可以新建一列 'virtual_price' 来表示同花顺上看到的集合竞价价格
_['virtual_price'] = _['b1_p'] 

display(_)

总结:

  • 软件上显示的集合竞价价格 = 虚拟撮合价 = Tick 数据中的 b1_p (或 a1_p)。
  • 最终的集合竞价成交价 = 09:25 的开盘价 = get_call_auction 返回的 current