目录导读
- 欧易API接口申请前的准备工作
- 注册欧易账户与安全验证
- 申请API密钥的核心步骤
- Python交易脚本环境搭建
- 安装必要的Python库
- 配置API密钥与网络请求
- 编写第一个自动化交易脚本
- 获取市场行情数据
- 实现限价单与市价单交易
- 常见问题与错误处理
- API频率限制如何规避
- 密钥泄露应急方案
- 安全与风险管理
- 权限分级与IP白名单设置
- 交易脚本的防误操作设计
欧易API接口申请前的准备工作
在开始编写Python交易脚本之前,您需要先拥有一个欧易交易所(简称OKX)账户,若尚未注册,可访问欧易交易所下载完成开户,注册后务必完成实名认证(KYC)和二次验证(2FA),这是申请API接口的基础安全门槛。

关键问答
问:为什么必须绑定2FA才能申请API?
答:防止账户被盗用,API密钥拥有交易权限,一旦泄露可能导致资产损失,双重验证可极大提升安全性。
申请API密钥的步骤:
- 登录欧易官网,进入“个人中心”→“API管理”。
- 点击“创建API”,选择“交易API”类型。
- 设置权限:建议勾选“读取”“交易”权限,避免开放提币功能。
- 设置IP白名单:输入您服务器或电脑的公网IP(如192.168.1.1),非白名单IP无法调用API。
- 保存生成的 API Key 和 Secret Key(仅显示一次,请立即备份)。
Python交易脚本环境搭建
推荐使用Python 3.8以上版本,打开终端执行以下命令安装依赖库:
pip install requests pandas pycryptodome
核心配置示例
创建一个config.py文件存放密钥,注意不要将密钥硬编码到公开代码中:
# config.py API_KEY = "your_api_key_here" SECRET_KEY = "your_secret_key_here" BASE_URL = "https://ox-okbb.com.cn" # 欧洲合规域名
请求签名生成
欧易API采用HMAC-SHA256签名方式,参考以下伪代码:
import hmac
import base64
import hashlib
import time
from urllib.parse import urlencode
def generate_signature(timestamp, method, request_path, body=""):
message = str(timestamp) + method.upper() + request_path + body
mac = hmac.new(SECRET_KEY.encode('utf-8'),
message.encode('utf-8'),
hashlib.sha256).digest()
return base64.b64encode(mac).decode()
编写第一个自动化交易脚本
1 获取实时行情数据
以查询BTC/USDT最新价为例:
import requests
import json
def get_ticker(symbol="BTC-USDT"):
url = f"{BASE_URL}/api/v5/market/ticker"
params = {"instId": symbol}
response = requests.get(url, params=params)
data = response.json()
return data["data"][0]["last"]
print(f"当前BTC价格: {get_ticker()}")
2 执行限价买入订单
使用API Key进行身份验证,发送POST请求:
def place_limit_order(symbol, side, price, size):
timestamp = str(int(time.time()))
body = {
"instId": symbol,
"tdMode": "cash", # 现货交易
"side": side,
"ordType": "limit",
"px": price,
"sz": str(size)
}
body_json = json.dumps(body)
signature = generate_signature(timestamp, "POST", "/api/v5/trade/order", body_json)
headers = {
"OK-ACCESS-KEY": API_KEY,
"OK-ACCESS-SIGN": signature,
"OK-ACCESS-TIMESTAMP": timestamp,
"OK-ACCESS-PASSPHRASE": your_passphrase, # 创建API时设置的口令
"Content-Type": "application/json"
}
response = requests.post(f"{BASE_URL}/api/v5/trade/order",
headers=headers, data=body_json)
return response.json()
# 使用示例:以50000 USDT买入0.01 BTC
print(place_limit_order("BTC-USDT", "buy", "50000", "0.01"))
重要提醒:首次测试请使用最小交易量(如0.0001 BTC)并选择模拟盘(demo模式)验证脚本。
常见问题与错误处理
Q1:为什么请求频繁返回429状态码?
A:欧易交易所对API请求频率有限制(不同等级账户不同),解决方案:
- 在每次请求后添加
time.sleep(0.5)。 - 使用WebSocket获取实时数据,减少HTTP轮询。
Q2:签名验证失败(401错误)如何排查?
A:常见原因包括:
- 时间戳与服务器时间误差超过30秒——同步操作系统时间。
- Secret Key复制错误——重新创建API并备份。
- Passphrase未正确传递——检查
headers中OK-ACCESS-PASSPHRASE字段。
Q3:如何从欧易官方网站获取更多API文档?
前往欧易官网开发者中心,下载完整的REST API与WebSocket手册。
安全与风险管理
- 权限最小化:创建API时只勾选必要权限(交易+读取),切勿开放提币功能。
- IP白名单:将脚本运行服务器的IP加入白名单,移动端或动态IP可用VPN固定出口。
- 密钥轮换:每3个月更新一次API密钥,废弃旧密钥。
- 止损机制:在脚本中添加最大亏损额限制,避免行情剧烈波动时持续下单。
示例止损逻辑:
max_loss = 50 # 单日最大亏损50 USDT
if current_loss >= max_loss:
print("触发止损,暂停交易")
sys.exit()
通过以上步骤,您已掌握欧易API接口申请及Python脚本编写的基础方法,建议先用模拟盘测试一周,确认逻辑无误后再投入实盘,更多高级功能(如网格交易、跨币种套利)可查阅欧易交易所下载的官方开发文档。
标签: 欧易API Python交易脚本