一、订单簿基础:从盘口看懂市场博弈

做量化交易这些年,我越来越觉得——订单簿就是市场的X光片。它把买卖双方的每一丝犹豫、每一分贪婪,都赤裸裸地摆在你面前。今天咱们就来聊聊这个最基础、也最容易被忽视的东西。

1.1 什么是订单簿?

说白了,订单簿就是一个实时更新的挂单列表。它记录了所有交易者挂出的、还没成交的买卖指令。你想想看,交易所就像个撮合市场的大管家,左手接着买家的单子,右手接着卖家的单子,然后按价格和时间排好队——这就是订单簿。

核心要点:订单簿反映的是市场的潜在流动性,而不是已经成交的历史。我刚开始做交易时总盯着K线看,后来才发现,真正决定价格走向的,往往是订单簿里那些还没成交的单子。

1.2 限价单与市价单

这两种单子,是订单簿的基石。理解它们,你才算真正入了门。

限价单(Limit Order)

你指定一个价格,只有市场达到这个价格时才会成交。比如你挂了个买入BTC的限价单,价格设在50000 USDT,那只有卖盘价格跌到50000或以下时,你的单子才会被吃掉。

我个人的习惯是:做策略时,限价单用来提供流动性。你在盘口挂单,别人来吃你的单,你还能赚点手续费返还。我在实盘里见过不少新手,一上来就狂挂限价单,结果行情一波动,全被套在中间——嗯,这里要注意,限价单不是随便挂的。

市价单(Market Order)

你不管价格,直接按当前最优价成交。说白了就是「我要买,马上成交,价格无所谓」。市价单会立即吃掉订单簿里最便宜的卖单(或最贵的买单)。

避坑指南:我曾经在流动性差的币种上用过市价单,结果滑点直接吃掉了我0.5%的利润。所以,大额交易时,我建议你慎用市价单,或者拆成小单分批进场。

1.3 买卖盘口与价差

订单簿里,最上面那层就是盘口。买一、买二、买三...卖一、卖二、卖三...这些数字,就是当前市场上最活跃的博弈位置。

术语 含义 我的理解
买一(Bid 1) 当前最高的买入价格 买方最着急的人出的价
卖一(Ask 1) 当前最低的卖出价格 卖方最想跑的人出的价
价差(Spread) 卖一 - 买一 市场的「摩擦成本」

价差越小,说明市场越活跃,流动性越好。我观察过,主流币种的价差通常只有0.01%左右,而一些山寨币可能高达1%甚至更多。你想想看,如果你做高频交易,每次进出都损失一个价差,那一年下来可不是小数目。

1.4 订单簿数据结构

搞量化交易,光看界面是不够的。你得理解订单簿在代码里长什么样。这里我给出一个最简化的数据结构示例:

// 订单簿的简化结构(伪代码)
OrderBook {
    bids: [  // 买单,按价格从高到低排序
        { price: 50000.0, volume: 1.5 },
        { price: 49990.0, volume: 2.3 },
        { price: 49980.0, volume: 0.8 }
    ],
    asks: [  // 卖单,按价格从低到高排序
        { price: 50010.0, volume: 1.2 },
        { price: 50020.0, volume: 3.1 },
        { price: 50030.0, volume: 0.5 }
    ],
    timestamp: 1700000000000  // 毫秒级时间戳
}

实际交易所返回的数据,通常是一个增量更新的流。也就是说,你不会每次都拿到全量数据,而是拿到「删掉某个单子」「新增某个单子」「修改某个单子」这样的指令。我刚开始对接交易所API时,就被这个搞晕过——你想想看,如果每次更新都传全量数据,那网络带宽早就爆了。

注意:不同交易所的订单簿数据结构略有差异。比如币安用的是「价格-数量」数组,而OKX用的是「价格-数量-订单ID」的格式。对接时一定要仔细看文档,我曾经因为搞混了排序方向,导致策略在实盘里反向开仓——那叫一个惨。

知识体系总览

下面这张图,是我自己梳理的订单簿核心知识框架。你可以把它当作本章的「地图」:

订单簿 实时挂单列表 限价单 vs 市价单 买卖盘口与价差 数据结构与增量更新 流动性来源 价格发现机制 滑点计算 深度聚合 图:订单簿知识体系结构

这张图里,我把订单簿拆成了四个维度:定义、订单类型、盘口价差、数据结构。每个维度下面还有更细的分支。我个人建议你先把这四个维度吃透,再往下深入。地基打不牢,后面盖楼容易塌。

一个小技巧:刚开始学订单簿时,你可以去交易所的「深度图」界面盯着看几分钟。你会看到买单和卖单像两堵墙一样对峙着,价格就在中间来回震荡。这种感觉,比看任何文字描述都来得直观。

好了,订单簿的基础就聊到这儿。记住一句话:订单簿是市场的微观结构,读懂它,你就能读懂市场的呼吸。

专注资料整理