3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 JoinQuant(聚宽)平台上,您可以获取到 Tick 级别的数据,这与您提到的 L2 实时明细数据非常接近。但需要特别说明的是:聚宽提供的股票 Tick 数据是每 3 秒一次的快照数据(包含买五卖五盘口信息),而不是交易所最底层的“逐笔成交明细”(逐笔还原)。 尽管如此,这已经是目前量化回测和模拟交易中非常精细的数据维度了。
以下是在聚宽平台获取 Tick 数据的具体方法和 API 介绍:
get_ticks如果您需要在研究环境或回测中获取一段时间内的历史 Tick 数据,可以使用 get_ticks 函数。
函数说明:
get_ticks(security, end_dt, start_dt=None, count=None, fields=['time', 'current', 'high', 'low', 'volume', 'money'], skip=True, df=False)
参数解析:
security: 股票代码(如 '000001.XSHE')或代码列表。end_dt: 结束日期/时间。start_dt / count: 开始时间或获取的条数(二选一)。fields: 需要获取的字段。默认包含时间、现价、最高、最低、累计成交量、累计成交额。如果您需要盘口数据,可以手动添加 a1_v~a5_v (卖一到卖五量), b1_p~b5_p (买一到买五价) 等字段。df: 设为 True 时返回 Pandas DataFrame 格式,方便数据分析。代码示例:
from jqdata import *
# 获取平安银行某日早盘的 Tick 数据,包含买一卖一盘口,返回 DataFrame
df_ticks = get_ticks('000001.XSHE',
start_dt='2023-10-10 09:30:00',
end_dt='2023-10-10 09:35:00',
fields=['time', 'current', 'volume', 'money', 'b1_p', 'b1_v', 'a1_p', 'a1_v'],
df=True)
print(df_ticks)
get_current_tick如果您是在编写 Tick 频率的交易策略,需要在盘中实时获取最新的 Tick 快照,可以使用 get_current_tick。
注意:此 API 仅限在回测/模拟交易环境中使用,不支持在研究模块调用。
代码示例:
def initialize(context):
# 必须开启真实价格模式
set_option('use_real_price', True)
# 订阅 Tick 数据
subscribe('000001.XSHE', 'tick')
# 当有新的 Tick 事件产生时触发
def handle_tick(context, tick):
# 获取最新的 tick 数据对象
current_tick = get_current_tick('000001.XSHE')
if current_tick:
print(f"时间: {current_tick.datetime}, 最新价: {current_tick.current}, 买一价: {current_tick.b1_p}")