第二章 市场选择:主流交易所对比
做价差套利,第一步不是写代码,而是选战场。
你想想看,交易所选错了,策略再牛也白搭。流动性不够,你挂单半天成交不了;费率太高,利润全给交易所打工了;API不稳定,行情一波动直接断连——这些坑,我早年都踩过。
今天咱们就掰开揉碎,聊聊四大主流交易所:Binance、OKX、Bybit、Coinbase。我会从流动性、费率、API差异三个核心维度,结合我自己的实战经验,帮你选出最适合套利的平台。
2.1 流动性:套利的命脉
流动性说白了,就是你能不能快速成交,还不影响价格。
我个人习惯,先看订单簿深度。深度不够的交易所,价差看着大,你一进去就滑点,利润瞬间变亏损。
| 交易所 | BTC/USDT 日均深度(1%价差内) | 挂单成交速度 | 我的评价 |
|---|---|---|---|
| Binance | ~5000 BTC | 极快(<50ms) | 流动性之王,套利首选 |
| OKX | ~3000 BTC | 快(<80ms) | 深度不错,主流币够用 |
| Bybit | ~2000 BTC | 较快(<100ms) | 合约深度好,现货稍弱 |
| Coinbase | ~1500 BTC | 中等(<150ms) | 合规性强,但深度一般 |
我在项目中遇到过,有一次在Bybit做ETH现货套利,挂了一笔50 ETH的买单,结果只成交了30 ETH,剩下的被滑点吃掉了。后来我学乖了,大单子只走Binance。
核心结论:Binance 的流动性是其他交易所的1.5-3倍。如果你做高频价差套利,Binance 几乎是必选项。
2.2 费率:利润的隐形杀手
很多人只看价差,不看费率。其实费率才是套利的隐形杀手。
举个例子,你发现Binance和OKX之间BTC有0.05%的价差,觉得稳赚。结果一算,双边手续费加起来0.1%,反而亏了。嗯,这种低级错误我刚开始也犯过。
| 交易所 | 现货 Maker 费率 | 现货 Taker 费率 | 合约 Maker 费率 | 合约 Taker 费率 |
|---|---|---|---|---|
| Binance | 0.1% | 0.1% | 0.02% | 0.05% |
| OKX | 0.08% | 0.1% | 0.02% | 0.05% |
| Bybit | 0.1% | 0.1% | 0.01% | 0.06% |
| Coinbase | 0.4% | 0.6% | 不支持 | 不支持 |
避坑指南:我曾经在Coinbase上做过一次套利,以为0.4%的Maker费率能接受。结果一算,双边0.8%的费率,加上滑点,直接亏了。Coinbase 的费率是其他交易所的4-6倍,除非你有特殊需求(比如合规),否则别用它做套利。
另外,别忘了VIP等级。Binance和OKX都有阶梯费率,交易量大了可以降到0.02%甚至更低。我自己的账户,因为月交易量够大,Binance的Maker费率已经降到0.02%了。说白了,量变引起质变。
2.3 API差异:技术选型的核心
API好不好用,直接决定你的开发效率。
我做过一个统计,Binance的API文档是最清晰的,错误码也最规范。OKX的API功能很全,但文档有点乱。Bybit的API速度不错,但有些接口设计得不太合理。Coinbase的API...嗯,合规性很好,但速度慢,限制多。
2.3.1 WebSocket 订阅
做价差套利,实时行情是刚需。WebSocket的稳定性和延迟,直接决定你能不能抓到价差。
# Binance WebSocket 示例(Python)
import asyncio
import websockets
async def subscribe_binance():
uri = "wss://stream.binance.com:9443/ws"
async with websockets.connect(uri) as ws:
# 订阅 BTC/USDT 深度
subscribe_msg = {
"method": "SUBSCRIBE",
"params": ["btcusdt@depth20@100ms"],
"id": 1
}
await ws.send(json.dumps(subscribe_msg))
# 持续接收数据
async for message in ws:
print(message)
# OKX WebSocket 示例
# 注意:OKX 需要先登录获取 token
async def subscribe_okx():
uri = "wss://ws.okx.com:8443/ws/v5/public"
async with websockets.connect(uri) as ws:
subscribe_msg = {
"op": "subscribe",
"args": [{"channel": "books", "instId": "BTC-USDT"}]
}
await ws.send(json.dumps(subscribe_msg))
async for message in ws:
print(message)
你看,Binance的订阅方式更简洁,直接传参数就行。OKX需要先走一遍认证流程,稍微麻烦点。
我的经验:Binance的WebSocket延迟最低,实测在20-50ms之间。OKX和Bybit在50-100ms。Coinbase的WebSocket延迟最高,经常超过200ms。做高频套利,延迟就是金钱。
2.3.2 REST API 限频
限频是另一个大坑。每个交易所的限频策略都不一样,搞不好就被封了。
| 交易所 | REST API 限频 | WebSocket 连接数 | 我的建议 |
|---|---|---|---|
| Binance | 1200次/分钟(权重制) | 最多5个连接 | 权重制比较灵活,合理分配 |
| OKX | 20次/秒(IP限制) | 最多50个连接 | IP限制严格,建议用代理 |
| Bybit | 50次/秒(IP限制) | 最多10个连接 | 限频适中,够用 |
| Coinbase | 10次/秒(IP限制) | 最多3个连接 | 限频最严,不适合高频 |
我曾经在OKX上吃过亏。当时写了个脚本,每秒请求30次,结果IP直接被封了24小时。后来我加了限流,每秒不超过15次,才稳定下来。
2.3.3 订单类型支持
做价差套利,你需要快速下单、撤单。不同交易所支持的订单类型不一样。
- Binance:支持市价单、限价单、止损单、OCO(一取消另一)订单。OCO订单做套利特别方便,可以同时挂买单和卖单。
- OKX:支持市价单、限价单、止损单、冰山订单。冰山订单适合大单,可以隐藏真实数量。
- Bybit:支持市价单、限价单、止损单、条件单。条件单可以设置触发价格,适合做网格。
- Coinbase:只支持市价单和限价单。功能最弱,但合规性最强。
我的推荐:如果你做跨交易所价差套利,Binance 的 OCO 订单和 OKX 的冰山订单是神器。Bybit 的条件单也不错,但 Coinbase 就算了,功能太弱。
2.4 综合对比与选择建议
说了这么多,到底怎么选?我直接给结论。
| 场景 | 推荐交易所 | 理由 |
|---|---|---|
| 高频价差套利 | Binance + OKX | 流动性好,API稳定,延迟低 |
| 中低频套利 | Binance + Bybit | Bybit合约深度好,适合期现套利 |
| 合规套利 | Coinbase + Binance | Coinbase合规,Binance流动性 |
| 新手入门 | Binance 单交易所 | 先练手,熟悉API和套利逻辑 |
我个人习惯,主力资金放在Binance,辅助资金放在OKX。Bybit用来做合约套利。Coinbase...嗯,除非客户要求,否则我基本不用。
最后一个小建议:别贪多。刚开始做套利,选两个交易所就够了。Binance + OKX 是最稳妥的组合。等跑通了,再慢慢加其他交易所。
好了,市场选择就聊到这儿。下一章咱们聊聊套利策略的设计,从最简单的两腿套利开始。