订单簿基础:什么是订单簿?限价单与市价单的区别

做量化交易这些年,我见过不少新手一上来就盯着K线图猛看,却忽略了最底层的东西——订单簿。说实话,订单簿才是市场最真实的脉搏。K线是二手加工过的信息,而订单簿是原始数据,是买卖双方真金白银的博弈现场。

今天我们就来聊聊订单簿到底是什么,以及两种最基础的订单类型:限价单和市价单。搞懂这些,后面的策略回测才有根基。

一、订单簿的本质:一个实时更新的“挂单墙”

订单簿,说白了就是一个电子账本。它记录了当前市场上所有未成交的买卖意愿。你想想看,交易所就像一个中介,它把所有人的挂单按价格排好队,买价高的排前面,卖价低的排前面。

我习惯把订单簿想象成两面墙:

  • 买单墙(Bid Side):所有人愿意买入的价格和数量,从高到低排列
  • 卖单墙(Ask Side):所有人愿意卖出的价格和数量,从低到高排列

两堵墙之间的空隙,就是当前的市场价格区间。这个空隙越小,说明市场流动性越好。

核心概念:订单簿是市场微观结构的核心。它反映了供需关系的实时状态,是量化策略获取alpha的重要数据源。

我在项目中遇到过一件事:有一次做高频策略回测,用的都是1分钟K线数据,结果实盘跑起来完全不是那么回事。后来才发现,订单簿里的深度信息才是关键——大单挂单的撤单行为、买卖盘口的失衡,这些在K线里根本看不到。

二、限价单 vs 市价单:两种完全不同的交易哲学

这两种订单类型,是交易系统里最基础的操作。但很多人对它们的理解只停留在表面。嗯,这里要注意,它们的区别不仅仅是“能不能指定价格”这么简单。

1. 限价单(Limit Order)

限价单,就是你指定一个价格,只有市场达到这个价格时才会成交。说白了,你是“守株待兔”。

  • 买单限价:你出价100元,只有别人愿意以100元或更低卖给你时,才会成交
  • 卖单限价:你出价110元,只有别人愿意以110元或更高买你的货时,才会成交

限价单最大的好处是——你控制了成本。不会因为市场突然波动而买到高价或卖在低价。

我的经验:做做市商策略时,我几乎只用限价单。因为我们需要赚取买卖价差,必须精确控制入场价格。我曾经因为一次市价单失误,在流动性枯竭时多付出了0.3%的成本,那笔交易直接亏了。

但限价单也有个致命缺点:可能无法成交。如果价格始终到不了你的挂单价,你就只能干瞪眼。

2. 市价单(Market Order)

市价单,就是“不管什么价格,我现在就要成交”。你只指定数量,不指定价格。系统会以当前市场上最优的可成交价格帮你吃掉对手单。

  • 买入市价:直接吃掉卖一、卖二、卖三...直到买够数量
  • 卖出市价:直接吃掉买一、买二、买三...直到卖够数量

市价单的核心优势是——成交确定性高。只要市场有足够的流动性,你几乎肯定能成交。

避坑指南:我曾经在流动性差的币种上用过市价单,结果滑点大得吓人。明明看到卖一价格是100元,但因为我买的量太大,直接把卖一到卖五全吃掉了,最后成交均价变成了103元。这就是市价单的“滑点风险”。

三、两种订单的对比:一张表说清楚

对比维度 限价单 市价单
价格控制 完全控制,指定价格 无控制,按市场最优价成交
成交确定性 低,可能无法成交 高,几乎必成交
滑点风险 无滑点(未成交前) 高,尤其大单时
对市场影响 提供流动性,挂单在订单簿上 消耗流动性,直接吃掉对手单
适用场景 做市、套利、低频策略 抢单、止损、高频策略

你想想看,这两种订单其实代表了两种不同的交易角色。限价单是“流动性提供者”,市价单是“流动性消耗者”。交易所喜欢限价单,因为流动性越深,市场越健康。但作为交易者,你得根据策略需求来选择。

四、订单簿的核心数据结构

搞量化交易,你得能读懂订单簿的数据结构。我习惯用Python的字典或pandas的DataFrame来模拟它。

# 一个简化的订单簿数据结构示例
order_book = {
    'bids': [  # 买单,从高到低排列
        {'price': 101.5, 'size': 200},
        {'price': 101.0, 'size': 500},
        {'price': 100.5, 'size': 300},
    ],
    'asks': [  # 卖单,从低到高排列
        {'price': 102.0, 'size': 150},
        {'price': 102.5, 'size': 400},
        {'price': 103.0, 'size': 600},
    ]
}

# 买卖价差
spread = order_book['asks'][0]['price'] - order_book['bids'][0]['price']
print(f"当前买卖价差: {spread:.2f}")

这段代码虽然简单,但它是所有订单簿分析的基础。你可以在上面计算加权平均价、深度分布、买卖压力比等等。

五、订单簿的核心逻辑:一张图看懂

下面我用一张SVG图来展示订单簿的核心逻辑。这张图我画了很多遍,每次给团队新人培训都用它。

订单簿核心逻辑示意图 买单墙 (Bids) 买一: 101.5 数量: 200 买二: 101.0 数量: 500 买三: 100.5 数量: 300 价格从高到低排列 越靠前越有成交优先级 价差 卖单墙 (Asks) 卖一: 102.0 数量: 150 卖二: 102.5 数量: 400 卖三: 103.0 数量: 600 价格从低到高排列 越靠前越有成交优先级 市价买单 → 从卖一开始吃掉对手单 限价单 → 在指定价格位置挂单等待成交

这张图里,买单墙从高到低排列,卖单墙从低到高排列。中间的价差就是市场流动性的晴雨表。我习惯每天开盘前先看一眼这个价差——如果价差突然扩大,说明市场情绪不稳定,这时候做策略要格外小心。

六、实战中的选择:什么时候用什么单?

搞清楚了概念,咱们聊聊实战。我个人习惯这样选择:

  1. 做趋势跟踪策略:用市价单入场,限价单出场。因为趋势来了,你得先上车,别在乎那点滑点。但出场时可以用限价单锁定利润。
  2. 做套利策略:几乎全用限价单。套利赚的就是微小的价差,市价单那点滑点就能把利润吃光。
  3. 做高频做市:限价单为主,偶尔用市价单调整库存。我曾经在某个交易所做做市,80%的订单都是限价单,只有库存偏离目标时才用市价单快速调整。

一个小技巧:如果你不确定用哪种订单,可以试试“冰山订单”——把大单拆成多个小限价单,既能控制价格,又不会暴露你的真实意图。我在做大宗交易时经常用这招。

好了,订单簿的基础就聊到这儿。限价单和市价单的区别,说白了就是“要价格还是要确定性”的选择题。没有绝对的好坏,关键看你的策略需要什么。


公众号:蓝海资料掘金营,微信deep3321