3、行情数据源接入实战(上):Level-1与Level-2行情区别、WebSocket实时行情接入(以聚宽为例)、行情数据字段解析

3.1 为什么做市商必须搞懂行情数据源?

做可转债做市,说白了就是跟行情赛跑。

你比别人快0.1秒看到价格变化,就可能多赚几个tick。我刚开始做量化交易时,一直用免费行情,结果回测跑得挺漂亮,实盘一上去就亏钱。后来才发现,问题出在行情数据源上——免费数据延迟高、字段少,根本不够用。

所以这一章,咱们重点聊聊行情数据源接入。我会以聚宽为例,带你走一遍WebSocket实时行情的接入流程。同时把Level-1和Level-2的区别讲清楚,再拆解一下行情数据里那些关键字段到底是什么意思。

核心观点:做市策略的命根子是行情数据。数据源选不对,策略再牛也白搭。

3.2 Level-1 vs Level-2:到底差在哪?

很多新手会问:Level-1和Level-2行情,不都是看价格吗?

嗯,还真不是一回事。我简单给你拆解一下。

对比维度 Level-1 行情 Level-2 行情
数据频率 约3秒快照一次 逐笔推送,毫秒级
盘口深度 5档买卖盘口 10档(甚至更多)
逐笔成交 有,能看到每笔成交明细
委托队列 有,能看到前50笔委托
费用 免费或低价 按年付费,几千到几万不等
适用场景 长线投资、日频策略 高频做市、T+0套利

你看,Level-2行情比Level-1多了不少东西。尤其是逐笔成交和委托队列,对做市商来说太重要了。

我个人习惯是:做回测和策略研究时用Level-1就够了,但实盘做市必须上Level-2。为什么?因为做市拼的是微观结构,你看到的是3秒前的快照,对手方看到的是毫秒级的逐笔数据,那你还怎么玩?

避坑指南:我曾经在回测时用Level-1数据,实盘用Level-2,结果发现策略在回测里年化30%,实盘只有5%。后来排查发现,Level-1的3秒延迟让策略信号滞后了太多。所以,回测和实盘的数据源最好保持一致。

3.3 WebSocket实时行情接入(以聚宽为例)

好了,理论说完了,咱们直接上代码。

聚宽(JoinQuant)是国内比较成熟的量化平台,它提供了WebSocket接口来获取实时行情。WebSocket的好处是:建立一次连接,后续数据主动推送过来,不用反复轮询。

3.3.1 准备工作

首先,你得有个聚宽账号,然后在个人中心拿到API密钥。这个密钥相当于你的身份证,别泄露出去。

# 安装聚宽SDK
pip install jqdatasdk

# 导入并登录
import jqdatasdk as jq
jq.auth('你的账号', '你的密码')

3.3.2 WebSocket连接示例

聚宽的WebSocket接口封装得比较友好。下面这个例子,我用来订阅可转债的实时行情。

from jqdatasdk import *
import time

# 登录
auth('your_account', 'your_password')

# 订阅可转债行情
# 注意:聚宽的可转债代码格式为 '110044.XSHG' 或 '123456.XSHE'
bonds = ['110044.XSHG', '123456.XSHE']

# 获取实时行情(WebSocket方式)
def on_data(data):
    """回调函数,每次推送数据时触发"""
    print(f"收到行情: {data}")

# 启动实时行情订阅
get_price(bonds, count=1, end_date='2024-01-01', frequency='minute', 
          fields=['open', 'close', 'high', 'low', 'volume', 'money'],
          skip_paused=True, fq='pre', panel=True)

嗯,这里要注意:聚宽的WebSocket接口在SDK里封装成了get_price,但底层其实是WebSocket推送。你只要设置好回调函数,数据就会源源不断地过来。

警告:WebSocket连接是长连接,如果网络不稳定,可能会断连。我建议你在代码里加上重连机制,比如每5秒检查一次连接状态,断了就自动重连。

3.3.3 实战中的坑

我记得有一次,我写了一个做市策略,跑在聚宽的WebSocket上。刚开始一切正常,但运行了半小时后,行情突然停了。排查了半天,发现是聚宽对免费用户的WebSocket连接数有限制——最多同时订阅50只标的。

所以,如果你要订阅大量可转债,建议升级到付费版,或者自己搭建一个数据中台,把行情数据缓存到本地数据库。

3.4 行情数据字段解析

拿到行情数据后,你得知道每个字段是什么意思。不然一堆数字摆在你面前,你也不知道该用哪个。

3.4.1 核心字段一览

字段名 含义 做市中的用途
open 开盘价 判断当日跳空缺口
close 收盘价 计算日内涨跌幅
high 最高价 设置止损/止盈参考
low 最低价 判断支撑位
volume 成交量(手) 衡量流动性
money 成交额(元) 计算资金流向
bid1~bid5 买一到买五价格 判断买方力量
ask1~ask5 卖一到卖五价格 判断卖方力量
bid_vol1~bid_vol5 买一到买五挂单量 计算买卖压力
ask_vol1~ask_vol5 卖一到卖五挂单量 计算买卖压力

3.4.2 做市中最重要的两个字段

我个人觉得,做市商最该盯的两个字段是:买卖盘口价差成交量

  • 买卖盘口价差:就是卖一价减去买一价。价差越小,说明流动性越好,做市商越容易赚钱。我一般设定一个阈值,比如价差超过0.5元就暂停做市,等市场恢复平静再说。
  • 成交量:成交量突然放大,往往意味着有大资金进场或离场。这时候做市商要小心,别被大单吃掉。

实战技巧:我曾经用Level-2的逐笔成交数据,发现某只可转债在3秒内连续成交了1000手,但价格没怎么动。这说明有大户在偷偷吸筹。我立刻调整了做市策略,把买卖价差收窄,结果当天多赚了2个tick。

3.5 本章知识体系图

下面这张图,帮你把本章的核心逻辑串起来。从数据源选择到字段解析,再到实战接入,每一步都环环相扣。

行情数据源接入实战知识体系 数据源选择 Level-1 行情 Level-2 行情 WebSocket 实时接入(聚宽) 行情数据字段解析(open/close/high/low/volume/money/bid/ask) 做市策略实战应用 从数据源到实战,每一步都影响做市策略的最终收益

3.6 本章小结

这一章我们聊了三个核心问题:

  • Level-1 vs Level-2:Level-2多了逐笔成交和委托队列,做市商必须用Level-2。
  • WebSocket接入:以聚宽为例,代码很简单,但要注意连接稳定性和订阅数量限制。
  • 字段解析:买卖盘口价差和成交量是做市商最该盯的两个指标。

说实话,行情数据接入是量化交易里最基础但也最容易踩坑的环节。我见过太多人花大把时间优化策略,结果数据源没选对,全白干了。所以,这一章的内容虽然基础,但值得你反复琢磨。

个人建议:如果你刚开始做可转债做市,可以先从Level-1行情入手,把策略逻辑跑通。等实盘验证没问题了,再升级到Level-2。别一上来就追求最贵的数据源,性价比也很重要。

蓝海数据掘金营,专注资料整理