目录导读
- 欧易API接口概述
- 申请欧易API密钥的详细步骤
- Python环境搭建与依赖库安装
- 编写第一个交易脚本:获取账户信息
- 实战:实现简单的市价交易指令
- 常见问题与错误处理
- 安全建议与风险控制
欧易API接口概述
在数字资产交易领域,欧易交易所(OKX)作为全球领先的加密货币交易平台,其提供的API接口允许用户通过程序化方式实现自动化交易、行情获取、订单管理等操作,对于希望提升交易效率或构建量化策略的交易者而言,掌握欧易API的调用方法至关重要。

为什么要使用API进行交易?
- 避免人工操作的情绪干扰
- 实现高频交易或策略回测
- 批量管理订单与资产
本节将重点介绍欧易API的认证机制:采用API Key、Secret Key和Passphrase三重验证,确保交易安全。
申请欧易API密钥的详细步骤
在开始编写Python脚本前,请按以下步骤获取API密钥:
-
登录欧易交易所官网
访问欧易交易所下载页面,完成注册与登录。 -
进入API管理页面
点击右上角头像 → “API” → “创建API Key”。 -
设置权限与绑定IP
- 权限建议选择“交易”和“读取”,如需提现请谨慎。
- 绑定服务器IP可显著提升安全性,防止密钥泄露后被滥用。
- 设置Passphrase(必须记住,后续签名需使用)。
-
保存密钥
创建后,API Key和Secret Key仅显示一次,请安全保存至密码管理器或本地加密文件,若遗失需重新生成。
注意:切勿将密钥明文存储在代码仓库或公开分享,建议使用环境变量加载。
Python环境搭建与依赖库安装
环境要求
- Python 3.7+
- 网络可访问欧易API端点(默认
https://www.okx.com)
安装必要库
pip install requests pandas
requests:发送HTTP请求至欧易API。pandas:数据处理可选,本教程仅使用requests。
验证连接
以下代码测试能否成功获取服务器时间:
import requests url = "https://www.okx.com/api/v5/public/time" response = requests.get(url) print(response.json())
若返回包含ts字段,则网络连接正常。
编写第一个交易脚本:获取账户信息
脚本核心逻辑
- 使用API Key、Secret Key和Passphrase构造签名。
- 发送GET请求至
/api/v5/account/balance。 - 解析返回的JSON数据,输出总资产与各币种余额。
完整代码示例
import requests
import time
import hmac
import base64
import json
API_KEY = "your-api-key"
SECRET_KEY = "your-secret-key"
PASSPHRASE = "your-passphrase"
BASE_URL = "https://www.okx.com"
def get_timestamp():
return str(int(time.time() * 1000))
def sign(message, secret_key):
mac = hmac.new(secret_key.encode(), message.encode(), digestmod='sha256')
d = mac.digest()
return base64.b64encode(d).decode()
def request(method, path, body=''):
timestamp = get_timestamp()
message = timestamp + method.upper() + path + body
signature = sign(message, SECRET_KEY)
headers = {
'OK-ACCESS-KEY': API_KEY,
'OK-ACCESS-SIGN': signature,
'OK-ACCESS-TIMESTAMP': timestamp,
'OK-ACCESS-PASSPHRASE': PASSPHRASE,
'Content-Type': 'application/json'
}
url = BASE_URL + path
if method == 'GET':
response = requests.get(url, headers=headers)
elif method == 'POST':
response = requests.post(url, headers=headers, data=body)
return response.json()
# 获取账户信息
path = "/api/v5/account/balance"
result = request('GET', path)
print(json.dumps(result, indent=2))
运行后,你将看到类似如下输出:
{
"code": "0",
"data": [
{
"totalEq": "1000.5",
"details": [
{"ccy": "BTC", "eq": "0.5"},
{"ccy": "USDT", "eq": "5000.0"}
]
}
]
}
请将代码中的your-api-key替换为欧易交易所下载时获取的真实密钥。
实战:实现简单的市价交易指令
假设你想用100 USDT市价买入ETH,你需要调用下单API,以下代码展示如何发送一个市价买单:
import json
# 市价买单参数
order_data = {
"instId": "ETH-USDT",
"tdMode": "cash",
"side": "buy",
"ordType": "market",
"sz": "100", # 以报价币种计价,即100 USDT
"tgtCcy": "quote" # 表示sz为报价币种数量
}
body = json.dumps(order_data)
path = "/api/v5/trade/order"
result = request('POST', path, body)
print("下单结果:", result)
注意事项:
- 市价单可能因流动性不足部分成交,需额外查询订单状态。
- 测试前建议先使用
/api/v5/trade/order-algo测试限价单。 - 若资金不足,API会返回错误代码
51000。
常见问题与错误处理
Q1: 签名验证失败(错误码50102)怎么办?
A: 检查服务器时间偏差,欧易API要求请求时间戳与服务器时间差小于30秒,可调用/api/v5/public/time同步时间,若使用虚拟机或云服务器,请同步NTP服务。
Q2: 密钥权限不足(错误码50013)
A: 登录欧易交易所下载的API管理页面,确认已勾选“交易”权限,若需查询账户信息,还需“读取”权限。
Q3: 请求被限频(错误码40001)
A: 欧易API对单个密钥设置了频率限制(如每秒10次请求),建议在脚本中添加time.sleep(0.1)或使用异步请求控制频率。
Q4: API Key被禁用如何恢复?
A: 在API管理页面重新生成密钥,若怀疑泄露,立即删除旧密钥并更换Passphrase。
安全建议与风险控制
-
密钥保护三原则
- 永不硬编码在代码中,使用环境变量或配置文件(
.env)。 - 限制IP白名单为你的交易服务器IP。
- 定期轮换API密钥(建议每月一次)。
- 永不硬编码在代码中,使用环境变量或配置文件(
-
交易安全机制
- 初始测试用小额资金。
- 实现止损逻辑:行情反向时自动撤单或反向做空。
- 监控API调用频率,避免超限触发账户风控。
-
应急预案
- 编写一个“紧急关闭脚本”——调用
/api/v5/account/set-position-mode将交易模式设为仅减仓。 - 保留手动干预通道,切勿完全依赖自动化。
- 编写一个“紧急关闭脚本”——调用
通过以上教程,你应该已经掌握了从申请欧易交易所下载API密钥到编写简单交易脚本的全流程,随着编程能力的提升,你可以进一步集成技术指标、机器学习模型,构建更复杂的量化交易系统,务必始终将风险控制放在第一位,祝交易顺利!
标签: API接口教程 Python交易脚本