第二章:订单流数据基础

做订单流交易,说白了就是跟数据打交道。你得先搞清楚这些数据长什么样,才能谈得上用它赚钱。

我个人习惯把订单流数据分成四大块:逐笔成交、买卖盘口深度、Time & Sales、市场深度(DOM)。这四块数据,就像汽车的四个轮子,缺一个都跑不稳。

2.1 逐笔成交数据(Tick Data)

逐笔成交,也叫Tick数据。它记录的是每一笔真实的成交。

举个例子,你看到盘口上有人挂了100手买单,突然成交了50手。这50手是谁买的?价格是多少?时间精确到哪一秒?这些信息,就是逐笔成交数据告诉你的。

核心字段:

  • 时间戳(精确到毫秒甚至微秒)
  • 成交价格
  • 成交量
  • 成交标识(买盘主动成交还是卖盘主动成交)

我在项目中遇到过一个问题:有些交易所的Tick数据,时间戳只精确到秒。这就麻烦了。同一秒内成交了100笔,你根本分不清先后顺序。所以,我建议你尽量用毫秒级的数据源。

避坑指南:我曾经用过一个数据源,它的Tick数据里成交标识经常标错。明明是买方主动吃单,它标成卖方。后来我花了整整一周时间,写了个校验程序,才把数据洗干净。所以,拿到数据先做校验,别直接拿来用。

2.2 买卖盘口深度(Order Book Depth)

盘口深度,就是挂在上面还没成交的订单。它告诉你:在什么价格上,有多少人想买,有多少人想卖。

你想想看,如果买一价位挂了1000手,卖一价位只挂了10手。这说明什么?说明卖方力量很弱,价格大概率要往上走。这就是盘口深度的价值。

盘口深度通常分五档、十档,甚至全量。我个人习惯用全量数据,虽然数据量大,但信息更完整。

档位 买价 买量 卖价 卖量
1 100.00 500 100.05 200
2 99.95 800 100.10 600
3 99.90 1200 100.15 400

嗯,这里要注意:盘口数据是快照数据,不是流数据。它每隔几毫秒更新一次。如果你做高频交易,这个更新频率可能不够用。

2.3 时间与销售数据(Time & Sales)

Time & Sales,简称T&S。它跟Tick数据有点像,但侧重点不同。

T&S更关注的是「谁在推动价格」。它会把每一笔成交标记为「买盘推动」或「卖盘推动」。怎么判断的?很简单:如果成交价等于卖一价,那就是买方主动吃单;如果等于买一价,那就是卖方主动砸盘。

关键指标:

  • Delta = 买盘成交量 - 卖盘成交量
  • Cumulative Delta = 累计Delta值
  • Volume Profile = 成交量分布

我记得有一次,一个学员问我:「老师,为什么价格没怎么动,但Cumulative Delta一直在涨?」我告诉他:「这说明有人在偷偷吸筹。价格不动,是因为他们在用冰山订单,把大单拆成小单吃。」这就是T&S数据的妙用。

注意:T&S数据里有个坑——「被动成交」和「主动成交」的区分。有些交易所会把Maker订单的成交也算进去,导致Delta失真。我建议你只用Taker成交的数据。

2.4 市场深度(DOM)

DOM,全称Depth of Market。它跟盘口深度有点像,但更全面。

DOM不仅显示当前的价格和挂单量,还会显示每个价位的「订单数量」。比如,买一价位有500手,但这500手是10个订单还是1个订单?DOM会告诉你。

为什么这个信息重要?因为订单数量能帮你判断「大资金」的意图。如果一个价位上只有1个订单挂了500手,那很可能是机构在挂单。如果500手分散在50个订单里,那多半是散户。

我个人习惯把DOM数据做成热力图。价格在左边,订单数量在右边,用颜色深浅表示挂单量大小。一眼就能看出哪里是「压力位」,哪里是「支撑位」。

2.5 四类数据的关系

这四类数据不是孤立的。它们互相印证,共同构成订单流分析的基础。

举个例子:

  • Tick数据告诉你「成交了」
  • 盘口深度告诉你「还有多少没成交」
  • T&S告诉你「谁在推动」
  • DOM告诉你「大资金在哪」

四者结合,你才能看清市场的全貌。

订单流数据体系 逐笔成交数据 Tick Data 买卖盘口深度 Order Book Depth 时间与销售 Time & Sales 市场深度 DOM 核心应用场景 识别主力意图 | 判断买卖压力 | 发现价格失衡 | 捕捉订单流异常 成交明细分析 挂单结构分析 Delta动量分析 大单追踪分析

2.6 数据获取与处理

说了这么多,数据从哪来?

我常用的数据源有这几个:

  • 交易所API(如Binance、Coinbase的WebSocket接口)
  • 第三方数据商(如Bloomberg、Reuters)
  • 自建爬虫(适合小众市场)

拿到数据后,第一件事不是分析,而是清洗。我写了个简单的Python脚本,用来校验数据完整性:

def validate_tick_data(df):
    # 检查时间戳是否连续
    time_gaps = df['timestamp'].diff().dt.total_seconds()
    if (time_gaps > 1).any():
        print('警告:存在超过1秒的时间间隔')
    
    # 检查价格是否在合理范围
    if (df['price'] <= 0).any():
        print('错误:存在非正价格')
    
    # 检查成交量是否异常
    if (df['volume'] <= 0).any():
        print('错误:存在非正成交量')
    
    return True

嗯,这个脚本虽然简单,但能帮你省掉很多麻烦。我建议你把它加到数据管道的入口处。

个人经验:数据清洗这件事,花再多时间都不为过。我曾经因为一个字段类型错误,导致整个回测结果全错了。从那以后,我每条数据进来都要过三关:格式校验、逻辑校验、业务校验。

2.7 本章小结

订单流数据基础,说白了就是四个字:看清真相。Tick数据告诉你成交细节,盘口深度告诉你挂单结构,T&S告诉你买卖力量,DOM告诉你大资金动向。

把这四块数据吃透了,你就能看到别人看不到的东西。比如,为什么价格在某个位置反复震荡?为什么突然放量突破?这些问题的答案,都藏在订单流数据里。

下一章,我们会聊怎么把这些数据变成交易信号。但在此之前,我建议你先找个数据源,亲手拉一份数据看看。纸上得来终觉浅,绝知此事要躬行。

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