随着程序化交易在币圈掀起浪潮,越来越多投资者把目光投向欧易(OKX)的 API 接口。它不仅能快速拉取实时行情、自动下单,还能与自定义策略无缝衔接。本文将带你一口气掌握 欧易API 从开户、密钥生成到实盘部署的全流程,并穿插高频问题解析,让你边学边做,少走弯路。
第一步:账户准备与安全认证
核心关键词:欧易交易所、数字资产、身份认证
- 账号注册
打开欧易交易所官网,填写邮箱或手机号并完成验证码验证。 - 身份认证(KYC)
在“安全设置”中上传有效证件,完成人脸比对。越高级别的验证,API 提币额度越大。 - 绑定二次验证
谷歌验证器 + 手机短信 = 双重保险,后续创建 API 密钥时必须打开二次验证才能成功。
👉 掌握安全加固 3 步骤,给 API 操作加 10 倍保险
第二步:创建与管理 API 密钥
核心关键词:API密钥、私钥、权限管理
进入“个人中心 → API 管理”,选择“创建 API”。
- 名称:建议用环境命名,如「GridBot_Prod」。
权限:
- 读取(行情、余额查询)
- 交易(下单、撤单)
- 提现(如需提币脚本,再勾选)
- IP 白名单:
只填写你服务器或本地网络的固定公网 IP;动态 IP 可留空,但风险更高。 - 生成长串 API密钥、Secret 和 Passphrase
这三个参数是调用私有接口的钥匙,立即离线备份到加密 U 盘,千万别写进代码仓库!
第三步:官方文档速读与调试秘籍
核心关键词:API文档、GET、POST、JSON
目录结构
- Public REST:行情、K 线、深度,无需签名。
- Private REST:下单、资产查询,需要 HMAC-SHA256 签名。
- Websocket v5:毫秒级行情推送与私有频道账户推送,适合高频策略。
通用路径
REST 端点示例:https://okxdog.com/api/v5/market/ticker?instId=BTC-USDT所有参数按 英文字母升序 排序后,拼接待加密字符串;而后用 Secret 进行 HMAC-SHA256 签名。
本地调试三板斧
- curl 命令成功返回 200,再写脚本;
- Postman 预设环境变量,方便切换模拟盘/实盘;
- 代理抓包(Charles/Fiddler)定位签名字符串是否漏参。
第四步:Python 快速上手案例
核心关键词:Python、量化交易、自动下单
以下示例演示如何 1 秒内获取 BTC-USDT 最新成交价并模拟下单,适合新手照抄即用:
import time, hmac, hashlib, requests, json
API_KEY = "你的API密钥"
SECRET = "你的Secret"
PASSPHRASE = "你的Passphrase"
BASE_URL = "https://www.okx.com"
def query_latest_price(inst_id):
url = f"{BASE_URL}/api/v5/market/ticker?instId={inst_id}"
r = requests.get(url)
return r.json()['data'][0]['last']
def place_market_order(inst_id, side, size):
path = "/api/v5/trade/order"
timestamp = str(time.time())
body = json.dumps({
"instId": inst_id,
"tdMode": "cash",
"side": side,
"ordType": "market",
"sz": str(size)
})
sign = build_sign(timestamp, "POST", path, body)
headers = {
"OK-ACCESS-KEY": API_KEY,
"OK-ACCESS-SIGN": sign,
"OK-ACCESS-TIMESTAMP": timestamp,
"OK-ACCESS-PASSPHRASE": PASSPHRASE,
"Content-Type": "application/json"
}
resp = requests.post(BASE_URL+path, headers=headers, data=body)
return resp.json()
def build_sign(ts, method, path, body):
msg = f"{ts}{method.upper()}{path}{body}"
mac = hmac.new(SECRET.encode(), msg.encode(), hashlib.sha256)
return mac.hexdigest()
if __name__ == "__main__":
price = query_latest_price("BTC-USDT")
print("BTC 最新成交价:", price)
# 下单买入 0.001 BTC
result = place_market_order("BTC-USDT", "buy", 0.001)
print(result)运行后,可在「资产-交易记录」里查看订单是否创建成功。
第五步:风险监控与升级
核心关键词:止损、风控、API限额
- 实时风控模块
用 Websocket 私有账户频道,推送每笔持仓变化。程序监测若亏损>5%,立即平仓并提醒邮件。 - 额度管理
每日可能触发 200 req/2s、30下单/2s 限制,超频返回 429。建议在代码中加速率限制装饰器。 - 密钥轮换
30 天更换一次 API 密钥;更换后立即停用旧密钥,防止泄露导致资产损失。
常见问题解答 FAQ
Q1:官方文档全是英文,有没有中文版?
A:访问欧易开发者中心,右上角下拉语言选择“简体中文”即可。
Q2:可以调用 API 从子账户直接提现吗?
A:可以,但需:
- 子账户开通提币权限
- 主账户 API 绑定对应子账户 UID
- 提币地址也需经过主账户统一审核。
Q3:如何区分模拟盘(Demo)与实盘?
A:模拟盘 REST 端点:“https://www.okx.com” 不变,但下单前 tdMode 设成 demo;WebSocket 主机地址则为 wss://wspap.okx.com:8443。
Q4:出现“Sign verification failed”怎么办?
A:第一时间检查:
- 时间戳
OK-ACCESS-TIMESTAMP与服务器误差不得>30 秒,务必同步 NTP; - body 是否 json.dumps 后去空格的纯字符串;
- 签名是否使用小写 HEX。
Q5:本地调试一切 OK,部署到云服务器却失败?
A:多为 IP 白名单未放行云主机或服务器系统时间错乱。记得把服务器公网 IP 写进 API 设置并开启 NTP 校时。
写在最后
通过 欧易API,你可以在自动化策略、量化交易甚至风控报警方面大展拳脚。法律与合规是硬边界,合规使用、分散风险才是长久之道。愿你在代码的世界里,把每一次行情波动都转化为可度量的收益。