目录导读
- 欧易交易所API接口概述
- API接口申请与配置步骤
- Python环境搭建与依赖库安装
- 编写第一个交易脚本:获取账户信息
- 进阶脚本:实现市价买入与卖出
- 常见问题与问答(FAQ)
- 安全与合规性建议
欧易交易所API接口概述
欧易交易所官网(OKX)作为全球领先的加密货币交易平台,提供了强大且开放的API接口,支持用户通过编程方式自动化执行交易策略,无论是量化交易、定投策略,还是简单的行情监控,API都能帮你高效实现,对于初学者,Python因其简洁性和丰富的金融库,成为编写交易脚本的首选语言。

在开始之前,你需要访问欧易交易所下载完成注册并创建API密钥,请确保你的账户已完成基础认证,否则API权限可能受限。
API接口申请与配置步骤
1 登录欧易交易所官网
访问 https://ox-okbb.com.cn/,登录你的账户,进入“账户设置” -> “API管理”页面。
2 创建API密钥
点击“创建API”,根据需求选择权限:
- 读取权限:用于查询账户余额、订单状态等。
- 交易权限:允许脚本下单、撤单等操作。
- 提币权限:建议仅在你完全信任的环境下启用,避免安全风险。
3 保存密钥
系统会生成api_key和secret_key(以及可选的passphrase),请立即复制并安全保存,因为密钥不会再次完整显示,建议将密钥存储在环境变量或加密配置文件中,切勿硬编码在代码中。
注意:当你需要测试脚本时,可先使用“模拟盘”(Demo)环境,欧易官网提供沙箱模式,避免真实资金风险。
Python环境搭建与依赖库安装
1 安装Python
建议使用Python 3.8及以上版本,可通过python.org下载。
2 安装必要库
在终端中运行以下命令:
pip install requests pip install hashlib pip install hmac pip install base64 pip install json
你也可以安装python-okx等第三方封装库,但本文以原生requests为例,便于理解底层逻辑。
编写第一个交易脚本:获取账户信息
以下是一个简单示例,用于获取你欧易交易所账户的资产余额,请将API_KEY、SECRET_KEY和PASSPHRASE替换为你自己的值。
import requests
import base64
import hmac
import hashlib
import json
import datetime
import time
# 配置信息
API_KEY = '你的api_key'
SECRET_KEY = '你的secret_key'
PASSPHRASE = '你的passphrase'
BASE_URL = 'https://www.okx.com'
# 生成签名
def get_sign(timestamp, method, request_path, body=''):
message = timestamp + method + request_path + body
mac = hmac.new(bytes(SECRET_KEY, encoding='utf8'), bytes(message, encoding='utf-8'), digestmod='sha256')
d = mac.digest()
return base64.b64encode(d).decode('utf-8')
# 获取账户信息
def get_account():
timestamp = datetime.datetime.utcnow().isoformat("T", "milliseconds") + "Z"
method = 'GET'
request_path = '/api/v5/account/balance'
body = ''
sign = get_sign(timestamp, method, request_path, body)
headers = {
'OK-ACCESS-KEY': API_KEY,
'OK-ACCESS-SIGN': sign,
'OK-ACCESS-TIMESTAMP': timestamp,
'OK-ACCESS-PASSPHRASE': PASSPHRASE,
'Content-Type': 'application/json'
}
url = BASE_URL + request_path
response = requests.get(url, headers=headers)
return response.json()
# 执行
if __name__ == '__main__':
account_info = get_account()
print(json.dumps(account_info, indent=2))
运行后,你会看到类似以下输出,包含你各币种的余额和估值:
{
"code": "0",
"data": [
{
"totalEq": "1000.123456",
"details": [
{"ccy": "BTC", "eq": "0.5", "availBal": "0.5"},
{"ccy": "USDT", "eq": "500.00", "availBal": "500.00"}
]
}
]
}
进阶脚本:实现市价买入与卖出
假设你想用USDT市价买入0.01 BTC,可参考以下代码:
def place_order(side, sz, tdMode='cash', instId='BTC-USDT'):
"""
side: 'buy' 或 'sell'
sz: 数量(对于市价单,买入时输入USDT金额,卖出时输入币数量)
"""
timestamp = datetime.datetime.utcnow().isoformat("T", "milliseconds") + "Z"
method = 'POST'
request_path = '/api/v5/trade/order'
order_data = {
"instId": instId,
"tdMode": tdMode,
"side": side,
"ordType": "market",
"sz": str(sz)
}
body = json.dumps(order_data)
sign = get_sign(timestamp, method, request_path, body)
headers = {
'OK-ACCESS-KEY': API_KEY,
'OK-ACCESS-SIGN': sign,
'OK-ACCESS-TIMESTAMP': timestamp,
'OK-ACCESS-PASSPHRASE': PASSPHRASE,
'Content-Type': 'application/json'
}
url = BASE_URL + request_path
response = requests.post(url, headers=headers, data=body)
return response.json()
# 买入0.01 BTC,使用市价单,消耗USDT
print(place_order('buy', 500, 'cash', 'BTC-USDT')) # 花费500 USDT市价买入
注意:市价单不保证成交价格,建议在流动性充足时使用,如果你需要更高阶的策略(如限价单、止损单),可修改ordType参数。
常见问题与问答(FAQ)
Q1:欧易API接口有频率限制吗?
A:是的,欧易交易所官网对API调用频率有限制,一般公共接口(如行情)限制为20次/秒,私有接口(如交易)限制为10次/秒,超出限制会返回429错误,建议在脚本中加入重试机制。
Q2:我的API密钥泄露了怎么办?
A:立即登录欧易交易所下载,在API管理页面删除泄露的密钥并重新创建,检查账户是否有异常交易记录,建议启用IP白名单功能,仅允许你的服务器IP访问。
Q3:为什么我的签名总是验证失败?
A:常见原因包括:
- 时间戳未使用UTC时间格式(需精确到毫秒)。
secret_key或passphrase拼写错误。request_path未包含/api/v5/...完整路径。body为空时,仍需传递空字符串而非None。
Q4:如何测试脚本而不影响真实资金?
A:使用欧易的“模拟盘”环境(Demo),将BASE_URL改为https://www.okx.com并申请模拟盘API密钥,或使用测试网(Testnet)接口,切勿在未经验证的脚本上使用主网密钥。
安全与合规性建议
- 密钥管理:永远不要将API密钥上传至公共代码仓库(如GitHub),建议使用
.env文件或环境变量。 - IP白名单:在欧易交易所官网的API设置中,绑定你的服务器或开发环境的公网IP,防止他人盗用密钥。
- 最小权限原则:只给API分配必要权限(如仅读取),避免授予提币权限。
- 日志脱敏:在记录调试日志时,屏蔽密钥的敏感部分(如只显示前四位)。
通过以上步骤,你已经掌握了如何申请欧易交易所API接口,并使用Python编写简单的交易脚本,后续可结合行情数据(如K线、深度图)和策略模型(如网格交易、均线策略)构建更复杂的自动交易系统,记得在真实交易前充分测试,控制风险。
标签: 欧易API Python交易脚本