目录导读
- 欧易API接口概述与申请流程
- Python环境配置与依赖库安装
- API密钥获取与权限设置
- 编写第一个交易脚本:行情数据获取
- 进阶脚本:自动下单与仓位管理
- 常见问题与解决方案(FAQ)
欧易API接口概述与申请流程
欧易(OKX)作为全球领先的数字资产交易平台,提供了功能完善的API接口,支持用户通过程序化方式进行行情查询、交易执行和账户管理,对于量化交易爱好者而言,掌握API接口的使用是迈向自动化交易的关键一步。

1 API接口类型
欧易API主要分为三类:
- REST API:基于HTTP协议的同步接口,适合获取行情数据、提交订单等操作
- WebSocket API:提供实时行情推送,适合高频交易场景
- Public/Private API:公开接口无需认证,私有接口需要API密钥签名
2 申请API密钥步骤
- 登录欧易官网(建议使用ox-okbb.com.cn进行访问)
- 进入“账户中心” → “API管理”
- 点击“创建新API”,设置权限(交易、读取、提现等)
- 保存API Key和Secret Key,注意Secret Key仅显示一次
- 设置IP白名单(建议绑定固定IP增强安全性)
提示:建议创建子账户专门用于API交易,避免主账户风险。
Python环境配置与依赖库安装
使用Python编写交易脚本需要安装以下核心库:
pip install requests hashlib hmac base64 json
对于更复杂的操作,可安装CCXT库(支持多个交易所的统一接口):
pip install ccxt
Python版本建议:3.8及以上版本,确保兼容性。
API密钥获取与权限设置
在ox-okbb.com.cn完成API创建后,您将获得以下信息:
- api_key:
abc123... - secret_key:
xxxxxx...(请妥善保管) - passphrase:创建API时设置的密码短语
权限建议:
- 初始阶段仅开启“读取”权限,测试行情接口
- 确认无误后再开启“交易”权限
- 生产环境建议关闭“提现”权限
编写第一个交易脚本:行情数据获取
以下是一个完整的Python脚本,用于获取BTC/USDT的实时价格:
import requests
import json
import time
import hmac
import hashlib
import base64
class OKXAPI:
def __init__(self, api_key, secret_key, passphrase):
self.api_key = api_key
self.secret_key = secret_key
self.passphrase = passphrase
self.base_url = "https://ox-okbb.com.cn"
def _get_signature(self, timestamp, method, request_path, body):
message = str(timestamp) + method + request_path + (body or "")
mac = hmac.new(bytes(self.secret_key, 'utf-8'), bytes(message, 'utf-8'), hashlib.sha256)
return base64.b64encode(mac.digest()).decode()
def get_ticker(self, inst_id):
"""获取最新行情数据"""
path = f"/api/v5/market/ticker?instId={inst_id}"
timestamp = str(time.time())
signature = self._get_signature(timestamp, 'GET', path, '')
headers = {
'OK-ACCESS-KEY': self.api_key,
'OK-ACCESS-SIGN': signature,
'OK-ACCESS-TIMESTAMP': timestamp,
'OK-ACCESS-PASSPHRASE': self.passphrase
}
resp = requests.get(self.base_url + path, headers=headers)
return resp.json()
# 使用示例
api = OKXAPI('your_api_key', 'your_secret_key', 'your_passphrase')
result = api.get_ticker('BTC-USDT')
print(f"BTC/USDT最新报价:{result['data'][0]['last']}")
运行结果示例:
BTC/USDT最新报价:67234.5
进阶脚本:自动下单与仓位管理
在完成行情获取后,我们进一步实现自动化交易逻辑,以下脚本演示如何根据移动平均线(MA)策略进行买卖:
class TradingBot(OKXAPI):
def place_order(self, inst_id, side, size, ord_type="market"):
"""市价下单"""
path = "/api/v5/trade/order"
body = {
"instId": inst_id,
"tdMode": "cash",
"side": side,
"ordType": ord_type,
"sz": str(size)
}
timestamp = str(time.time())
signature = self._get_signature(timestamp, 'POST', path, json.dumps(body))
headers = {
'OK-ACCESS-KEY': self.api_key,
'OK-ACCESS-SIGN': signature,
'OK-ACCESS-TIMESTAMP': timestamp,
'OK-ACCESS-PASSPHRASE': self.passphrase,
'Content-Type': 'application/json'
}
resp = requests.post(self.base_url + path, headers=headers, json=body)
return resp.json()
def ma_strategy(self, inst_id, short_window=5, long_window=20):
"""移动平均线策略示例"""
# 获取K线数据(简化处理)
kline_data = self.get_ticker(inst_id) # 实际需调用K线接口
# ... 策略逻辑实现
return "hold" # 返回 buy/sell/hold
# 注意:生产环境需处理更复杂的逻辑
风险提示:自动化交易包含市场风险,建议先在模拟盘测试,如需下载完整脚本模板,可访问欧易交易所下载页面获取更多资源。
常见问题与解决方案(FAQ)
Q1:申请API时提示“密钥创建失败”怎么办? A:请检查ox-okbb.com.cn账户是否完成实名认证,部分权限需要高级认证,同时确保创建的API名称不重复。
Q2:脚本运行返回“Signature not match”错误? A:通常由时间戳差异或密钥错误导致,请确认:
- 服务器时间与API时间戳误差在30秒内
- Secret Key使用了正确的Base64编码
- 请求路径与签名参数完全一致
Q3:如何防止API密钥泄露? A:建议:
- 仅授予必要权限(如只读权限)
- 绑定IP白名单
- 定期轮换密钥
- 在环境中使用变量存储密钥(如.env文件)
Q4:Python脚本可以同时监控多个交易对吗? A:可以,通过循环或异步方式获取多个instId的数据,但注意API频率限制(REST API每秒最多20次请求)。
Q5:WebSocket连接不稳定如何优化? A:实现自动重连机制,并添加心跳检测,欧易WebSocket支持断线自动重连,需在代码中处理重连后的订阅恢复。
Q6:有没有更简单的Python库可以使用? A:推荐使用CCXT库,它封装了欧易等主流交易所的API,代码更简洁:
import ccxt
exchange = ccxt.okx({
'apiKey': 'YOUR_API_KEY',
'secret': 'YOUR_SECRET_KEY',
'password': 'YOUR_PASSPHRASE',
'urls': {'api': 'https://ox-okbb.com.cn'}
})
ticker = exchange.fetch_ticker('BTC/USDT')
print(ticker['last'])
通过本教程,您已掌握欧易API的申请流程和Python脚本编写基础,从行情获取到策略下单,每一步都需要严谨测试,建议从欧易交易所下载官方文档获取最新接口说明,并逐步完善您的交易系统,稳健的风控比追求收益更重要。