开盘前那段时间我通常不怎么盯价格,而是更关注盘口跳动的密度变化。美股在流动性还没完全展开的时候,订单簿会出现一种很“松”的状态,挂单看起来很多,但真实成交力量并不均衡。这个阶段如果盯得久,会发现价格不是被推出来的,更像是被“抽走平衡”之后自然滑动。
订单簿不平衡(Order Book Imbalance)说白了就是买卖双方在深度上的力量差。买一到买五和卖一到卖五的总量如果长期偏向一侧,短线价格更容易被带动。
但我更在意的是持续状态,而不是某一瞬间的数值。很多时候单点不平衡只是噪声,真正有意义的是连续几个tick都保持同方向偏移,这种结构才会对价格形成推动。
表达上可以压缩成一个很直接的关系:
bid_volume:买方深度
ask_volume:卖方深度
imbalance = (bid - ask) / (bid + ask)
数值本身不复杂,复杂的是它在时间轴上的稳定性。
做这类策略最容易踩空的一点是数据来源不够细。很多美股数据api只给成交或者K线,盘口深度被压缩之后,所谓的不平衡就变成了“看起来合理但没有交易意义”的指标。
我后来直接用WebSocket去接tick级别数据,把每一次盘口更新当成状态变化,而不是采样点。这样才能看到挂单是怎么被吃掉、补回、再被打穿的过程,而不是最后那条K线的结果。
以 AllTick API 为例,通过WebSocket订阅可以拿到实时交易与盘口流:
这一步的意义不在代码,而在于把市场从“结果视角”拉回到“过程视角”。
订单簿不平衡如果直接用来下单,很容易被噪声带偏,所以我做了一层很轻的过滤。只有在同一方向持续占优,同时成交没有明显衰减,才会认为结构在成立。
这个过程里不需要复杂模型,反而是简单规则更稳定。短线里真正重要的不是预测方向,而是确认“是否正在发生推进”。
执行上我会给一个时间窗口,比如30到90秒,如果信号持续存在就保持观察状态,一旦结构回到均衡区间就退出,不去等它走完。
用K线去回测订单簿策略基本会失真,这一点很快就能感觉出来。K线把很多微观变化压平之后,信号会显得过于干净,回测曲线也会更漂亮,但实际交易完全不是同一个东西。
我做回测时直接用tick级别数据重建订单簿状态,每一次更新都模拟一次撮合变化。计算量更大,但能看到滑点、延迟、以及成交失败这些真实情况。
成本在这里影响非常直接,哪怕微小的手续费差异,长期都会把策略从可用推向不可用。
策略跑一段时间后,表现不是均匀的,而是集中在少数市场阶段。开盘波动大时信号更容易成立,盘中平稳阶段基本会变钝甚至失效。
单个标的表现也不稳定,换成多个标的做信号叠加之后,曲线反而更平滑一些。说明订单簿不平衡更像局部结构信号,而不是全局规律。
整个过程中,美股数据api只是把市场结构展开的工具,真正起作用的还是数据是否真实反映了微观变化。如果这一层不对,后面做再多计算也只是对噪声建模。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70048654/viewspace-3176518/ ,如需转载,请注明出处,否则将追究法律责任。