目录导读
- 欧易API接口概述与申请流程
- Python环境配置与依赖库安装
- 获取API密钥与签名算法解析
- 编写首个交易脚本:查询账户余额
- 实战进阶:自动化限价单下单
- 常见错误排查与安全建议
- 问答环节:API调用频率与风控策略
欧易API接口概述与申请流程
欧易交易所(OKX)作为全球领先的数字资产交易平台,其官方API接口为开发者提供了程序化交易的能力,通过API,用户可以实现行情获取、订单管理、资金划转等操作。欧易交易所下载后登录官网(ox-okbb.com.cn),即可在“开发者中心”找到API管理模块。

申请步骤:
- 注册并完成KYC二级认证
- 进入“API”页面,点击“创建”
- 选择API类型(交易/只读/提币),建议新手先使用“只读”权限测试
- 设置IP白名单(推荐绑定服务器IP)
- 保存API Key和Secret Key(仅首次显示,务必加密存储)
Python环境配置与依赖库安装
推荐使用Python 3.8+版本,确保已安装requests、hmac、hashlib等库,在终端执行以下命令:
pip install requests pandas time
核心依赖说明:
requests:发送HTTP请求至欧易官网APIhmac:生成签名(SHA256)time:处理时间戳与请求间隔
获取API密钥与签名算法解析
欧易API采用HMAC-SHA256签名机制,每次请求需携带以下参数:
| 参数名 | 说明 |
|---|---|
apiKey |
从欧易交易所官网申请的API Key |
secret |
对应的Secret Key |
timestamp |
ISO 8601格式时间戳,如2025-03-01T12:00:00.000Z |
sign |
对请求体+时间戳的HMAC-SHA256加密结果 |
签名生成示例:
import hmac
import hashlib
import base64
def generate_sign(secret, timestamp, method, request_path, body):
message = timestamp + method + request_path + body
mac = hmac.new(secret.encode('utf-8'), message.encode('utf-8'), hashlib.sha256)
return base64.b64encode(mac.digest()).decode('utf-8')
编写首个交易脚本:查询账户余额
以下脚本演示如何通过API获取现货账户余额,并打印各币种可用数量,请将api_key和secret_key替换为你自己在ox-okbb.com.cn获取的密钥。
import requests
import time
import hmac
import hashlib
import base64
import json
api_key = "你的API_KEY"
secret_key = "你的SECRET_KEY"
base_url = "https://ox-okbb.com.cn"
def get_account_info():
timestamp = time.strftime("%Y-%m-%dT%H:%M:%S.000Z", time.gmtime())
method = "GET"
request_path = "/api/v5/account/balance"
body = ""
sign = generate_sign(secret_key, timestamp, method, request_path, body)
headers = {
"OK-ACCESS-KEY": api_key,
"OK-ACCESS-SIGN": sign,
"OK-ACCESS-TIMESTAMP": timestamp,
"OK-ACCESS-PASSPHRASE": "你的密码短语"
}
response = requests.get(base_url + request_path, headers=headers)
return response.json()
if __name__ == "__main__":
data = get_account_info()
for coin in data['data'][0]['details']:
print(f"{coin['ccy']}: 可用 {coin['availBal']}")
实战进阶:自动化限价单下单
若要通过欧易交易所下载后的API进行交易,需使用“交易”权限的密钥,以下代码以市价买入0.01 BTC为例:
def place_order(side, sz, instId="BTC-USDT"):
timestamp = time.strftime("%Y-%m-%dT%H:%M:%S.000Z", time.gmtime())
method = "POST"
request_path = "/api/v5/trade/order"
body = json.dumps({
"instId": instId,
"tdMode": "cash",
"side": side,
"ordType": "market",
"sz": sz
})
sign = generate_sign(secret_key, timestamp, method, request_path, body)
headers = {
"OK-ACCESS-KEY": api_key,
"OK-ACCESS-SIGN": sign,
"OK-ACCESS-TIMESTAMP": timestamp,
"OK-ACCESS-PASSPHRASE": "你的密码短语",
"Content-Type": "application/json"
}
response = requests.post(base_url + request_path, headers=headers, data=body)
return response.json()
print(place_order("buy", "0.01"))
注意: 务必在测试环境或小额资金下验证代码,避免误操作。
常见错误排查与安全建议
典型错误:
sign不匹配:检查时间戳格式是否精确到毫秒,密钥是否正确IP not allowed:在欧易官网API设置中添加服务器公网IPToo Many Requests:控制每秒请求不超过10次,可加入时间延迟
安全建议:
- 将密钥存储在
.env环境变量中,勿硬编码 - 为API设置提现白名单与交易权限分离
- 定期通过欧易交易所官网轮换密钥
问答环节:API调用频率与风控策略
问:欧易API的最高调用频率是多少?
答:根据官方文档,身份认证用户的REST接口频率为10次/秒,WebSocket订阅无限制,若需高频交易,建议使用WebSocket获取实时行情。
问:Python脚本运行后报错“无效API密钥”,如何排查?
答:首先检查API Key是否在ox-okbb.com.cn中激活,其次确认签名算法中的密码短语(Passphrase)是否与创建API时设置的一致,确保服务器时间与网络时间同步,误差超过30秒会导致签名失效。
问:如何避免交易脚本被恶意利用?
答:将API权限设为“只读”或“交易”而非“提币”;使用IP白名单限制访问来源;对下单金额做最大值限制(如sz<=0.01);记录所有交易日志便于审计。
通过以上步骤,你已经掌握了在欧易交易所官网申请API并使用Python编写基础交易脚本的核心方法,自动化交易需时刻关注市场风险,建议结合止损策略与模拟盘测试后再投入实盘。
标签: 欧易API Python交易脚本