目录导读
- 欧易API接口申请前置条件与步骤
- Python开发环境搭建与必要库安装
- 欧易API签名认证机制详解
- 实战:编写一个简单的行情获取脚本
- 进阶:实现自动下单交易功能
- 安全注意事项与常见问题
欧易API接口申请前置条件与步骤
要在欧易交易所官网进行自动化交易,首先需要完成API接口的申请,以下是具体流程:

申请条件:需完成欧易交易所官网的实名认证(KYC二级认证),账户无风控限制。
操作步骤:
- 登录欧易交易所官网,进入“账户中心” → “API管理”
- 点击“创建API Key”,填写用途描述(如“交易脚本”)
- 选择权限类型:交易权限、读取权限、提币权限(建议仅勾选“交易+读取”)
- 完成安全验证(邮箱+谷歌验证器双重认证)
- 保存生成的
api_key、secret_key和passphrase(注意:secret_key仅显示一次,务必妥善保管)
问答环节:
问:申请API时提示“安全验证失败”怎么办?
答:请确保谷歌验证器时间同步,可尝试在谷歌验证器APP内点击“同步时间”选项,若仍失败,可联系欧易在线客服协助。
Python开发环境搭建与必要库安装
编写交易脚本前,需准备好Python环境和第三方库。
环境要求:
- Python 3.8及以上版本(推荐3.10)
- 安装以下核心库:
pip install requests hashlib hmac base64 json time
特别说明:对于欧易的WebSocket接口,需额外安装:
pip install websocket-client
问答环节:
问:为什么需要使用hmac和base64库?
答:欧易采用HMAC-SHA256进行签名认证,所有请求头必须携带通过secret_key生成的签名数据,这是保障账户安全的关键机制。
欧易API签名认证机制详解
欧易API使用“请求头签名”方式,具体流程如下:
- 构造签名字符串:
timestamp + method + requestPath + body - 使用
HMAC-SHA256算法对字符串进行加密 - 对加密结果进行
Base64编码 - 在请求头中添加:
OK-ACCESS-KEY: api_keyOK-ACCESS-SIGN: 生成的签名OK-ACCESS-TIMESTAMP: 当前UTC时间戳OK-ACCESS-PASSPHRASE: 设置的密码
示例代码片段:
import hmac, base64, time, requests, json
def get_signature(timestamp, method, request_path, body, secret_key):
message = timestamp + method.upper() + request_path + (body or "")
mac = hmac.new(secret_key.encode(), message.encode(), hashlib.sha256)
return base64.b64encode(mac.digest()).decode()
问答环节:
问:时间戳格式有特殊要求吗?
答:欧易要求使用ISO8601格式的UTC时间戳,精确到毫秒,2025-04-10T08:30:00.123Z。
实战:编写一个简单的行情获取脚本
以下脚本用于获取BTC/USDT的实时行情数据:
import requests, json, hmac, base64, hashlib, time
# 配置信息
api_key = "你的API_KEY"
secret_key = "你的SECRET_KEY"
passphrase = "你的PASSPHRASE"
base_url = "https://ox-okbb.com.cn" # 欧易API接口域名
def get_ticker(symbol="BTC-USDT"):
request_path = f"/api/v5/market/ticker?instId={symbol}"
method = "GET"
timestamp = time.strftime("%Y-%m-%dT%H:%M:%S.000Z", time.gmtime())
# 生成签名
signature = get_signature(timestamp, method, request_path, None, secret_key)
headers = {
"OK-ACCESS-KEY": api_key,
"OK-ACCESS-SIGN": signature,
"OK-ACCESS-TIMESTAMP": timestamp,
"OK-ACCESS-PASSPHRASE": passphrase
}
response = requests.get(base_url + request_path, headers=headers)
return response.json()
# 调用示例
data = get_ticker()
print(json.dumps(data, indent=2))
问答环节:
问:为什么返回{"code":"50013","msg":"Invalid API Key"}?
答:请检查API Key是否已开启交易权限,或确认secret_key是否完整复制(建议重新创建API Key)。
进阶:实现自动下单交易脚本
模拟10秒内BTC价格波动超过1%时自动买入:
def place_order(symbol, side, sz, td_mode="cash"):
body = json.dumps({
"instId": symbol,
"tdMode": td_mode,
"side": side,
"ordType": "market",
"sz": str(sz)
})
request_path = "/api/v5/trade/order"
method = "POST"
timestamp = time.strftime("%Y-%m-%dT%H:%M:%S.000Z", time.gmtime())
signature = get_signature(timestamp, method, request_path, body, secret_key)
headers = {...} # 同行情请求
response = requests.post(base_url + request_path, data=body, headers=headers)
return response.json()
# 结合行情监控循环执行
last_price = 0
while True:
ticker = get_ticker()
current_price = float(ticker["data"][0]["last"])
if current_price > last_price * 1.01:
order = place_order("BTC-USDT", "buy", 0.001) # 买入0.001个BTC
print("自动买入成功:", order)
last_price = current_price
time.sleep(10)
重要提醒:实盘交易前请先使用欧易交易所下载的沙箱环境测试,避免资金损失,沙箱API地址可在欧易交易所官网开发者文档中找到。
安全注意事项与常见问题
- 密钥保护:勿将
secret_key硬编码在公开仓库或共享文档中,建议使用环境变量。 - 频率限制:欧易API有费率限制(示例:REST接口每秒最多请求20次),超出会被临时封禁。
- IP白名单:在API管理页面勾选“绑定IP”,仅允许指定IP访问,提升安全性。
- 止损机制:务必在脚本中加入止损逻辑,防止极端行情导致爆仓。
问答环节:
问:如何获取历史K线数据用于回测?
答:使用/api/v5/market/history-candles接口,传入instId、bar(K线周期)和limit参数即可,注意历史数据接口最多返回300根K线。
通过本教程,您已掌握在欧易交易所官网申请API接口并使用Python编写交易脚本的核心方法,建议从欧易交易所下载的模拟盘开始实践,逐步验证策略有效性后再投入实盘交易。技术是工具,风险控制才是永恒的主题。
标签: OKX Python交易脚本