问题描述
图示,这是同花顺L2的实时明细数据;
请问,这个数据,在聚宽如何获取?
我愿意付费获取;
如果不能获取的话,可以向开发组反馈么,这个数据还是蛮重要的,也是L2的核心功能;
解决方案
在 JoinQuant(聚宽)平台上,您可以获取到 Tick 级别的数据,这与您提到的 L2 实时明细数据非常接近。但需要特别说明的是:聚宽提供的股票 Tick 数据是每 3 秒一次的快照数据(包含买五卖五盘口信息),而不是交易所最底层的“逐笔成交明细”(逐笔还原)。 尽管如此,这已经是目前量化回测和模拟交易中非常精细的数据维度了。
以下是在聚宽平台获取 Tick 数据的具体方法和 API 介绍:
1. 获取历史 Tick 数据: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)
2. 在策略中获取当前最新 Tick 数据: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}")
💡 关于 L2 逐笔数据的补充说明
- 数据频率:同花顺等软件看到的 L2 逐笔明细是交易所推送的每一笔撮合成交记录。而聚宽提供的股票 Tick 是 3秒快照(即每3秒切片一次当时的盘口和累计成交量)。
- 权限要求:在聚宽进行 Tick 级别的回测和模拟交易,通常需要特定的权限(可能需要付费或申请开通)。
- 数据量巨大:真正的逐笔数据数据量极其庞大,对回测引擎的性能要求极高。目前市面上绝大多数云端量化平台提供的“Tick数据”均为 3 秒快照。如果您确实需要最底层的逐笔还原数据进行高频 HFT 策略开发,通常需要采购专门的 L2 行情源并在本地高性能服务器上进行处理。