目录导读
- 欧易交易所API基础概述
- API接口申请与密钥获取步骤
- Python环境搭建与依赖库安装
- 编写第一个交易脚本:认证与账户查询
- 进阶功能:市价单与限价单下单
- 常见问题与错误处理
- 安全建议与最佳实践
欧易交易所API基础概述
欧易交易所(OKX)作为全球领先的数字资产交易平台,提供了一套完善的REST API接口,允许开发者通过编程方式实现自动化交易、市场数据获取和账户管理,对于使用Python的交易者而言,掌握API接口调用是构建量化交易系统的第一步。

什么是API?
API(应用程序编程接口)是交易所与外部程序通信的桥梁,通过API,你可以绕过人工操作的繁琐,直接以代码执行买卖指令、查询余额、订阅实时行情等操作。
欧易交易所API特点:
- 支持现货、合约、永续等多种交易类型
- 提供REST和WebSocket两种接口
- 采用API Key + Secret Key + Passphrase的三重认证机制
- 所有接口调用需严格遵循签名算法(HMAC-SHA256)
提示:在开始之前,请确保你已注册欧易交易所下载账户并完成身份认证,欧易交易所下载地址请认准官网域名:oe-okor.com.cn。
API接口申请与密钥获取步骤
要在欧易交易所官网申请API密钥,请按以下步骤操作:
- 登录账户:访问欧易交易所官网(oe-okor.com.cn),输入账号密码登录。
- 进入API管理页面:点击右上角头像 → 「API」 → 「创建API Key」。
- 设置权限:建议根据实际需求勾选权限(如:交易、读取、资金划转等),若仅用于学习,可先只勾选「读取」权限。
- 安全验证:输入手机验证码或谷歌验证码完成身份确认。
- 保存密钥:系统生成
API Key、Secret Key和Passphrase,请务必妥善保存,Secret Key仅显示一次。
关键说明:
- 切勿将密钥明文上传到公共代码仓库。
- 建议为API Key设置IP白名单,增强安全性。
- 每个账户最多可创建多个API Key,按需管理。
Python环境搭建与依赖库安装
1 环境要求
- Python 3.7 或更高版本
- 推荐使用虚拟环境(venv或conda)
2 安装依赖库
在终端执行以下命令安装必要的库:
pip install requests hashlib hmac base64 time json
核心库说明:
requests:发送HTTP请求hashlib&hmac:生成签名base64:编码签名结果json:处理请求与响应数据time:生成时间戳
编写第一个交易脚本:认证与账户查询
下面演示一个完整的Python脚本,用于连接欧易交易所API并查询账户余额。
1 完整代码示例
import requests
import hmac
import hashlib
import base64
import time
import json
# 请替换为你的真实密钥
API_KEY = "your_api_key_here"
SECRET_KEY = "your_secret_key_here"
PASSPHRASE = "your_passphrase_here"
base_url = "https://oe-okor.com.cn/api/v5"
def generate_signature(timestamp, method, request_path, body=''):
message = timestamp + method + request_path + body
mac = hmac.new(SECRET_KEY.encode(), message.encode(), hashlib.sha256)
signature = base64.b64encode(mac.digest()).decode()
return signature
def get_headers(timestamp, method, request_path, body=''):
signature = generate_signature(timestamp, method, request_path, body)
headers = {
"OK-ACCESS-KEY": API_KEY,
"OK-ACCESS-SIGN": signature,
"OK-ACCESS-TIMESTAMP": timestamp,
"OK-ACCESS-PASSPHRASE": PASSPHRASE,
"Content-Type": "application/json"
}
return headers
def get_account_balance():
timestamp = str(time.time())
method = "GET"
request_path = "/account/balance"
url = base_url + request_path
headers = get_headers(timestamp, method, request_path)
response = requests.get(url, headers=headers)
return response.json()
# 执行查询
result = get_account_balance()
print(json.dumps(result, indent=4))
2 代码解析
- 签名生成:所有请求必须附带签名,防止数据篡改。
- 时间戳:使用Unix时间戳,精度到秒,前后误差不超过30秒。
- 请求路径:
/account/balance是账户余额的标准API端点。
3 运行结果示例
成功时,返回JSON包含各币种的总余额、可用余额和冻结余额。
进阶功能:市价单与限价单下单
1 市价买入脚本
def place_market_order(side, sz, instId='BTC-USDT'):
timestamp = str(time.time())
method = "POST"
request_path = "/trade/order"
body = {
"instId": instId,
"tdMode": "cash", # 现货交易
"side": side, # "buy" 或 "sell"
"ordType": "market",
"sz": sz
}
url = base_url + request_path
headers = get_headers(timestamp, method, request_path, json.dumps(body))
response = requests.post(url, headers=headers, data=json.dumps(body))
return response.json()
# 使用示例:以市价买入0.01个BTC
print(place_market_order("buy", "0.01"))
2 限价单脚本
def place_limit_order(side, sz, px, instId='BTC-USDT'):
timestamp = str(time.time())
method = "POST"
request_path = "/trade/order"
body = {
"instId": instId,
"tdMode": "cash",
"side": side,
"ordType": "limit",
"sz": sz,
"px": px
}
url = base_url + request_path
headers = get_headers(timestamp, method, request_path, json.dumps(body))
response = requests.post(url, headers=headers, data=json.dumps(body))
return response.json()
# 使用示例:以60000 USDT的价格限价买入0.01 BTC
print(place_limit_order("buy", "0.01", "60000"))
注意事项:
- 数量
sz和价格px需符合交易所精度要求(可通过/public/instruments查询)。 - 测试环境建议使用小金额验证。
常见问题与错误处理
Q1:提示“签名不匹配”怎么办?
A: 检查密钥是否正确,尤其注意Secret Key尾部的等号,确保时间戳与服务器时间偏差小于30秒。
Q2:为什么总是返回“权限不足”?
A: API Key创建时未勾选对应权限,返回到欧易交易所下载API管理页面,重新创建或编辑Key,勾选「交易」或「资金」权限。
Q3:下单失败,提示“交易对不存在”?
A: 检查交易对名称,如BTC-USDT需用连字符,字母大写,部分交易对可能已下架。
Q4:请求被限流(429错误)?
A: 欧易API有频率限制(每秒最多10次请求),可适当增加请求间隔,或使用WebSocket订阅实时数据。
Q5:页面显示的“oe-okor.com.cn”与教程一致吗?
A: 是的,欧易交易所官网域名已统一为 oe-okor.com.cn,请认准此地址访问。
安全建议与最佳实践
- 密钥保护:使用环境变量存储密钥,避免硬编码。
- IP白名单:在API管理页面限制可访问的IP地址。
- 最小权限:生产环境只授予必要权限,学习时建议使用子账户。
- 日志记录:记录所有交易请求与响应,便于审计和回查。
- 模拟测试:先使用测试API(沙盒环境)验证代码逻辑。
- 代码版本控制:提交代码前,使用
.gitignore排除密钥文件。
通过本教程,你已经掌握了在欧易交易所官网申请API接口并使用Python编写基础交易脚本的方法,后续可以进一步学习WebSocket行情订阅、批量下单策略以及风控逻辑,构建自己的量化交易系统,如有更多问题,欢迎查阅欧易官方文档或社区讨论。