第一章:订单簿基础——限价单与市价单、买卖盘口、深度图概念
各位同学,咱们今天聊聊订单簿。这东西说白了,就是交易所里所有挂单的实时账本。你想想看,没有订单簿,交易就跟盲人摸象一样——你根本不知道对手盘在哪,价格会往哪走。
我个人习惯把订单簿比作一个「战场地图」。买方是红军,卖方是蓝军,每个价格点位上都有人在布防。谁的火力更猛,谁就能推动价格前进。嗯,这个比喻很形象,咱们接下来一点点拆解。
1.1 限价单 vs 市价单:两种核心武器
先搞清楚最基础的两个概念。我在项目中遇到过不少新手,上来就问「为什么我的单子没成交?」——多半是没搞懂限价单和市价单的区别。
限价单,就是你指定一个价格,告诉交易所:「我只愿意在这个价或者更好的价成交。」比如你想买比特币,挂了个 30000 的限价买单。那只有价格跌到 30000 或以下时,你的单子才会被吃掉。说白了,你是在等市场来找你。
市价单,就是你不挑价格,直接说:「给我按当前最优价成交,越快越好。」市价单会立刻吃掉对手方最便宜的挂单。你想想看,这就像你冲进菜市场喊「白菜全要了」——价格可能不太理想,但胜在速度快。
核心区别一句话:
- 限价单 = 指定价格,等待成交(做市商思维)
- 市价单 = 立即成交,接受滑点(吃单方思维)
我曾经犯过一个低级错误:在流动性极差的币种上用了市价单。结果呢?本来想买 1 个 BTC,因为卖单太薄,直接吃到了 3 个价位以上,多花了 200 美金。这就是典型的「滑点灾难」。从那以后,我对流动性差的品种一律只用限价单。
1.2 买卖盘口:订单簿的骨架
订单簿的核心结构就是「买卖盘口」。左边是买单(Bid),右边是卖单(Ask)。每个价格上挂了多少量,一目了然。
咱们用个表格来展示典型的盘口数据:
| 价格 (USDT) | 买单量 (BTC) | 卖单量 (BTC) | 价格 (USDT) |
|---|---|---|---|
| 29980 | 12.5 | 8.3 | 30020 |
| 29970 | 25.1 | 15.7 | 30030 |
| 29960 | 40.2 | 22.4 | 30040 |
| 29950 | 68.9 | 35.1 | 30050 |
注意看,当前最优买价是 29980,最优卖价是 30020。中间的差价 40 USDT 就是「买卖价差」(Spread)。价差越小,说明流动性越好。我个人习惯用价差来判断一个交易对是否值得做——价差超过 0.1% 的,我基本不考虑。
这里有个避坑指南:千万别只看最优价。我曾经盯着一只小币种,最优买价看起来挺厚,结果一查第二档,直接少了 90% 的量。这种「虚挂」的订单,很可能是做市商在钓鱼。你一旦用市价单冲进去,价格直接滑到姥姥家。
1.3 深度图:把订单簿画出来
光看表格还不够直观。咱们把买卖盘口的数据画成图,就是「深度图」。横轴是价格,纵轴是累计挂单量。红色曲线代表卖单深度,绿色曲线代表买单深度。
为什么要看深度图?说白了,它能告诉你两件事:
- 支撑位在哪:买单密集区,价格跌到这里容易反弹
- 阻力位在哪:卖单密集区,价格涨到这里容易受阻
下面我用 SVG 画一张典型的深度图结构,帮你建立直观印象:
你看这张图,绿色区域越陡峭,说明买单越密集,支撑越强。红色区域同理。我一般会盯着深度图上那些「陡坡」的位置——那才是真正的战场前线。
实战小技巧:
我个人习惯把深度图叠加到 K 线图下方一起看。当价格接近深度图的「陡坡」位置时,我会格外警惕。如果同时出现成交量放大,那基本就是支撑或阻力确认的信号。
1.4 订单簿的实时变化:动态博弈
订单簿不是静止的。每一秒都有新单子进来,老单子撤掉。你想想看,这就像一场永不停歇的拔河比赛。
我举个例子。假设当前 BTC 价格 30000,买单在 29980 挂了 100 个 BTC。突然,有人撤掉了 80 个。这时候会发生什么?
- 支撑变弱了,价格更容易往下掉
- 如果你手里有单子,得赶紧想想是不是要跟着撤
我曾经在 2019 年吃过一次大亏。当时 ETH 的订单簿上,买单墙看起来固若金汤。我没多想就重仓做多。结果 5 分钟后,那堵墙被瞬间撤光,价格直接跳水 3%。后来我才知道,那是某个大户在「虚张声势」——挂单诱多,然后撤单砸盘。
重要提醒:
订单簿上的挂单量 ≠ 真实意图。很多大资金会挂单又撤单,制造假象。千万别看到一堵大墙就无脑冲。我现在的习惯是:观察同一价位挂单的「存活时间」。如果一堵大墙挂了超过 30 秒还没撤,那可信度才比较高。
1.5 用 Python 快速抓取订单簿
光说不练假把式。咱们用 Python 从币安 API 拉一份实时订单簿看看。代码很简单,但很实用。
import requests
import json
# 币安 BTC/USDT 订单簿 API
url = "https://api.binance.com/api/v3/depth"
params = {
"symbol": "BTCUSDT",
"limit": 10 # 只取前10档
}
response = requests.get(url, params=params)
data = response.json()
print("=== 买单(Bids) ===")
for bid in data['bids'][:5]:
price = float(bid[0])
volume = float(bid[1])
print(f"价格: {price:>10.2f} | 数量: {volume:>8.4f}")
print("\n=== 卖单(Asks) ===")
for ask in data['asks'][:5]:
price = float(ask[0])
volume = float(ask[1])
print(f"价格: {price:>10.2f} | 数量: {volume:>8.4f}")
# 计算买卖价差
best_bid = float(data['bids'][0][0])
best_ask = float(data['asks'][0][0])
spread = best_ask - best_bid
spread_pct = spread / best_bid * 100
print(f"\n买卖价差: {spread:.2f} USDT ({spread_pct:.3f}%)")
跑一下这段代码,你就能看到当前 BTC 的盘口数据。我个人习惯把这个脚本挂在服务器上,每 5 秒拉一次数据,记录到本地数据库。时间长了,你就能分析出哪些价位是「常驻支撑」,哪些是「临时起意」。
本章核心要点:
- 限价单指定价格,市价单追求速度——选哪个看你的交易策略
- 买卖盘口是订单簿的骨架,价差越小流动性越好
- 深度图把订单簿可视化,支撑和阻力一目了然
- 订单簿实时变化,小心「虚挂」陷阱
- 用 Python 可以轻松抓取实时数据,建议持续记录
好了,订单簿的基础概念就聊到这。这些东西看着简单,但真正用好的人不多。你想想看,市场上 90% 的交易者根本不看订单簿,光盯着 K 线瞎猜。你要是能把订单簿读透了,就已经跑赢了大部分人。
下一章咱们聊聊怎么用订单簿数据计算「价量分布」,那才是真正识别支撑阻力的核心武器。