1. 交易所API基础认知
做量化交易这些年,我见过太多人一上来就急着写代码。结果呢?连API是什么都没搞清楚,就开始调接口。嗯,这样很容易踩坑。今天咱们先把基础打牢。
1.1 什么是API?
API,全称是Application Programming Interface。说白了,就是程序之间对话的「翻译官」。
你想想看,你的交易策略跑在Python里,交易所的订单系统用Java写的。它们怎么沟通?靠API。API定义了一套规则——你发什么格式的请求,交易所返回什么格式的数据。
核心理解:API就是一份「协议合同」。合同上写着:你按我的格式发请求,我就给你想要的数据或执行你的操作。
我个人习惯把API分成两类:
- 数据API:只读,获取行情、账户信息等
- 交易API:读写,下单、撤单、查询订单等
我在项目中遇到过不少新手,把数据API和交易API混为一谈。结果调用了不该调用的接口,差点造成损失。记住:数据API不需要签名,交易API必须签名。
1.2 REST vs WebSocket:选哪个?
这个问题,几乎每个学员都会问。我直接说结论:两个都要用。
| 特性 | REST | WebSocket |
|---|---|---|
| 通信方式 | 请求-响应(一问一答) | 全双工(实时推送) |
| 延迟 | 较高(每次都要建立连接) | 极低(长连接) |
| 适用场景 | 下单、查询账户、获取历史数据 | 实时行情、订单状态推送 |
| 连接数 | 无限制 | 有限制(通常5-20个) |
| 数据格式 | JSON/XML | JSON/二进制 |
REST就像你去银行柜台办业务。你填单子,柜员处理,给你回执。每次都要排队(建立连接),办完就走(断开连接)。适合不频繁的操作,比如下单、查余额。
WebSocket就像你开了个VIP专线。银行直接给你装了个电话,行情一变,电话就响。适合高频场景,比如做市商策略、高频交易。
我的建议:用WebSocket接收实时行情和订单更新,用REST执行交易操作。这样既保证了速度,又避免了WebSocket连接数被占满。
我曾经踩过一个坑:全部用WebSocket做交易。结果连接数一满,新订单发不出去,眼睁睁看着行情错过。后来改成REST下单+WebSocket收数据,问题就解决了。
1.3 主流交易所API概览
目前国内量化圈用得最多的三家:币安、OKX、火币。我挨个说说它们的特点。
币安(Binance)
- API文档最清晰,示例代码最全
- WebSocket支持多数据流合并(Combined Streams)
- REST接口限频:1200次/分钟(权重制)
- 支持测试网(testnet),方便调试
OKX(原OKEx)
- API设计偏复杂,但功能强大
- WebSocket需要先登录获取token
- REST接口限频:20次/秒(IP维度)
- 支持模拟盘(模拟交易)
火币(Huobi)
- API风格偏传统,文档更新较慢
- WebSocket支持REST和WebSocket双通道
- REST接口限频:100次/秒(API Key维度)
- 部分接口已停止维护
注意:火币的API最近两年变动较大。如果你是新项目,我个人建议优先考虑币安或OKX。火币更适合维护老系统。
1.4 API文档阅读方法
很多同学拿到API文档就懵了。几百页的PDF,从哪看起?我教你一个「三步法」。
- 先看概览:找到「API概述」或「Introduction」章节。了解认证方式、基础URL、限频规则。
- 再看鉴权:找到「Authentication」或「签名」章节。这是最关键的,签名错了什么都调不通。
- 最后看接口:找到你需要的接口。比如「下单接口」,看请求参数、响应示例、错误码。
举个例子,币安的REST下单接口:
POST /api/v3/order
请求头:
X-MBX-APIKEY: your_api_key
请求体(JSON):
{
"symbol": "BTCUSDT",
"side": "BUY",
"type": "LIMIT",
"timeInForce": "GTC",
"quantity": 0.001,
"price": 50000
}
签名方式:HMAC SHA256
签名参数:timestamp + recvWindow + 请求体
你看,文档里会明确告诉你:请求头要带什么、请求体格式是什么、签名怎么算。照着做就行。
小技巧:看文档时,先找「错误码」章节。很多问题都是错误码没处理好导致的。比如币安的-1013错误,代表「下单数量不合法」。提前知道这些,调试时能省一半时间。
我曾经带过一个团队,有个同事调了三天接口都没通。我过去一看,他连文档的「签名算法」章节都没看。嗯,这种事其实挺常见的。所以我的建议是:先花30分钟通读文档的概览和鉴权部分,再动手写代码。
1.5 知识体系总览
下面这张图,是我自己总结的交易所API知识体系。你可以把它当成学习路线图。
这张图把交易所API的知识体系分成了四层。从最底层的协议概念,到具体的交易所实现,再到核心功能,最后是关键技术。每一层都依赖下一层。比如你不懂REST协议,就看不懂币安的接口文档。你不懂签名鉴权,就调不通交易接口。
总结一下:API是程序间的沟通协议。REST适合低频操作,WebSocket适合高频实时数据。主流交易所中,币安文档最友好,OKX功能最全,火币适合维护老系统。看文档时,先看概览和鉴权,再看具体接口。
好了,第一章就到这里。记住我说的:基础不牢,地动山摇。把API的基础概念吃透了,后面的章节你会学得特别顺。