如何订阅和处理行情深度数据
在做市场行情分析时,我最初只盯价格变化,觉得够用了。回测一段时间后才发现,单看成交价很容易漏掉市场脉搏——大订单出现之前,订单簿就已经悄悄发生变化。深度数据,也就是当前挂单信息,才是真正反映市场情绪的关键。
普通行情数据与深度数据的区别
普通 tick 数据只告诉你“成交了什么价、多少量”,而深度数据告诉你“当前不同价位挂了多少买单和卖单”。两者结合才能判断行情是真突破还是假突破。
最开始我用 REST 接口轮询深度数据,问题很明显:订单簿变化很快,几百毫秒的轮询就可能错过多笔大单更新。WebSocket 订阅则不同,服务器会主动推送每次订单簿变化,实时性大幅提升。
WebSocket 订阅深度数据示例
Python 代码大致如下:
import websocket
import json
def on_message(ws, message):
data = json.loads(message)
if "bids" in data and "asks" in data:
print(f"买一价: {data['bids'][0][0]}, 数量: {data['bids'][0][1]}")
print(f"卖一价: {data['asks'][0][0]}, 数量: {data['asks'][0][1]}")
print(f"深度档位数量: {len(data['bids'])}")
def on_open(ws):
subscribe_msg = {
"action": "subscribe",
"symbol": "XXXUSD",
"type": "depth",
"level": 10
}
ws.send(json.dumps(subscribe_msg))
ws = websocket.WebSocketApp(
"wss://api.alltick.co/websocket",
on_open=on_open,
on_message=on_message
)
ws.run_forever()
注意,本地需要维护订单簿。不要每次都替换整个订单簿,而是根据增量更新——比如某个价格档位的买单数量变化,只更新对应档位。
使用深度数据的一些技巧
深度档位选择:订阅过深的数据会增加带宽压力。如果策略只关注前 10 档买卖压力,就无需订阅过多档位。
快照 + 增量更新:大多数 WebSocket 接口先推送完整快照,再发送增量。漏掉增量会导致本地订单簿错位,需要按顺序更新。
延迟监控:不同数据源推送延迟差别大,可以打时间戳对比服务器时间,延迟超过 200ms 对高频分析需要注意。
在实际分析中,深度数据并不是每种策略都必须,但对于短期波动或网格分析非常有价值。通过观察买卖盘厚度变化,可以提前感知市场力量的倾向。比如某价格档位挂单突然减少,就意味着支撑减弱,需要及时调整分析逻辑。
我通常会用成交数据驱动价格走势,深度数据辅助风险判断。数据接口只是工具,理解和组织方式才是核心。
本作品采用《CC 协议》,转载必须注明作者和本文链接
learnnnn 的个人博客
关于 LearnKu
推荐文章: