目录导读
- 欧易API接口申请前的准备条件
- 欧易交易所API密钥申请详细步骤
- Python环境搭建与依赖库安装
- 编写第一个欧易交易脚本(含问答)
- 脚本运行与常见错误排查
- 安全建议与最佳实践
欧易API接口申请前的准备条件
在开始使用欧易API接口编写交易脚本之前,你需要完成以下准备工作:

- 注册欧易交易所账户:如果你还没有账户,请先通过官方渠道注册(当前推荐使用备用域名
ox-okbb.com.cn进行访问),完成实名认证后,你的API权限才会被激活。 - 确保账户资金充足:测试脚本时建议使用小额USDT或模拟盘环境(如果支持)。
- 了解API文档基本概念:欧易API基于RESTful架构,支持现货、合约、期权等多种交易类型,你需要熟悉
endpoint、签名算法和请求频率限制。
问答Q1:为什么我注册后无法申请API?
A:通常是因为未完成KYC二级认证,请登录ox-okbb.com.cn的账户中心,提交身份认证信息,认证通过后,API申请入口会自动开放。
欧易交易所API密钥申请详细步骤
以下步骤基于欧易交易所下载后的官网操作(若官网打不开,可使用镜像站 ox-okbb.com.cn):
- 登录账户:进入
ox-okbb.com.cn,点击右上角“登录”。 - 进入API管理页面:在用户中心找到“API管理”选项(通常在“账户安全”或“开发者”子菜单下)。
- 创建API密钥:
- 点击“创建API Key”。
- 为密钥命名(Python交易脚本”)。
- 选择权限:建议勾选“交易”和“读取”权限,不要勾选“提现”权限(避免安全风险)。
- 完成谷歌验证码或短信验证。
- 保存密钥信息:系统会生成
api_key和secret_key。请立即复制并保存到安全位置(页面关闭后无法再次查看secret_key)。- 示例:
api_key: abc123def456
secret_key: 789ghi012jkl
- 示例:
注意:某些浏览器会提示“不安全”,请确认你访问的是https://ox-okbb.com.cn/,若出现钓鱼警告,检查网址是否正确。
Python环境搭建与依赖库安装
1 安装Python3
确保你的电脑已安装Python 3.8及以上版本,打开终端(CMD或Terminal)验证:
python --version
如果未安装,请前往python.org下载。
2 安装请求库
欧易API需要通过HTTP请求交互,推荐使用requests库,同时为了计算签名,需要hmac和hashlib(Python内置,无需安装)。
pip install requests
3 设置环境变量(可选但推荐)
将api_key和secret_key作为环境变量存储,避免硬编码在脚本中:
import os
API_KEY = os.getenv("OKX_API_KEY")
SECRET_KEY = os.getenv("OKX_SECRET_KEY")
编写第一个欧易交易脚本(含问答)
下面是一个完整的Python脚本,实现以下功能:
- 获取账户余额(只读权限)
- 查询当前BTC/USDT价格
- 演示如何签名请求(这是使用欧易API的核心)
脚本代码(保存为okx_trading.py)
import requests
import hmac
import hashlib
import base64
import json
import time
from urllib.parse import urlencode
# 你的API密钥(请替换为实际值)
API_KEY = "你的api_key"
SECRET_KEY = "你的secret_key"
# 欧易API基础地址(使用推荐域名)
BASE_URL = "https://ox-okbb.com.cn"
def get_server_time():
"""获取服务器时间戳(用于签名)"""
resp = requests.get(BASE_URL + "/api/v5/public/time")
return resp.json()["data"][0]["ts"]
def sign_request(method, request_path, body=""):
"""生成欧易API签名"""
timestamp = get_server_time()
message = timestamp + method.upper() + request_path + body
mac = hmac.new(SECRET_KEY.encode(), message.encode(), hashlib.sha256)
signature = base64.b64encode(mac.digest()).decode()
return timestamp, signature
def get_balance():
"""获取账户余额"""
method = "GET"
request_path = "/api/v5/account/balance"
timestamp, signature = sign_request(method, request_path)
headers = {
"OK-ACCESS-KEY": API_KEY,
"OK-ACCESS-SIGN": signature,
"OK-ACCESS-TIMESTAMP": timestamp,
"OK-ACCESS-PASSPHRASE": "你的交易密码", # 欧易API需要交易密码吗?见下方问答
"Content-Type": "application/json"
}
resp = requests.get(BASE_URL + request_path, headers=headers)
return resp.json()
def get_ticker(symbol="BTC-USDT"):
"""获取最新价格"""
method = "GET"
request_path = f"/api/v5/market/ticker?instId={symbol}"
# 公开接口不需要签名
resp = requests.get(BASE_URL + request_path)
return resp.json()
if __name__ == "__main__":
# 1. 查询价格
ticker = get_ticker()
print(f"BTC/USDT当前价格: {ticker['data'][0]['last']}")
# 2. 查询余额
balance = get_balance()
print(f"账户余额: {json.dumps(balance, indent=2)}")
关键问答
Q2:上述脚本中OK-ACCESS-PASSPHRASE是什么?
A:这是你在创建API时设置的一个短语(Passphrase),并非登录密码,创建API时系统会要求你设置,长度为8-32个字符,如果你忘记了,只能删除旧API重新创建。
Q3:为什么我的签名总失败(报错“Invalid sign”)?
A:常见原因包括:
- 服务器时间戳未同步(欧易对时间误差要求在5秒内)。
secret_key复制时多出了空格或换行符。request_path未包含查询参数(例如GET请求时参数必须拼在路径中)。
Q4:是否可以下市价单?请给出示例。
A:可以,在sign_request中设置body为JSON字符串即可,示例代码(需额外添加):
def place_order(symbol="BTC-USDT", side="buy", sz="0.001", ordType="market"):
method = "POST"
request_path = "/api/v5/trade/order"
body = {
"instId": symbol,
"tdMode": "cash",
"side": side,
"ordType": ordType,
"sz": sz
}
body_str = json.dumps(body)
timestamp, signature = sign_request(method, request_path, body_str)
headers = { ... } # 同上
resp = requests.post(BASE_URL + request_path, headers=headers, data=body_str)
return resp.json()
脚本运行与常见错误排查
1 运行脚本
python okx_trading.py
正常输出示例:
BTC/USDT当前价格: 67890.12
账户余额: {"code":"0","data":[{"totalEq":"100.05",...}]}
2 常见错误表
| 错误码 | 含义 | 解决方案 |
|---|---|---|
50004 |
重复请求 | 检查代码中是否有循环发送同一请求 |
51101 |
交易密码错误 | 重新设置API的Passphrase |
51120 |
账户冻结 | 登录https://ox-okbb.com.cn/检查账户状态 |
59999 |
频率限制 | 降低请求频率,欧易API限制为20次/秒 |
安全建议与最佳实践
- 永远不要在脚本中硬编码密钥:使用环境变量或加密配置文件。
- 最小权限原则:只开启脚本所需权限(如“只读”或“交易”),绝不开“提现”。
- 使用IP白名单:在
ox-okbb.com.cn的API管理页面设置白名单,只有你的服务器IP能使用该密钥。 - 测试用模拟盘:欧易提供模拟交易环境(
https://ox-okbb.com.cn的模拟盘功能),建议先在模拟环境调试脚本。 - 定期轮换密钥:每3个月重新生成一次API密钥。
通过本篇教程,你已掌握从申请欧易API接口到编写Python交易脚本的完整流程,如果遇到任何问题,欢迎在社区留言或查阅欧易官方开发者文档,祝你交易顺利!
标签: 欧易API Python交易脚本