量化喵是独立第三方信息站,不是欧易(OKX)官方。站内含推广链接。 完整披露 →

欧易 · 对比

欧易和币安 API 接入差在哪:Passphrase、签名、模拟环境与限速对照

欧易和币安都有 REST 和 WebSocket API,ccxt 两家都支持;内置网格、跟单、模拟环境两家也都有。按「有没有」来比,比不出差别。写脚本时真正要改的地方在接入细节上:凭证有几项、签名怎么算、模拟环境怎么切、限速按什么计。

出处:欧易侧是 API v5 文档,币安侧是现货 API 文档。币安的合约接口是另一套文档,这里没有覆盖。本站主要写欧易方向的内容,下面只对照接入规则,不评哪家更好。

欧易和币安 API 对照表

项目欧易(API v5)币安(现货 API)
凭证APIKey、SecretKey、Passphrase 三项;Passphrase 自己设,忘了无法恢复API Key 和 Secret Key 两项;密钥支持 HMAC、RSA、Ed25519 三种,没有 Passphrase
凭证放在哪四个请求头:OK-ACCESS-KEY、OK-ACCESS-SIGN、OK-ACCESS-TIMESTAMP、OK-ACCESS-PASSPHRASEAPI Key 放请求头 X-MBX-APIKEY;签名作为 signature 参数放在 query string 或请求体里
签名内容timestamp + method + requestPath + body 拼成的字符串,HMAC SHA256 后 Base64 编码query string 与请求体直接拼接;HMAC 密钥用 HMAC-SHA-256,输出十六进制字符串
时间戳请求头里的 ISO 8601 UTC 时间;与服务器时间相差超过 30 秒会被拒绝(错误码 50102)timestamp 参数,毫秒或微秒;recvWindow 不传默认 5000 毫秒,最大 60000 毫秒
模拟环境的 REST 地址与实盘同一个主机 https://openapi.okx.com,靠请求头 x-simulated-trading: 1 区分独立域名:Demo Mode 是 https://demo-api.binance.com/api;Spot Testnet 是另一套独立环境
模拟环境的 Key在模拟交易里单独创建登录后进 Binance Demo Trading,在 API Key Management 页创建
限速口径每个接口各有限速;公共 REST 按 IP,私有 REST 按 User ID(子账户有单独的 User ID);下单、改单、撤单在 Instrument ID 级别定义按 IP 计,不按 API Key;分 REQUEST_WEIGHT、ORDERS、RAW_REQUESTS 三类
超限之后返回错误码 50011HTTP 429;不退避继续请求会被封 IP(HTTP 418),封禁时长从 2 分钟到 3 天
WebSocket 保活N 秒(N 小于 30)没收到新消息时,客户端自己发字符串 ping,等服务器回 pong服务器每 20 秒发一个 ping 帧,一分钟内没收到 pong 帧就断开;单个连接最长 24 小时
WebSocket 建连限制3 次/秒,按 IP每 5 分钟 300 个连接,按 IP

各行出处。欧易:创建我的APIKey、REST 请求验证、模拟盘交易、限速、WebSocket 连接。币安:Request security、Limits、Demo Mode、WebSocket API general information(WebSocket 两行出自这一页)。

欧易多一个 Passphrase,币安没有

欧易文档写的是:创建 APIKey 后会得到三项信息,APIKey 和 SecretKey 由平台随机生成,Passphrase 由你自己提供;平台只保存 Passphrase 加密后的哈希值,忘了无法恢复,只能重新生成一把 APIKey。每个私有请求都要把它放进 OK-ACCESS-PASSPHRASE 请求头。币安的鉴权只有 API Key 和 Secret Key(或者 RSA、Ed25519 私钥),文档里没有 Passphrase 这一项。

落到 ccxt 上,就是初始化时差一个字段:

import ccxt

okx = ccxt.okx({
    'apiKey':   '你的_apiKey',
    'secret':   '你的_secret',
    'password': '你的_Passphrase',   # 欧易的第三项,ccxt 里叫 password
})

binance = ccxt.binance({
    'apiKey': '你的_apiKey',
    'secret': '你的_secret',         # 没有第三项
})

从币安迁到欧易时,这一项漏填就过不了鉴权。password 填的是建 Key 时设的 Passphrase,不是登录密码。建 Key 的步骤见 欧易 API 量化入门。

模拟环境怎么切:欧易加请求头,币安换域名

这是两家差别最大的一处。

欧易:模拟盘和实盘的 REST 地址是同一个 https://openapi.okx.com,区别只在请求头里有没有 x-simulated-trading: 1。看 URL 分不出环境,请求头漏了,请求就落到实盘。用 ccxt 时调 okx.set_sandbox_mode(True),并打印 okx.headers.get('x-simulated-trading') 自检,细节见 欧易模拟盘怎么用。WebSocket 则是单独的 wspap.okx.com 地址。

币安:现货有两套模拟环境,各有自己的域名。Demo Mode 的 REST 地址是 https://demo-api.binance.com/api;Spot Testnet 是另一套。币安文档对两者的对照是:Testnet 的价格和订单簿独立于实盘,余额每月重置;Demo Mode 的价格和订单簿与实盘相近,余额可以随时在界面上重置。文档还写了一句:不要假设在 Demo Mode 里有效的策略在实盘也有效。

所以在币安,地址写对了环境就对了;在欧易,地址永远是同一个,要查的是请求头。两家的模拟环境都要单独建 Key。用 ccxt 接币安的模拟环境时,先打印 binance.urls['api'],确认它实际指向的是 Testnet 还是 Demo Mode。

限速按什么算:欧易看接口和账户,币安看 IP 和权重

欧易的限速说明是:每个接口的限速都不同,写在各接口的详情里;公共未经身份验证的 REST 限速基于 IP 地址,私有 REST 限速基于 User ID,子账户具有单独的 User ID;下单、改单、撤单的限速相互独立,并在 Instrument ID 级别定义。超限时返回错误码 50011。此外子账户维度每 2 秒最多 1000 个订单相关请求,超出返回 50061。

币安现货 API 的说法是:限速基于 IP,而不是 API Key。请求按权重累计,每个响应都带 X-MBX-USED-WEIGHT-(intervalNum)(intervalLetter) 头,告诉你这个 IP 当前用掉了多少;当前的限额在 /api/v3/exchangeInfo 的 rateLimits 数组里查。超限返回 HTTP 429,收到 429 还不退避会被封 IP(HTTP 418),封禁时长从 2 分钟到 3 天,响应里的 Retry-After 头给出要等的秒数。

对写脚本的影响:在币安,同一个 IP 上跑的几个程序共用一份权重额度;在欧易,私有接口按账户算,一个交易对上的下单频率不够用时,文档给的办法是通过多个子账户交易。欧易各接口的具体数字和处理方式见 欧易 API 限速。

用 ccxt 写的策略换交易所要改哪几处

  • 初始化字段。欧易三项,币安两项,见上文。
  • 模拟环境的切法和自检。欧易查请求头,币安查地址。
  • 交易对规格。最小下单量、价格和数量精度两家不同,从 load_markets() 返回的 limits 和 precision 里读,不要写死。
  • 限速和报错处理。欧易的文档按错误码说明(限速是 50011),币安的文档按 HTTP 状态码说明(429 和 418),两边的重试分支要各写各的。欧易的报错怎么分类见 欧易 API 报错排查。
  • 时间同步。欧易允许的偏差是 30 秒;币安由 recvWindow 决定,默认 5000 毫秒。本机时钟不准时,币安会先报错。
风险提示:加密资产价格波动剧烈,本金可能大幅缩水甚至归零。交易所和 API 只是工具,不保证盈利;合约与杠杆交易可能导致 100% 本金亏损。本文是两家接口文档的对照,不构成任何投资建议,也不构成对任何交易所的推荐。

常见问题

欧易和币安的 API 都能用 ccxt 连吗?

可以。ccxt 同时支持两家,下单、查余额这些方法名是统一的,换交易所主要改初始化那几行:欧易要填 apiKey、secret 和 password 三项,其中 password 就是建 Key 时设的 Passphrase;币安只有 apiKey 和 secret。交易对的最小下单量、限速和报错码两家各不相同,迁移时要分别核对。

币安的 Spot Testnet 和 Demo Mode 有什么区别?

按币安现货 API 文档的对照:Testnet 的价格和订单簿独立于实盘,余额每月重置,有时会比实盘先上新功能;Demo Mode 的价格和订单簿与实盘相近,功能与实盘相同,余额可以随时在界面上重置。两者各有自己的地址,Demo Mode 的 REST 地址是 https://demo-api.binance.com/api。文档同时提醒,不要假设在 Demo Mode 里有效的策略在实盘也有效。