目录导读
- 欧易API接口概述与申请步骤
- Python环境搭建与依赖库安装
- API密钥获取与安全设置
- 编写第一个Python交易脚本:行情获取
- 实战:自动下单与持仓查询
- 常见问题与错误处理
- 问答环节:开发者高频问题解析
欧易API接口概述与申请步骤
欧易交易所官网(ox-okbb.com.cn)为全球用户提供强大的API接口,支持现货、合约、期权等交易功能,通过API,开发者可以自动化执行交易策略、实时获取市场数据并管理账户。

申请流程:
- 登录欧易交易所下载并完成实名认证。
- 进入“API管理”页面,点击“创建API”。
- 填写备注(如“Python交易脚本”),选择权限(建议勾选“读取”和“交易”)。
- 设置IP白名单(可选,增强安全性)。
- 保存生成的
API Key和Secret Key(注意:密钥仅显示一次,务必妥善保管)。
Python环境搭建与依赖库安装
确保已安装Python 3.7+版本,并使用以下命令安装核心库:
pip install requests hashlib hmac base64
若需处理WebSocket实时行情,可额外安装:
pip install websocket-client
API密钥获取与安全设置
在欧易交易所官网的API管理页面创建密钥后,建议:
- 不将密钥硬编码在脚本中,而是使用环境变量存储。
- 限制IP白名单,仅允许服务器IP访问。
- 定期轮换密钥,降低泄露风险。
示例密钥存储(Linux/Mac):
export OKX_API_KEY="your-api-key" export OKX_SECRET_KEY="your-secret-key" export OKX_PASSPHRASE="your-passphrase"
编写第一个Python交易脚本:行情获取
以下代码演示如何调用欧易的GET /api/v5/market/ticker接口获取BTC/USDT实时价格:
import requests
import json
def get_ticker(symbol="BTC-USDT"):
url = "https://www.okx.com/api/v5/market/ticker"
params = {"instId": symbol}
resp = requests.get(url, params=params)
return resp.json()
if __name__ == "__main__":
data = get_ticker()
print("BTC最新价格:", data["data"][0]["last"])
注意: 若使用子账号或自定义域名,请替换www.okx.com为您的专属API域名。
实战:自动下单与持仓查询
1 签名生成(HMAC-SHA256)
所有需要签名的私密接口,必须按以下步骤生成签名:
- 将时间戳、请求方法、请求路径、请求体拼接成字符串。
- 使用
HMAC-SHA256算法结合Secret Key生成签名。 - 将签名与
API Key、Passphrase、时间戳一同放入请求头。
2 限价单示例
import hmac
import base64
import datetime
import requests
def place_order(symbol, side, sz, px):
timestamp = datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%S.%f")[:-3] + "Z"
body = json.dumps({
"instId": symbol,
"tdMode": "cash",
"side": side,
"ordType": "limit",
"sz": str(sz),
"px": str(px)
})
sign = base64.b64encode(
hmac.new(api_secret.encode(), (timestamp + "POST" + "/api/v5/trade/order" + body).encode(), "sha256").digest()
).decode()
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("https://www.okx.com/api/v5/trade/order", headers=headers, data=body)
return resp.json()
3 查询持仓
def get_positions():
timestamp = datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%S.%f")[:-3] + "Z"
sign = base64.b64encode(
hmac.new(api_secret.encode(), (timestamp + "GET" + "/api/v5/account/positions").encode(), "sha256").digest()
).decode()
headers = {...} # 同上
resp = requests.get("https://www.okx.com/api/v5/account/positions", headers=headers)
return resp.json()
常见问题与错误处理
Q1:API返回401错误怎么办?
- 检查时间戳是否与服务器相差5秒以上。
- 确认
API Key、Secret Key、Passphrase无误。 - 若启用了IP白名单,确保请求IP在白名单中。
Q2:如何订阅实时行情?
使用WebSocket协议连接wss://ws.okx.com:8443/ws/v5/public,示例代码可参考欧易官方文档。
Q3:交易脚本如何添加止损?
利用POST /api/v5/trade/order-algo接口设置止损止盈参数。
问答环节:开发者高频问题解析
问:欧易交易所官网API是否需要绑定手机验证?
答:创建API时需短信或邮箱验证,但后续调用API无需验证器,建议启用API交易密码增强安全。
问:Python脚本中如何避免订单重复?
答:利用clOrdId字段传入唯一客户端ID,交易所会检测重复订单。
问:欧易交易所下载的API文档支持哪些语言?
答:官方提供中文、英文、韩文等多语言文档,并附有Python、Java、Go等代码示例。
问:能否通过API修改杠杆倍数?
答:可以,调用POST /api/v5/account/set-leverage接口调整。
问:如何确保脚本24小时稳定运行?
答:建议部署在云服务器,并添加异常重试机制与日志记录。
通过以上教程,您已掌握使用Python调用欧易交易所官网API的核心技巧,从行情获取到自动化交易,每一步都需注重安全与效率,如需深度开发,建议结合欧易交易所下载的官方示例库与社区资源,快速构建属于自己的交易系统。