目录导读
- 欧易交易所API概述
- 欧易API接口申请步骤详解
- Python环境准备与依赖库安装
- 编写第一个交易脚本:获取实时行情
- 进阶实战:实现自动下单功能
- 常见错误排查与安全建议
- 高频问答合集
欧易交易所API概述
欧易交易所(OKX)作为全球领先的数字资产交易平台,其官网提供的API接口允许开发者通过程序化方式实现行情获取、交易执行、账户管理等功能,通过欧易交易所下载官方客户端或API,用户可以实现从数据监控到策略执行的完全自动化。

对于量化交易者而言,掌握欧易API接口的应用是构建交易机器人的基础,本文将基于欧易交易所官网的公开文档,详细演示如何从零开始申请API权限并通过Python编写简单的交易脚本。
核心接口类型:
- REST API:适用于订单管理、账户查询等非实时需求
- WebSocket API:适用于实时行情推送、订单状态更新
- 交易API:支持市价单、限价单、止盈止损等全部订单类型
欧易API接口申请步骤详解
前置条件:需在欧易交易所完成实名认证并拥有至少一个交易账户。
第1步:登录并进入API管理页面
- 访问欧易交易所官网并登录您的账户
- 点击右上角头像 → 选择“API管理”
- 进入API创建页面,注意官方要求每个账户最多绑定5组API Key
第2步:创建API Key
- 点击“创建API”按钮
- 根据需求选择权限:
- 读取权限:可获取账户余额、历史订单等数据
- 交易权限:允许通过API进行买卖操作(建议仅在需要时开启)
- 提币权限:高危权限,普通交易脚本无需开启
- 设置安全验证(必须完成邮箱+手机双重验证)
- 输入备注名称(如“Python交易脚本”)
- 点击确认后,系统会生成API Key、Secret Key、Passphrase三个要素
注意:Secret Key仅显示一次,务必妥善保管!若遗失,需重新生成。
第3步:配置IP白名单(推荐)
在API详情页可设置“访问限制”,勾选“仅允许以下IP访问”并填入您服务器的公网IP,这能有效防止API Key被盗用,是交易安全的第一道防线。
Python环境准备与依赖库安装
1 基础环境要求
- Python 3.7及以上版本(推荐3.9)
- 稳定的网络连接(建议使用VPN或海外服务器避免延迟)
2 安装核心依赖库
pip install requests hashlib hmac base64 json time
若需处理更复杂的交易逻辑,可额外安装:
pip install websocket-client pandas ta-lib
3 创建项目文件结构
crypto_bot/
│ config.py # 存储API密钥
│ okx_api.py # 封装API调用函数
│ trade_script.py # 主交易脚本
编写第一个交易脚本:获取实时行情
1 配置环境变量(config.py)
# config.py API_KEY = 'your_api_key_here' SECRET_KEY = 'your_secret_key_here' PASSPHRASE = 'your_passphrase_here' BASE_URL = 'https://www.okx.com' # 官方API域名 # 注意:若无法访问,可替换为备用域名
2 封装签名方法(okx_api.py)
欧易API采用HMAC-SHA256签名算法,所有请求必须携带OK-ACCESS-SIGN头:
import hmac
import base64
import hashlib
import requests
import json
from datetime import datetime
def generate_sign(timestamp, method, request_path, body=''):
message = timestamp + method.upper() + request_path + body
mac = hmac.new(
bytes(SECRET_KEY, encoding='utf8'),
bytes(message, encoding='utf8'),
digestmod=hashlib.sha256
)
return base64.b64encode(mac.digest()).decode()
def get_headers(timestamp, sign):
return {
'OK-ACCESS-KEY': API_KEY,
'OK-ACCESS-SIGN': sign,
'OK-ACCESS-TIMESTAMP': timestamp,
'OK-ACCESS-PASSPHRASE': PASSPHRASE,
'Content-Type': 'application/json'
}
def get_ticker(symbol='BTC-USDT'):
"""获取指定币对的最新行情"""
timestamp = datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%S.%f')[:-3] + 'Z'
request_path = f'/api/v5/market/ticker?instId={symbol}'
sign = generate_sign(timestamp, 'GET', request_path)
response = requests.get(
BASE_URL + request_path,
headers=get_headers(timestamp, sign)
)
return response.json()
3 主脚本运行(trade_script.py)
from okx_api import get_ticker
if __name__ == '__main__':
btc_data = get_ticker('BTC-USDT')
if btc_data['code'] == '0':
print(f"当前BTC价格:${btc_data['data'][0]['last']}")
print(f"24小时涨幅:{btc_data['data'][0]['change24h']}%")
else:
print(f"请求失败:{btc_data['msg']}")
运行结果示例:
当前BTC价格:$67234.5
24小时涨幅:+2.38%
进阶实战:实现自动下单功能
1 封装下单函数
在okx_api.py中添加:
def place_order(symbol='BTC-USDT', side='buy', ord_type='market', sz=0.001):
"""下单函数(以BTC为例)"""
timestamp = datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%S.%f')[:-3] + 'Z'
request_path = '/api/v5/trade/order'
body = {
'instId': symbol,
'tdMode': 'cash', # 现金交易
'side': side, # buy/sell
'ordType': ord_type, # market/limit
'sz': str(sz) # 数量
}
body_json = json.dumps(body)
sign = generate_sign(timestamp, 'POST', request_path, body_json)
response = requests.post(
BASE_URL + request_path,
headers=get_headers(timestamp, sign),
data=body_json
)
return response.json()
2 条件触发自动交易示例
# 当BTC价格跌破66000时自动买入0.001 BTC
current_price = float(get_ticker('BTC-USDT')['data'][0]['last'])
if current_price < 66000:
result = place_order('BTC-USDT', 'buy', 'market', 0.001)
if result['code'] == '0':
print(f"挂单成功!订单ID:{result['data'][0]['ordId']}")
else:
print(f"下单失败:{result['msg']}")
else:
print("当前价格未满足条件,等待监控...")
3 交易安全必读
- 对您的API权限进行最小化设置(仅开启必要的读取和交易权限)
- 定期更换API Key(建议每月一次)
- 使用
sandbox环境(欧易官方Sandbox地址:https://www.okx.com/sandbox)进行模拟测试
常见错误排查与安全建议
1 高频报错及解决方案
| 错误码 | 含义 | 解决方式 |
|---|---|---|
40001 |
签名失败 | 检查时间戳格式是否为ISO 8601标准 |
40002 |
参数错误 | 确认请求参数中instId格式(如BTC-USDT) |
50012 |
余额不足 | 检查账户可用余额是否足够支付交易费用 |
2 性能优化技巧
- 使用WebSocket代替REST API进行行情订阅(减少延迟)
- 在循环请求中添加
sleep(1)避免触发频率限制(每秒最多100次请求)
3 安全红线
- 切勿将API Key硬编码在公开仓库中(使用
.env文件或环境变量) - 如果怀疑Key泄露,立即在欧易交易所后台删除并重建
- 启用Google Authenticator二次验证
高频问答合集
Q1:欧易API接口申请后多久生效?
A:通常即时生效,如果遇到“Invalid API Key”错误,请检查是否已正确配置IP白名单,或等待5分钟后重试。
Q2:Python脚本无法连接API端点怎么办?
A:首先确认欧易交易所官网能否正常访问,若因地区限制,建议使用支持国际线路的代理服务器,或咨询官方客服获取备用域名。
Q3:调用下单接口返回Permission denied?
A:说明您的API Key未开启“交易权限”,请登录欧易交易所后台,在API管理页面编辑该Key,勾选“交易”权限后再试。
Q4:如何获取更复杂的订单类型(如限价单)?
A:将ordType参数改为limit,并新增px字段指定价格。
place_order('ETH-USDT', 'buy', 'limit', 0.1, px='1800.5')
Q5:脚本交易时如何控制最大亏损?
A:在交易逻辑中添加止损检查:当亏损达到预设比例(如5%)时,调用cancel_order或place_order(反向开仓)平仓。
通过本文的教程,您已经能够在欧易交易所官网申请API接口,并使用Python编写从行情获取到自动下单的完整交易脚本,建议初学者先在模拟盘(sandbox)测试策略,积累经验后再转换至实盘交易,数字资产投资风险较高,请务必设置严格的风控规则,理性参与市场。