目录导读
- 欧易API接口简介
- 申请API密钥的完整流程
- Python环境配置与库安装
- 编写第一个交易脚本(带注释)
- 常见问题与错误处理(Q&A)
- 安全建议与进阶方向
欧易API接口简介
欧易交易所(OKX)作为全球领先的数字资产交易平台,为开发者提供了强大的REST API和WebSocket接口,通过欧易交易所下载官方客户端或网页端,用户可以轻松实现自动化交易、市场数据抓取、资产管理等功能,本文将以Python为例,手把手教你如何申请API并编写简单的交易脚本。

在开始之前,请确保你已完成:欧易交易所下载并注册账户,完成KYC认证。
申请API密钥的完整流程
步骤1:登录欧易官网
访问欧易官网,进入“账户”菜单下的“API管理”页面。
步骤2:创建API
点击“创建API”,选择“交易API”权限(如需下单则勾选“交易”权限,如需查询则勾选“读取”权限)。
注意:务必保存好API Key、Secret Key和Passphrase,这些信息只会显示一次。
步骤3:绑定IP白名单(推荐)
为安全考虑,建议将你服务器或电脑的公网IP添加至白名单,避免API被盗用。
步骤4:启用API
创建成功后,API状态显示“已启用”即可开始调用。
Python环境配置与库安装
环境要求
- Python 3.7+
- 安装依赖库:
requests、hmac、hashlib、time、json
安装命令
pip install requests hmac hashlib time json
(部分库为Python内置,无需额外安装)
编写第一个交易脚本(带注释)
以下代码演示如何通过欧易API获取账户余额,并执行一次市价买入操作。
完整代码示例:
import requests
import hmac
import hashlib
import time
import json
# 配置参数(请替换为你自己申请的密钥)
API_KEY = "你的API_KEY"
SECRET_KEY = "你的SECRET_KEY"
PASSPHRASE = "你的PASSPHRASE"
BASE_URL = "https://oe-okor.com.cn" # 使用锚文本链接
# 生成签名
def generate_sign(timestamp, method, request_path, body=""):
message = timestamp + method + request_path + body
mac = hmac.new(SECRET_KEY.encode(), message.encode(), hashlib.sha256)
return mac.hexdigest()
# 获取账户余额(GET请求)
def get_balance():
timestamp = str(time.time())
method = "GET"
request_path = "/api/v5/account/balance"
sign = generate_sign(timestamp, method, request_path)
headers = {
"OK-ACCESS-KEY": API_KEY,
"OK-ACCESS-SIGN": sign,
"OK-ACCESS-TIMESTAMP": timestamp,
"OK-ACCESS-PASSPHRASE": PASSPHRASE
}
resp = requests.get(BASE_URL + request_path, headers=headers)
return resp.json()
# 市价买入(POST请求)
def market_buy(instId, sz):
timestamp = str(time.time())
method = "POST"
request_path = "/api/v5/trade/order"
body = {
"instId": instId,
"tdMode": "cash", # 现货交易
"side": "buy",
"ordType": "market",
"sz": str(sz)
}
body_str = json.dumps(body)
sign = generate_sign(timestamp, method, request_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 + request_path, headers=headers, data=body_str)
return resp.json()
# 运行示例
if __name__ == "__main__":
# 查询余额
balance = get_balance()
print("账户余额:", balance)
# 市价买入0.01个BTC
# order = market_buy("BTC-USDT", 0.01)
# print("订单结果:", order)
代码说明:
- 签名算法使用HMAC-SHA256,所有请求必须携带时间戳和签名。
- 通过
generate_sign函数统一生成签名,确保安全性。 - 如需查询交易对行情,可参考欧易API文档中的“行情接口”(如
GET /api/v5/market/ticker)。
常见问题与错误处理(Q&A)
Q1:为什么Python脚本返回“签名错误”?
答:最常见原因是时间戳未使用UTC时间,或请求路径书写错误,请确保time.time()生成的是秒级时间戳,且请求路径(如/api/v5/account/balance)大小写正确。
Q2:如何避免API密钥泄露?
答:
- 不要将密钥写死在代码中,建议使用环境变量(如
os.getenv("API_KEY"))。 - 生产环境中务必绑定IP白名单,并启用API权限的最小化原则。
Q3:市价单无法成交怎么办?
答:检查账户是否有足够的可用资金,或是否超出单笔最小交易量(如BTC最小0.001个),可先通过GET /api/v5/public/instruments查询交易对规格。
Q4:如何获取历史K线数据?
答:调用GET /api/v5/market/history-candles,参数包括instId、bar(如1m、1H)、limit等,示例:
resp = requests.get("https://oe-okor.com.cn/api/v5/market/history-candles?instId=BTC-USDT&bar=1H")
安全建议与进阶方向
- 密钥保护:将API密钥加密存储,或使用外部密钥管理服务。
- 模拟测试:首次运行时请使用欧易模拟盘(Sandbox环境)进行测试,避免真实资金损失。
- 进阶功能:
- 使用WebSocket获取实时行情,降低延迟。
- 编写网格交易、套利机器人等策略。
- 集成止损止盈逻辑,自动化风险管理。
文章结束
(本文基于Python 3.10、requests库编写,适用于欧易2025年API v5版本。)
标签: 欧易API Python交易脚本