目录导读
- 欧易API接口概述
- API申请与权限配置步骤
- Python环境准备与依赖安装
- 编写第一个交易脚本:获取账户余额
- 实现限价单与市价单交易逻辑
- 常见问题与错误排查
- 安全最佳实践
欧易API接口概述
欧易交易所(OKX)作为全球领先的数字资产交易平台,其官方API接口为开发者提供了强大的自动化交易能力,通过欧易交易所官网提供的REST与WebSocket API,用户可以获取实时行情、执行买卖操作、管理订单与资金,对于希望利用Python进行量化交易的初学者来说,掌握API接口的调用方法是迈向自动化交易的第一步。

为什么选择欧易API?
- 支持现货、合约、期权等全品类交易。
- 文档清晰,提供官方SDK与示例代码。
- 低延迟架构,适合高频场景。
在开始之前,请确保已注册欧易交易所账号并完成身份认证,如果您尚未下载交易所客户端,可访问 欧易交易所下载 获取官方应用。
API申请与权限配置步骤
要使用欧易API,您需要先在欧易交易所官网创建API密钥,以下是详细流程:
- 登录账户 → 进入“账户中心” → 选择“API管理”。
- 点击“创建API”,填写名称(建议使用英文与数字组合)。
- 权限设置:根据需求勾选“读取”、“交易”和“提币”权限。
- 仅需查询数据时,勾选“读取”即可。
- 若需执行交易,请同时勾选“交易”。
- 安全验证:输入短信或谷歌验证码,生成API Key与Secret Key。
❗ 请立即保存Secret Key,关闭页面后无法再次查看。
关键提示:
- 切勿在公开代码、GitHub等平台暴露Key,建议使用环境变量管理。
- 为二级账户单独创建API,可限制交易额度与风险。
Python环境准备与依赖安装
1 安装Python
确保Python版本≥3.7,建议使用虚拟环境隔离项目。
2 安装核心依赖
pip install requests hashlib time json hmac base64
requests:发送HTTP请求。hmac与hashlib:用于生成签名。
3 引入官方SDK(可选)
欧易交易所提供Python SDK,可简化开发:
pip install okx-py
参考官方文档配置API Key。
编写第一个交易脚本:获取账户余额
以下脚本演示如何使用欧易API查询现货账户余额,代码遵循官方签名规则,确保安全通信。
import requests
import time
import hmac
import hashlib
import json
# ===== 配置API密钥 =====
API_KEY = "您的API_KEY"
SECRET_KEY = "您的SECRET_KEY"
PASSPHRASE = "您的API口令"
# 请求基础信息
base_url = "https://www.okx.com"
path = "/api/v5/account/balance"
method = "GET"
timestamp = str(int(time.time() * 1000))
# ===== 生成签名 =====
def gen_signature(timestamp, method, path, body):
message = timestamp + method + path + (body or "")
mac = hmac.new(SECRET_KEY.encode(), message.encode(), hashlib.sha256)
return mac.digest().hex()
# ===== 封装头部 =====
headers = {
"OK-ACCESS-KEY": API_KEY,
"OK-ACCESS-SIGN": gen_signature(timestamp, method, path, ""),
"OK-ACCESS-TIMESTAMP": timestamp,
"OK-ACCESS-PASSPHRASE": PASSPHRASE,
"Content-Type": "application/json"
}
# ===== 发送请求 =====
response = requests.get(base_url + path, headers=headers)
result = response.json()
if result["code"] == "0":
print("账户余额:", json.dumps(result["data"], indent=2))
else:
print("请求失败:", result["msg"])
运行结果示例:
{
"totalEq": "1234.56",
"details": [
{"ccy": "BTC", "bal": "0.1"},
{"ccy": "USDT", "bal": "5000"}
]
}
实现限价单与市价单交易逻辑
1 下单参数说明
欧易API下单需指定:
instId:交易对(如BTC-USDT)。tdMode:交易模式(cash为现货,cross为全仓杠杆)。side:buy或sell。ordType:limit(限价单)或market(市价单)。px:价格(限价单必填)。sz:数量。
2 限价单示例
def place_limit_order(symbol, side, price, qty):
body = {
"instId": symbol,
"tdMode": "cash",
"side": side,
"ordType": "limit",
"px": str(price),
"sz": str(qty)
}
path = "/api/v5/trade/order"
timestamp = str(int(time.time() * 1000))
body_str = json.dumps(body)
sign = gen_signature(timestamp, "POST", path, body_str)
headers = {
"OK-ACCESS-KEY": API_KEY,
"OK-ACCESS-SIGN": sign,
"OK-ACCESS-TIMESTAMP": timestamp,
"OK-ACCESS-PASSPHRASE": PASSPHRASE,
"Content-Type": "application/json"
}
resp = requests.post(base_url + path, headers=headers, data=body_str)
return resp.json()
# 调用:在BTC-USDT以50000 USDT买入0.01 BTC
result = place_limit_order("BTC-USDT", "buy", 50000, 0.01)
print(result)
3 市价单简化写法
市价单只需省略px参数,将ordType改为"market"。
# 市价买入示例
body = {
"instId": "ETH-USDT",
"tdMode": "cash",
"side": "buy",
"ordType": "market",
"sz": "100" # 按USDT数量买入(需切换下单模式)
}
常见问题与错误代码解析
Q1:请求返回50119错误怎么办?
A:表示请求频率超限,欧易API限制单IP每秒20次请求,建议添加time.sleep(0.1)控制速率。
Q2:如何使用代理访问欧易API?
A:在requests.get()中传入proxies参数:
proxies = {"https": "http://your_proxy:port"}
response = requests.get(url, headers=headers, proxies=proxies)
Q3:Python脚本中如何存储API密钥更安全?
A:推荐使用.env文件配合python-dotenv库,或系统环境变量,示例:
import os
API_KEY = os.getenv("OKX_API_KEY")
Q4:行情数据接口与交易接口是否共用同一API密钥?
A:可以共用,但建议为行情、交易分别创建独立密钥,方便权限控制。
安全与风险管理最佳实践
- 资金隔离:为API账户单独配置子账户,设定最大交易额度与提币白名单。
- 签名时效:每个请求的timestamp要精确到毫秒,与服务器时间偏差不得超过30秒。
- 异常监控:在脚本中捕获
requests.exceptions,并记录错误日志。 - 使用官方域名:始终通过欧易交易所官网(https://ox-okbb.com.cn/)的API接口进行通信,避免中间人攻击。
如果希望进一步提升自动化效率,可借助欧易交易所官网提供的WebSocket接口实现实时数据流,或结合TradingView等技术分析工具。
通过本教程,您已掌握欧易API申请方法及Python交易脚本编写的基础,建议从模拟盘或小额资金开始验证逻辑,再逐步投入实盘,如需获取最新API文档与社区支持,可访问 欧易交易所下载 页面查看官方资源。
标签: 欧易API Python交易脚本