2. Level2 行情数据源与接口:主流数据提供商、API接口类型、数据订阅流程
在 Level2 行情实战中,理解数据从哪来、通过什么接口取、按什么流程订阅,是搭建稳定行情链路的基础。本章从数据源、接口协议、订阅流程三个维度进行拆解,帮助学员建立清晰的行情接入全景图。
2.1 主流数据提供商及其定位
Level2 行情数据的源头由交易所授权,经过不同角色的数据商分发至终端用户。根据数据流转层级,可将提供商分为四类:
| 提供商类型 | 代表机构 | 数据范围 | 典型用户 |
|---|---|---|---|
| 交易所 | 上交所、深交所 | 全量 Level2 原始数据 | 授权数据商、券商 |
| 券商 | 中信、华泰、国泰君安等 | 交易所转发 + 自营加工 | 内部交易系统、量化客户 |
| 第三方数据商 | 万得、东方财富、通联数据、聚宽 | 交易所授权 + 衍生指标 | 基金、私募、个人投资者 |
| 云服务/量化平台 | 腾讯云、阿里云、掘金量化 | 聚合转发 + 云端 API | 量化策略、程序化交易 |
实战提示: 交易所直连延迟最低(微秒级),但准入门槛高、费用昂贵;第三方数据商提供封装好的 API 和衍生指标,适合多数量化团队;券商接口通常绑定交易通道,适合自营或机构客户。
2.2 API 接口类型对比
Level2 行情接口按通信协议和传输模式分为三种主流类型:TCP、WebSocket、RESTful。三者在实时性、连接方式、适用场景上差异明显。
| 特性 | TCP | WebSocket | RESTful |
|---|---|---|---|
| 连接模式 | 长连接,全双工 | 长连接,全双工 | 短连接,请求-响应 |
| 实时性 | 极高(微秒级推送) | 高(毫秒级推送) | 低(轮询,秒级) |
| 数据格式 | 二进制协议(如 STEP、Binary) | JSON / Protobuf | JSON / XML |
| 适用场景 | 高频交易、极速行情 | 实时监控、量化策略 | 历史查询、非实时分析 |
| 典型端口 | 交易所行情网关 | ws://host:port/path | https://host/api/v1/... |
避坑提醒: 部分第三方数据商将 WebSocket 包装为“实时行情”,但实际内部仍通过 TCP 从交易所接收后再转发,存在额外延迟。选择接口时务必确认数据源到终端的全链路延迟指标。
2.3 数据订阅流程(标准步骤)
无论使用哪种接口,Level2 行情订阅通常遵循以下五个步骤。下面以 WebSocket 接口为例展示完整流程。
- 认证与鉴权:使用 API Key + Secret 或 Token 建立连接,部分券商要求绑定交易账号。
- 订阅请求:发送订阅消息,指定股票代码(如 600519.SH)、数据类型(逐笔成交、十档行情、委托队列等)。
- 数据推送:服务端持续推送实时行情数据,客户端需维护心跳保活。
- 数据解析:按协议格式(JSON / 二进制)解析字段,映射到本地数据结构。
- 异常重连:检测连接断开或超时,自动重连并重新订阅,保证数据连续性。
代码示例:WebSocket 订阅 Level2 行情(Python 伪代码)
import websocket
import json
# 1. 认证与鉴权
API_KEY = "your_api_key"
TOKEN = "your_token"
def on_message(ws, message):
# 4. 数据解析
data = json.loads(message)
print(f"逐笔成交: {data['ticker']} 价格: {data['price']} 量: {data['volume']}")
def on_error(ws, error):
print(f"连接异常: {error}")
# 5. 异常重连逻辑
def on_close(ws, close_status_code, close_msg):
print("连接关闭,准备重连...")
# 5. 自动重连
def on_open(ws):
# 2. 订阅请求
subscribe_msg = {
"action": "subscribe",
"type": "level2_tick",
"symbols": ["600519.SH", "000001.SZ"]
}
ws.send(json.dumps(subscribe_msg))
print("订阅请求已发送")
# 3. 建立连接并开始推送
ws = websocket.WebSocketApp("wss://quote.example.com/v1/level2",
on_open=on_open,
on_message=on_message,
on_error=on_error,
on_close=on_close)
ws.run_forever()
2.4 数据源与接口架构总览
下图展示了从交易所到终端用户的完整数据流转链路,以及各环节使用的接口类型。
2.5 接口选型决策要点
在实际项目中选择接口时,建议从以下四个维度评估:
- 延迟要求:高频策略(<1ms)必须选 TCP 直连;中频策略(10-100ms)可选 WebSocket;低频或回测场景 RESTful 即可。
- 数据完整性:TCP 和 WebSocket 支持全量推送,不易丢数据;RESTful 轮询可能错过中间状态。
- 开发成本:TCP 需要处理二进制协议和连接管理,开发周期长;WebSocket 有成熟客户端库;RESTful 最简单。
- 合规与授权:交易所直连需申请牌照;第三方数据商需购买授权;券商接口通常绑定交易权限。
实战建议: 对于大多数量化团队,推荐以 WebSocket 作为主力实时行情接口,配合 RESTful 做历史数据补全和盘后分析。仅在极速交易场景下考虑 TCP 直连方案。