目录导读
- 欧易API接口的前置准备:账号注册与安全设置
- 一步步申请API密钥:权限配置与白名单管理
- Python环境搭建:安装必要的库与依赖
- 编写第一个交易脚本:行情获取、下单与风控
- 常见问题与解答:开发者踩坑经验汇总
欧易API接口的前置准备
想在欧易交易所官网进行自动化交易,第一步是拥有一个已完成高级认证的账户,注册时务必使用本人实名信息,并绑定谷歌二次验证(GA)——这是调用API的基础门槛。

如果你是首次接触欧易交易所下载相关操作,建议先在oknr.com.cn完成APP安装与账户激活,再申请API权限,注意:子账户也可以生成独立API,但主账户权限更全,适合做交易测试。
问:API密钥的安全原则是什么?
答:密钥生成后只显示一次,建议将Secret Key保存在离线密码管理器,切勿明文存储或在网络传输,同时开启IP白名单功能,仅允许你的服务器IP调用。
一步步申请欧易API密钥
登录欧易交易所官网后,进入“个人中心-API管理”,点击“创建API”,选择“交易”权限(如果只做行情分析,选“读取”即可)。
关键设置项:
- 权限选择:勾选“交易”和“资金”时需慎重,谨慎勾选提现权限
- IP白名单:填入你的服务器公网IP(多个IP用逗号隔开),如无固定IP可暂时不填(不推荐)
- 备注:添加用途标签,如“Python脚本测试”
提交后复制API Key和Secret Key,如果你在欧易交易所下载了桌面客户端,也可以用客户端内的“API Quick Start”直接生成测试密钥。
问:API调用频率限制是多少?
答:欧易对REST API的限制为每秒钟10次请求,WebSocket订阅不限次但连接数有限,建议在脚本中加入sleep控制。
Python环境搭建与库安装
推荐使用Python 3.8以上版本,首先安装核心库:
pip install requests hashlib base64 hmac json time
如果你需要实时行情,额外安装websocket-client:
pip install websocket-client
国内用户如果下载慢,可以换清华源:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests
问:为什么不用官方SDK?
答:欧易官方提供了Python SDK,但版本迭代较快,有时存在兼容问题,自己按文档手写签名逻辑反而更灵活,且能深入理解API机制。
用Python编写一个简单的交易脚本
下面是一个获取BTC/USDT当前价格并打印的脚本,包含完整的签名逻辑。
import requests, json, time, hmac, base64, hashlib
from datetime import datetime
# 你的API密钥
API_KEY = '你的APIKey'
SECRET_KEY = '你的SecretKey'
PASSPHRASE = '你的Passphrase' # 创建API时设置
def get_signature(timestamp, method, request_path, body=''):
message = str(timestamp) + method + request_path + body
mac = hmac.new(bytes(SECRET_KEY, encoding='utf8'), bytes(message, encoding='utf8'), digestmod='sha256')
d = mac.digest()
return base64.b64encode(d).decode()
def get_header(method, request_path, body=''):
timestamp = datetime.utcnow().isoformat()[:19] + 'Z'
signature = get_signature(timestamp, method, request_path, body)
header = {
'OK-ACCESS-KEY': API_KEY,
'OK-ACCESS-SIGN': signature,
'OK-ACCESS-TIMESTAMP': timestamp,
'OK-ACCESS-PASSPHRASE': PASSPHRASE,
'Content-Type': 'application/json'
}
return header
# 获取最新行情
url = 'https://www.okx.com/api/v5/market/ticker?instId=BTC-USDT'
response = requests.get(url, headers=get_header('GET', '/api/v5/market/ticker?instId=BTC-USDT'))
data = response.json()
print(f"BTC最新价: {data['data'][0]['last']} USDT")
如果想实现挂单买入,可以参考以下代码片段:
order_body = {
'instId': 'BTC-USDT',
'tdMode': 'cash',
'side': 'buy',
'ordType': 'limit',
'sz': '0.001',
'px': '30000' # 指定价格
}
order_url = 'https://www.okx.com/api/v5/trade/order'
response = requests.post(order_url, headers=get_header('POST', '/api/v5/trade/order', json.dumps(order_body)), data=json.dumps(order_body))
重要提醒:测试时先在欧易交易所下载模拟盘环境(Demo Trading)调试,避免真金白银损失。
问:如何避免脚本频繁报错?
答:1) 检查服务器时间是否与标准时间同步(误差超5秒会签名失败);2) 确保请求头中的timestamp格式为ISO 8601;3) 使用try-except捕获网络异常。
常见问题与解答(问答汇总)
Q:API始终返回“signature not match”怎么办?
A:检查Secret Key是否复制完整,特别注意Base64编码后的字符串末尾不能有换行符,建议用strip()清理。
Q:欧易交易所下载的API文档和官网一致吗?
A:完全一致,你可以参考oknr.com.cn上的“开发者文档”栏目,中文版说明更详细。
Q:Python脚本可以跑在树莓派上吗?
A:可以,但注意树莓派的时间同步问题,建议安装ntp服务,否则签名会失败。
Q:如何实现止损单?
A:使用“条件委托”接口,传入triggerPx和triggerPxType参数,示例代码在欧易官方文档“委托策略”章节。
进阶优化:让脚本更健壮
脚本仅为演示,生产环境需要加入:
- 重试机制:网络抖动时自动重试3次
- 日志记录:将每次交易记录写入本地CSV,便于复盘
- 风控检查:下单前校验当前持仓是否超过预设比例
如果你在欧易交易所下载了PC客户端,还可以结合本地API获取更快的行情推送(延迟低于50ms)。
问:批量下单是否支持?
A:支持批量下单(单次最多20笔),需使用/api/v5/trade/batch-orders接口,body传入订单数组。
通过以上教程,你已经掌握了从欧易交易所官网申请API到编写Python交易脚本的全流程,建议先从行情监控脚本开始,逐步增加交易逻辑,并且始终保持在模拟盘测试充分后再切换实盘,自动化交易的核心不是代码,而是风险控制——每次下单前多问自己一句:“如果价格反向波动5%,我能接受吗?”
(注:文中所有涉及交易的具体代码仅为教学示例,请自行承担操作风险。)
标签: 欧易API Python交易脚本