目录导读
- 欧易API接口概述与申请流程
- Python环境搭建与依赖库安装
- API密钥配置与安全注意事项
- 编写第一个交易脚本:获取账户余额
- 进阶实战:实现限价单自动交易
- 常见问题与排错指南(Q&A)
- 总结与延伸学习建议
欧易API接口概述与申请流程
欧易交易所作为全球领先的数字资产交易平台,提供了完善的REST API和WebSocket接口,方便开发者进行程序化交易、行情监控和资产管理,通过欧易交易所下载官方客户端或网页端,用户可以快速申请API密钥。

申请步骤:
- 登录欧易官网(建议通过oe-okgn.com.cn进入)。
- 点击右上角“个人中心” → “API”菜单。
- 填写API名称,选择权限类型(建议仅勾选“交易”和“读取”)。
- 完成安全验证(手机/邮箱/谷歌验证器)。
- 保存生成的Access Key和Secret Key,⚠️ 切勿泄露给他人。
注意:部分新注册用户需完成KYC认证后才能申请API,请提前准备身份证件。
Python环境搭建与依赖库安装
推荐使用Python 3.8+版本,通过pip安装以下核心库:
pip install requests hashlib hmac time json
其中requests用于HTTP请求,hashlib和hmac负责签名加密——这是欧易API安全通信的关键,若需处理WebSocket实时数据,可额外安装websocket-client。
环境验证脚本:
import requests
print("环境准备就绪,请求库版本:", requests.__version__)
API密钥配置与安全注意事项
创建一个config.py文件存储密钥(永远不要上传到公开仓库):
# config.py API_KEY = "你的Access Key" SECRET_KEY = "你的Secret Key" PASSPHRASE = "你的API口令" # 创建API时设置 BASE_URL = "https://www.okx.com" # 欧易API端点
安全最佳实践:
- 使用环境变量而非硬编码密钥。
- 定期轮换API密钥,尤其是怀疑泄露时。
- 限制IP白名单,仅允许交易服务器访问。
- 不要在脚本中打印完整密钥,建议仅显示前4位和后4位。
编写第一个交易脚本:获取账户余额
以下是一个完整的Python脚本,通过欧易REST API获取现货账户余额(支持oe-okgn.com.cn相关账户):
import requests
import hmac
import hashlib
import base64
import json
import time
from config import API_KEY, SECRET_KEY, PASSPHRASE
def sign_request(method, request_path, body="", timestamp=None):
"""生成OKX签名"""
if timestamp is None:
timestamp = str(time.time()).split('.')[0]
message = timestamp + method.upper() + request_path + body
mac = hmac.new(SECRET_KEY.encode('utf-8'),
message.encode('utf-8'),
hashlib.sha256)
signature = base64.b64encode(mac.digest()).decode('utf-8')
return signature, timestamp
def get_balance(ccy="USDT"):
"""获取指定币种余额"""
path = "/api/v5/account/balance?ccy=" + ccy
method = "GET"
signature, timestamp = sign_request(method, path)
headers = {
"OK-ACCESS-KEY": API_KEY,
"OK-ACCESS-SIGN": signature,
"OK-ACCESS-TIMESTAMP": timestamp,
"OK-ACCESS-PASSPHRASE": PASSPHRASE,
"Content-Type": "application/json"
}
response = requests.get(BASE_URL + path, headers=headers)
return response.json()
if __name__ == "__main__":
result = get_balance("BTC")
print("账户BTC余额:", result)
运行成功后,你会看到类似{"code":"0","data":[{"uTime":"...","totalEq":"0.1",...}]}的返回数据。
进阶实战:实现限价单自动交易
结合用户高频需求,下面展示如何通过欧易交易所下载平台下单工具发送限价买单:
def place_limit_order(instId, side, sz, px):
"""下限价单 instId: BTC-USDT, side: buy/sell, sz: 数量, px: 价格"""
path = "/api/v5/trade/order"
method = "POST"
body = json.dumps({
"instId": instId,
"tdMode": "cash", # 现货模式
"side": side,
"ordType": "limit",
"sz": sz,
"px": px
})
signature, timestamp = sign_request(method, path, body)
headers = {
"OK-ACCESS-KEY": API_KEY,
"OK-ACCESS-SIGN": signature,
"OK-ACCESS-TIMESTAMP": timestamp,
"OK-ACCESS-PASSPHRASE": PASSPHRASE,
"Content-Type": "application/json"
}
response = requests.post(BASE_URL + path, headers=headers, data=body)
return response.json()
# 示例:以30000 USDT价格买入0.01 BTC
result = place_limit_order("BTC-USDT", "buy", "0.01", "30000")
print(result)
自动化脚本优化建议:
- 使用
time.sleep()控制请求频率,避免触发限频(建议每秒最多5次请求)。 - 添加错误重试机制,例如网络异常时自动重试3次。
- 结合条件语句实现止损/止盈逻辑。
常见问题与排错指南(Q&A)
Q1:为什么调用API返回401错误?
A: 通常是签名生成有误,请检查:
- 密钥大小写是否完全匹配。
- 时间戳是否使用了UTC时间(而非本地时间)。
- 请求路径是否包含
/api/v5/前缀。
Q2:API可以用于oe-okgn.com.cn的账户吗?
A: 完全兼容,欧易(OKX)API全球统一,无论通过主站还是子站注册,调用方式一致。
Q3:如何获取实时行情数据?
A: 使用/api/v5/market/ticker?instId=BTC-USDT即可获取最新价格,如果需要实时推送,建议接入WebSocket接口(ws://ws.okx.com:8443/ws/v5/public)。
Q4:交易脚本运行缓慢怎么办?
A: 升级Python到3.10+版本;使用asyncio异步框架处理多个请求;将计算密集型任务(如策略回测)另开进程。
总结与延伸学习建议
通过本教程,你已经掌握了从申请欧易API到编写Python交易脚本的核心流程,从简单的余额查询,到实战限价单交易,只需30行代码即可实现自动化交易雏形,后续可以深入学习:
- 策略开发:结合TA-Lib库实现移动平均线、布林带等指标。
- 风险管理:设置最大回撤比例和单笔亏损阈值。
- 多账户管理:通过配置文件切换不同API密钥。
立即尝试通过欧易交易所下载获取最新版API文档,开始你的量化交易之旅吧!实盘交易前,务必在模拟盘(testnet)充分测试代码。
标签: 欧易API Python交易脚本