交易所API基础:REST API与WebSocket API的区别、API Key的申请与权限管理、API文档的阅读方法
做市机器人要跟交易所对话,得先学会它们的语言。交易所给我们提供了两套通信协议:REST API 和 WebSocket API。这两者有什么区别?什么时候该用哪个?API Key 又该怎么管?今天我把这些基础讲透。
REST API vs WebSocket API:一个像打电话,一个像对讲机
我个人习惯把 REST API 比作「打电话」——你拨一次号,对方接起来说一句,然后挂断。每次通话都是独立的,你问一句「当前BTC价格多少?」,交易所回你一个数字,然后连接就断了。下次再问,得重新拨号。
WebSocket API 呢?它更像「对讲机」。你按下通话键,对方也按着,你们之间保持一条持续的通道。交易所那边价格一变,立马就能告诉你,不用你反复去问。
我在项目中遇到过这样的情况:刚开始做市时,我用 REST API 去轮询订单簿数据,每秒钟请求一次。结果交易所那边直接给我限流了,说请求太频繁。后来换成 WebSocket,一条连接搞定所有实时数据推送,服务器负载也降下来了。
- REST API:请求-响应模式,适合查询账户余额、提交订单、获取历史数据等一次性操作
- WebSocket API:订阅-推送模式,适合接收实时行情、订单状态更新、成交回报等持续数据流
说白了,REST 是你主动去拿数据,WebSocket 是数据主动来找你。做市机器人需要实时监控市场变化,所以 WebSocket 是主力,REST 用来做辅助操作。
API Key 的申请与权限管理
要跟交易所交互,你得先证明你是谁。交易所给你发一对钥匙:API Key(公钥)和 Secret Key(私钥)。
申请流程大同小异,一般都在交易所的「API管理」页面。我建议你申请的时候注意以下几点:
- 权限最小化:只勾选你需要的权限。做市机器人通常需要「交易权限」和「读取权限」,千万别勾「提现权限」。我曾经见过有人把提现权限也开了,虽然没出事,但想想都后怕。
- IP白名单:把服务器的IP地址加进去。这样就算别人拿到了你的API Key,不是从白名单IP发来的请求也会被拒绝。
- 限制交易对:有些交易所允许你指定API Key只能交易哪些币对。如果你只做BTC/USDT,就别让它碰其他币种。
Secret Key 一旦泄露,等于你的账户被人拿走了。绝对不要把它硬编码在代码里,不要上传到GitHub,不要截图发给任何人。我习惯把它放在环境变量里,或者用专门的密钥管理服务。
嗯,这里还要提一下签名机制。每次用 REST API 发请求时,你需要用 Secret Key 对请求参数进行签名,交易所那边用你的公钥验证签名是否合法。常见的签名算法是 HMAC-SHA256。代码大概长这样:
import hmac
import hashlib
import base64
def sign_request(secret_key, params):
# 将参数按字典序排序并拼接成字符串
query_string = '&'.join([f"{k}={v}" for k, v in sorted(params.items())])
# 使用 HMAC-SHA256 签名
signature = hmac.new(
secret_key.encode(),
query_string.encode(),
hashlib.sha256
).hexdigest()
return signature
你想想看,每次请求都要带上签名,交易所才能确认是你本人在操作。这个机制虽然麻烦,但确实安全。
API文档的阅读方法
拿到交易所的API文档,别急着翻代码。我教你一个阅读套路:
- 先看概览:了解基础URL、请求频率限制、认证方式。这些是全局规则,不看容易踩坑。
- 找到你需要的接口:做市机器人最常用的接口就那么几个——获取订单簿、下单、撤单、查询持仓。先找到这些接口的详细说明。
- 看请求参数和响应格式:每个接口需要传什么参数?返回什么数据?字段类型是什么?这些必须搞清楚。
- 看错误码:接口调用失败时返回什么错误码?什么意思?我曾经因为没看错误码,花了一下午调试一个「参数格式错误」的问题,结果只是少传了一个必填字段。
- 看示例代码:很多交易所会提供Python、JavaScript等语言的示例代码,直接拿来改改就能用。
把API文档里常用的接口参数和响应字段整理成一个速查表,贴在代码旁边。比如订单簿的bids和asks字段,不同交易所的命名可能不一样,有的叫"bids",有的叫"buy",记混了容易出bug。
知识体系结构图
下面这张图帮你理清本章的核心逻辑:
你看,这三个东西是配合使用的。WebSocket 负责接收实时行情和订单状态更新,REST 负责执行下单、撤单、查询等操作,API Key 则是整个通信的安全基石。缺一个都不行。
我曾经在对接一个新交易所时,没仔细看文档里的频率限制说明,结果用 REST API 高频轮询订单簿,直接被封了IP。后来才知道,那个交易所对 REST 请求的限制是每秒最多5次,而 WebSocket 可以无限制订阅。从那以后,我养成了一个习惯:拿到API文档第一件事,就是找频率限制和错误码说明。
好了,这些就是交易所API的基础知识。记住:REST 和 WebSocket 各有各的用途,别混着用;API Key 管好了,你的资金才安全;文档读透了,踩坑就少了。做市机器人能不能稳定运行,地基就在这了。