1. 订单簿基础与市场微观结构

做市商这行,说白了就是跟订单簿打交道。我刚开始接触这个领域时,觉得订单簿不就是一堆买单卖单嘛,有什么好研究的?后来在实盘交易中吃了不少亏,才明白这玩意儿的水有多深。今天咱们就从最基础的东西聊起。

1.1 限价单与市价单:两种最基本的武器

市场上只有两种订单类型,你想想看,是不是很简单?

限价单(Limit Order):你指定一个价格,只有市场达到这个价格时才会成交。比如你挂一个「买入 100 股,价格不超过 10 元」,那系统就会在 10 元或更低的价格帮你买。

市价单(Market Order):你不指定价格,系统以当前最优价格立即成交。说白了就是「不管多少钱,先给我买了再说」。

我个人习惯把限价单叫做「耐心单」,市价单叫做「急单」。为什么?

  • 限价单提供流动性,你在那里等着别人来成交
  • 市价单消耗流动性,你直接吃掉别人的挂单

核心区别:限价单是「挂单等成交」,市价单是「直接吃单」。做市商主要用限价单来提供流动性,赚取买卖价差。

我在项目中遇到过一个问题:某个策略大量使用市价单,结果在流动性差的时候,滑点大得吓人。嗯,这里要注意——市价单虽然成交快,但价格不确定。尤其是在盘口很薄的时候,一个市价单可能把价格打穿好几个档位。

1.2 订单簿的构成:买盘与卖盘

订单簿(Order Book)就是所有限价单的集合。它分为两半:

  • 买盘(Bid Side):所有买入限价单,按价格从高到低排列
  • 卖盘(Ask Side):所有卖出限价单,按价格从低到高排列

中间那个空隙,就是买卖价差(Spread)。做市商赚的就是这个差价。

举个例子,假设某股票当前订单簿长这样:

价格 买盘数量 卖盘数量 价格
9.98 200 150 10.02
9.97 500 300 10.03
9.96 800 600 10.04

这里最优买价是 9.98,最优卖价是 10.02,价差 4 分钱。如果你挂一个市价买单,就会吃掉 10.02 的 150 股,然后继续吃 10.03 的 300 股...直到满足你的数量为止。

实战技巧:做市商通常会盯着「盘口深度」——也就是每个价格档位的挂单量。如果某个档位突然出现大单,往往意味着有「大玩家」在布局。

1.3 价格优先与时间优先:订单匹配的铁律

交易所怎么决定谁先成交?两个原则:

  1. 价格优先:买单出价高的优先,卖单出价低的优先
  2. 时间优先:相同价格下,先挂单的优先

我曾经犯过一个低级错误:在某个流动性很差的品种上,我挂了一个限价单,觉得价格到了就能成交。结果价格确实到了,但我的单子排在后面,眼睁睁看着别人成交了。这就是时间优先的威力。

用代码模拟一下订单簿的匹配逻辑:

class OrderBook:
    def __init__(self):
        self.bids = []  # 买单,按价格降序
        self.asks = []  # 卖单,按价格升序
    
    def add_limit_order(self, side, price, quantity, timestamp):
        order = (price, quantity, timestamp)
        if side == 'buy':
            self.bids.append(order)
            # 按价格降序、时间升序排序
            self.bids.sort(key=lambda x: (-x[0], x[2]))
        else:
            self.asks.append(order)
            # 按价格升序、时间升序排序
            self.asks.sort(key=lambda x: (x[0], x[2]))
    
    def match_market_order(self, side, quantity):
        filled = 0
        if side == 'buy':
            while quantity > 0 and self.asks:
                price, qty, _ = self.asks[0]
                take = min(quantity, qty)
                filled += take * price
                quantity -= take
                if take == qty:
                    self.asks.pop(0)
                else:
                    self.asks[0] = (price, qty - take, _)
        return filled

这段代码虽然简单,但核心逻辑都在了。你想想看,交易所每天处理几亿笔订单,底层就是这套规则在运转。

1.4 市场微观结构:看不见的博弈

订单簿不只是数据的堆砌,它反映了市场参与者的博弈。我总结了几点观察:

  • 大单拆小单:机构通常会把大单拆成小单,避免暴露意图
  • 冰山订单:只显示一部分数量,实际挂单量更大
  • 闪电下单:高频交易者会在毫秒级别内撤单、改单

注意:做市商最怕的就是「信息不对称」。如果你发现某个价格档位频繁出现大单又撤单,很可能是有人在「钓鱼」——故意制造假深度来诱导你下单。

我记得有一次,某个山寨币的订单簿上,买一位置突然出现 10 万个币的挂单。很多散户以为有大资金托底,纷纷跟买。结果那单子挂了 3 秒就撤了,价格瞬间暴跌。嗯,这就是典型的「诱多」手法。

1.5 知识体系总览

下面这张图把本章的核心逻辑串起来了:

订单簿基础与市场微观结构 订单类型 限价单(提供流动性) vs 市价单(消耗流动性) 订单簿构成 买盘(Bid) + 卖盘(Ask) + 价差(Spread) 匹配规则:价格优先 + 时间优先 买单:出价高者优先 | 卖单:出价低者优先 | 同价:先到先得 市场微观结构 大单拆小单 | 冰山订单 | 闪电下单 | 假深度陷阱 做市商核心:赚取买卖价差,管理库存风险

这张图把整个知识体系串起来了。从订单类型出发,到订单簿的构成,再到匹配规则,最后落到市场微观结构。做市商的所有策略,都是围绕这个框架展开的。

我的建议:刚开始学的时候,别急着看复杂的策略。先把订单簿的底层逻辑吃透。我见过太多人一上来就研究高频算法,结果连盘口都看不懂,亏得一塌糊涂。

好了,这一章就到这里。记住一句话:订单簿是市场的「心电图」,读懂了它,你就读懂了市场。


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