目录导读
- 欧易API接口申请前置准备
- API密钥配置与安全设置
- 环境搭建与库安装
- Python交易脚本编写实战
- 常见问题与解答(QA)
欧易API接口申请前置准备
在开始编写Python交易脚本前,首先需要完成欧易交易所的API接口申请,访问欧易官网完成账号注册与实名认证后,进入「API管理」页面,点击「创建API」按钮,系统会生成一对API Key与Secret Key,Secret Key仅在创建时显示一次,务必妥善保存至安全位置。

重要提示:建议为API设置IP白名单与提现权限禁用,以降低私钥泄露风险,对于高频交易需求,可申请专业级API获得更高请求频率限额。
API密钥配置与安全设置
完成申请后,需在本地环境中配置密钥信息,推荐使用环境变量或配置文件管理密钥,避免硬编码到脚本中。
# 创建配置文件 config.py API_KEY = "your_api_key_here" SECRET_KEY = "your_secret_key_here" PASSPHRASE = "your_passphrase" # 欧易要求设置的交易密码
在欧易交易所下载的API管理后台,建议开启以下安全措施:
- 绑定二次验证(Google Authenticator)
- 设置单日最大交易额度
- 启用只读模式(测试阶段)
环境搭建与库安装
建议使用Python 3.8+版本,并通过pip安装以下核心依赖库:
pip install requests hashlib base64 hmac json
或直接安装社区维护的okx-python-sdk(非官方但广泛使用):
pip install okx-python-sdk
推荐在虚拟环境中操作,避免依赖冲突,创建命令:
python -m venv trading_env
Python交易脚本编写实战
以下是一个完整的获取行情并下单示例脚本,适用于欧易现货交易:
import requests
import json
import hmac
import base64
import datetime
from hashlib import sha256
class OKXClient:
def __init__(self, api_key, secret_key, passphrase):
self.base_url = "https://www.okx.com"
self.api_key = api_key
self.secret_key = secret_key
self.passphrase = passphrase
def _generate_signature(self, timestamp, method, path, body=""):
message = timestamp + method + path + body
mac = hmac.new(
self.secret_key.encode('utf-8'),
message.encode('utf-8'),
digestmod=sha256
)
return base64.b64encode(mac.digest()).decode('utf-8')
def get_ticker(self, symbol="BTC-USDT"):
"""获取实时行情"""
path = f"/api/v5/market/ticker?instId={symbol}"
response = requests.get(self.base_url + path)
return response.json()
def place_order(self, inst_id="BTC-USDT", side="buy", size="0.001"):
"""市价下单"""
path = "/api/v5/trade/order"
timestamp = datetime.datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%S.%f')[:-3] + 'Z'
body = {
"instId": inst_id,
"tdMode": "cash",
"side": side,
"ordType": "market",
"sz": size
}
signature = self._generate_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"
}
response = requests.post(self.base_url + path, headers=headers, data=json.dumps(body))
return response.json()
# 使用示例
client = OKXClient("YOUR_API_KEY", "YOUR_SECRET_KEY", "YOUR_PASSPHRASE")
print(client.get_ticker())
print(client.place_order())
代码要点解析:
- 签名生成:使用HMAC-SHA256算法,按欧易官方规范拼接时间戳+请求方法+路径+参数体
- 时间戳格式:需精确到毫秒,例如
2024-01-01T12:00:00.123Z - 订单参数:
instId为交易对,sz为数量(现货按币数,合约按张数)
常见问题与解答(QA)
Q1:API请求频繁返回429错误怎么办?
A:欧易对API请求有频率限制,现货默认每2秒最多10次,可通过降低请求频率或申请VIP API提升额度,建议使用time.sleep(0.2)控制间隔。
Q2:签名验证失败(报错50125)如何排查? A:常见原因包括:
- 时间戳偏差超过30秒(需与服务器时间同步)
- Secret Key或Passphrase填写错误
- 签名参数顺序与官方规范不一致
Q3:欧易API是否支持多线程交易?
A:支持,但需注意线程安全,建议使用连接池(如requests.Session())管理连接,并为每个线程分配独立API Key(若需高并发)。
Q4:如何测试脚本而不产生真实交易? A:欧易提供模拟盘API,申请时选择「模拟盘模式」,使用独立的模拟账号和API Key进行测试,完全不影响真实资金。
Q5:订单状态如何实时监听?
A:推荐使用WebSocket接口订阅订单频道,实现实时推送,替代轮询查询,欧易WebSocket地址为wss://ws.okx.com:8443/ws/v5/public。
通过本文教程,您已掌握利用欧易API与Python构建基础交易脚本的能力,实际应用中,建议从小额测试开始,逐步增加策略复杂度,并定期关注欧易API文档更新,以适配最新接口规范。
标签: 欧易API Python交易脚本