第三章 市场微观结构:订单簿深度、买卖盘口、市场深度与流动性、订单类型
大家好,我是你们的老朋友。今天我们来聊聊做市商系统的核心——市场微观结构。说实话,这一章的内容,是我在实战中踩坑最多的地方。你想想看,订单簿就是你的战场,如果连战场的地形都看不懂,那还怎么打仗?
3.1 订单簿深度:市场的“心电图”
订单簿,说白了就是所有未成交订单的集合。它记录了市场上每一个想买、想卖的人,以及他们愿意出的价格和数量。我个人习惯把订单簿比作市场的“心电图”——它实时反映着市场的供需博弈。
订单簿深度,指的是在某个价格水平上,挂单的总量。深度越大,说明这个价格上的“城墙”越厚,价格越难被突破。
核心概念:
- 买盘(Bid): 买方愿意出的最高价格,以及对应的数量。
- 卖盘(Ask): 卖方愿意卖的最低价格,以及对应的数量。
- 价差(Spread): 卖一价与买一价的差值。价差越小,流动性越好。
我在项目中遇到过一种情况:某个币种看起来价差很小,只有0.01 USDT,但当我真的下了一笔大单,发现买一和卖一瞬间就被吃掉了,价格直接滑了0.5%。这就是典型的“假深度”——订单簿表面光鲜,实则一触即溃。
3.2 买卖盘口:多空博弈的前线
盘口,就是订单簿最顶层的几个价位。通常我们看“买一、买二、买三”和“卖一、卖二、卖三”。
为什么只看这几档?因为真正能成交的,就是这些最接近当前价格的订单。更深层的订单,除非价格剧烈波动,否则很难被触发。
我曾经犯过一个错误:只看买一和卖一,觉得市场很平稳。结果突然一个大户砸盘,直接把买一到买五全部吃掉,我的止损单都没来得及触发。嗯,从那以后,我养成了看“盘口厚度”的习惯——不仅要看价格,还要看每个价位上的挂单量。
实战技巧:
观察盘口时,注意“挂单量突变”。如果某个价位突然出现巨量挂单,很可能是大户在“筑墙”或“诱多”。我个人习惯用“挂单量/成交量”的比值来判断这个价位的支撑强度。
3.3 市场深度与流动性:硬币的两面
市场深度,指的是在某个价格区间内,所有订单的总量。它通常用“深度图”来表示——横轴是价格,纵轴是累计挂单量。
流动性,则是指在不显著影响价格的前提下,市场能够吸收的订单量。流动性好的市场,你下个大单,价格几乎不动;流动性差的市场,一个小单就能把价格打飞。
你想想看,做市商的核心工作是什么?就是提供流动性。我们通过挂单,让市场深度看起来更厚,让其他交易者更容易成交。但同时,我们也要承担“被吃”的风险。
避坑指南:
我曾经在流动性极差的山寨币上做市,结果一个散户的市价单就把我的所有挂单都吃了,我瞬间变成了“接盘侠”。所以,做市商一定要选择流动性好的品种,或者通过算法控制自己的挂单量。
这里我画了一张图,帮你理清订单簿、深度、流动性之间的关系:
3.4 订单类型:做市商的武器库
做市商不是随便挂单的,我们得根据不同的场景,选择合适的订单类型。这里我重点讲三种:限价单、市价单、冰山订单。
3.4.1 限价单(Limit Order)
限价单,就是指定一个价格,只有市场价格达到这个价格时才会成交。这是做市商最常用的订单类型。我们通过挂限价单,来提供流动性,赚取价差。
举个例子:BTC当前价格50000 USDT,我挂一个买一49999 USDT,卖一50001 USDT。如果市场波动不大,这两个单子可能很久都不会成交。但一旦成交,我就赚了2 USDT的价差。
限价单的优缺点:
- 优点: 可以控制成交价格,避免滑点;提供流动性,可能获得手续费减免。
- 缺点: 可能无法成交,尤其是在快速波动的市场中。
3.4.2 市价单(Market Order)
市价单,就是“不管价格,立即成交”。它吃掉的是订单簿上的对手盘。做市商很少主动下市价单,因为那意味着我们在“吃”别人的流动性,而不是“提供”流动性。
但有一种情况例外:当我们需要快速平仓或调整仓位时,市价单是唯一的选择。我记得有一次,市场突然出现黑天鹅事件,价格瞬间暴跌。我手里的限价卖单全部被套,我果断下了市价买单来对冲,虽然滑了点,但保住了本金。
警告:
市价单在流动性差的市场中,可能会产生巨大的滑点。我曾经在某个小交易所下了一笔市价单,结果成交价格比预期差了2%。从那以后,我每次下市价单前,都会先看一眼订单簿的深度。
3.4.3 冰山订单(Iceberg Order)
冰山订单,是机构交易者的“隐形斗篷”。它只显示订单总量的一小部分,其余部分隐藏在“水下”。
为什么要用冰山订单?因为如果你直接挂一个大单,所有人都能看到,他们会抢在你前面交易,或者故意把价格推向不利于你的方向。冰山订单可以隐藏你的真实意图。
我个人习惯在以下几种场景使用冰山订单:
- 大额建仓: 不想让市场知道我在大量买入。
- 做市策略: 在盘口挂大单时,用冰山订单避免被其他做市商“狙击”。
- 止损/止盈: 大额止损单如果直接暴露,可能会引发踩踏。
冰山订单的实战参数:
| 参数 | 说明 | 我的建议值 |
|---|---|---|
| 总数量 | 你实际想成交的总量 | 根据仓位计算 |
| 显示数量 | 每次在订单簿上显示的数量 | 总数量的5%-10% |
| 刷新频率 | 显示数量成交后,重新挂单的速度 | 100-500毫秒 |
这里我贴一段伪代码,展示冰山订单的核心逻辑:
// 冰山订单核心逻辑(伪代码)
class IcebergOrder {
double totalQuantity; // 总数量
double displayQuantity; // 显示数量
double price; // 挂单价格
double remaining; // 剩余未成交数量
function onOrderFilled(filledQuantity) {
remaining -= filledQuantity;
if (remaining > 0) {
// 重新挂单,显示 min(displayQuantity, remaining)
placeLimitOrder(price, min(displayQuantity, remaining));
}
}
function start() {
remaining = totalQuantity;
placeLimitOrder(price, min(displayQuantity, remaining));
}
}
嗯,代码很简单,但实际实现时要注意:重新挂单的时机、价格偏移、以及交易所的限频规则。我曾经因为刷新频率太快,被交易所的API限流了,导致订单断档。
3.5 实战中的“盘口博弈”
最后,我想分享一个实战中的小技巧。做市商不仅要看懂订单簿,还要学会“读盘口”。
比如,你看到买一挂单突然增加,但价格没变。这可能是大户在“托底”,也可能是他在“诱多”。怎么判断?看成交量。如果买一挂单增加后,成交量也同步放大,说明是真的买盘;如果成交量没变化,那可能就是“假单”,随时可能撤掉。
我曾经利用这个技巧,成功避开了一次“假突破”。当时BTC价格突破60000,买盘看起来非常厚,但我发现成交量并没有跟上。我果断撤掉了我的卖单,结果5分钟后,价格暴跌了3%。
好了,这一章的内容就到这里。记住,订单簿是你的战场,读懂它,你才能在这个战场上活下来,并且赚钱。