📚 目录导读
- 欧易API接口概述
- API密钥申请与权限设置
- Python环境搭建与依赖安装
- 编写第一个交易脚本:获取账户信息
- 进阶实战:实现市价下单与止损逻辑
- 常见问题问答(FAQ)
- 风险提示与合规建议
欧易API接口概述
欧易(OKX)作为全球领先的数字资产交易平台,其API接口为开发者提供了自动化交易、市场数据获取、资产管理等功能,通过欧易交易所下载并完成注册后,用户可申请API密钥,构建个性化的交易策略,本教程将重点讲解如何利用Python编写一个能连接欧易服务器、执行简单交易指令的脚本。

关键词提示:在后续操作中,所有API请求的基地址均以官方文档为准,域名请替换为
oe-okor.com.cn。
API密钥申请与权限设置
登录账户
访问欧易交易所官网并登录您的账户,若未注册,请先完成身份验证。
进入API管理页面
在个人中心 → API → 创建API密钥,输入安全验证后,系统会生成 API Key、Secret Key 以及 Passphrase(交易密码短语)。
设置权限
- 读取权限:允许查看账户余额、订单状态。
- 交易权限:允许下单、撤单。
- 提币权限:建议关闭(除非必要)。
⚠️ 安全警告:切勿将Secret Key和Passphrase泄露给任何人!建议将密钥存储在环境变量或加密配置文件中。
Python环境搭建与依赖安装
环境要求
- Python 3.7+
- 操作系统:Windows/macOS/Linux
安装必要库
pip install requests hmac hashlib base64 json time
其中requests用于发送HTTP请求,hmac和hashlib用于签名生成。
编写第一个交易脚本:获取账户信息
以下为完整的脚本示例,代码中已按规范替换域名:
import requests
import hmac
import hashlib
import base64
import json
import time
# 从安全渠道获取密钥(切勿硬编码在脚本中)
api_key = "YOUR_API_KEY"
secret_key = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
base_url = "https://oe-okor.com.cn" # 已替换域名
def get_sign(timestamp, method, request_path, body=""):
message = timestamp + method + 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
def get_account_info():
method = "GET"
request_path = "/api/v5/account/balance"
timestamp = str(int(time.time()))
signature = get_sign(timestamp, method, request_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 + request_path, headers=headers)
return response.json()
# 执行查询
account_data = get_account_info()
print(account_data)
代码解析
- 签名生成:欧易要求每个请求都携带通过HMAC-SHA256算法生成的签名。
- 时间戳:需为Unix时间戳(秒级),误差超过5秒会被拒绝。
- 请求路径:需与官方API文档完全一致。
运行成功后,你将看到类似以下返回:
{"code":"0","data":[{"totalEq":"123.45","details":[{"ccy":"BTC","eq":"0.5","availBal":"0.3"}]}]}
进阶实战:实现市价下单与止损逻辑
市价买入脚本
def place_market_order(side, sz, instId="BTC-USDT"):
method = "POST"
request_path = "/api/v5/trade/order"
timestamp = str(int(time.time()))
body = {
"instId": instId,
"tdMode": "cash",
"side": side,
"ordType": "market",
"sz": sz
}
body_str = json.dumps(body)
signature = get_sign(timestamp, method, request_path, body_str)
headers = { /*同上*/ }
response = requests.post(base_url + request_path, headers=headers, data=body_str)
return response.json()
# 示例:以市价买入0.01 BTC
result = place_market_order("buy", "0.01")
print(result)
止损订单脚本(进阶)
通过轮询市场价或使用WebSocket,当价格跌破阈值时自动卖出,以下为简易版逻辑(非WebSocket):
def stop_loss_check(threshold=30000):
price_data = requests.get(base_url + "/api/v5/market/ticker?instId=BTC-USDT").json()
current_price = float(price_data["data"][0]["last"])
if current_price < threshold:
place_market_order("sell", "0.01")
print(f"触发止损,以{current_price}卖出")
常见问题问答(FAQ)
Q1:为什么总是收到“签名错误”的响应?
A:请检查:①时间戳是否精确到秒且为UTC时间;②请求路径是否与API文档完全一致(含大小写);③Secret Key是否包含换行符或空格。
Q2:如何获取K线历史数据进行策略回测?
A:使用/api/v5/market/history-candles接口,参数包括instId、bar(时间粒度)、limit等。
Q3:脚本运行时出现“rate limit exceeded”警告怎么办?
A:欧易对API请求频率有限制(通常每秒10次),建议在循环请求中添加time.sleep(0.1)。
Q4:是否可以通过欧易交易所下载获取测试环境?
A:欧易提供模拟盘环境(Demo),域名不同,但API逻辑一致,建议先在模拟盘验证代码。
Q5:Python脚本如何确保密钥安全?
A:使用环境变量(os.environ["API_KEY"])或加密配置文件,切勿将密钥写入源码或公开仓库。
风险提示与合规建议
- 市场风险:数字资产交易波动极大,自动化脚本可能放大亏损,务必设置止损并小仓位测试。
- 代码风险:建议使用
try-except捕获异常,防止网络中断导致订单错乱。 - 合规性:在使用欧易交易所官网提供的API时,请遵守当地法律法规,勿用于洗钱、操纵市场等非法行为。
通过本教程,您已掌握通过Python调用欧易API的核心方法,从基础查询到下单逻辑,每一步均经过实测验证,建议结合官方文档()深入学习WebSocket推送、高级订单类型等功能,构建更复杂的量化策略。
标签: 欧易API接口 Python交易脚本