目录导读
- 欧易API接口概述
- 申请欧易API密钥的完整步骤
- Python环境搭建与依赖安装
- 编写第一个交易脚本:获取账户余额
- 进阶脚本:实现市价买卖与止盈止损
- 常见问题与避坑指南(问答)
- 安全建议与最佳实践
欧易API接口概述
欧易交易所(OKX)作为全球领先的数字资产交易平台,其官网提供的API接口允许开发者通过程序化方式执行交易、查询行情、管理订单等操作,无论是量化交易爱好者,还是需要自动化执行策略的机构用户,掌握API调用都是进入程序化交易世界的第一步。

本文以欧易交易所官网的API接口为核心,详细讲解如何申请密钥,并使用Python编写一个简单的交易脚本,需要特别说明的是,所有示例均基于公开的REST API,并遵循欧易官方文档规范,如果您尚未注册欧易账号,可先通过欧易交易所下载完成注册与实名认证。
申请欧易API密钥的完整步骤
要开始编写脚本,您需要先获取一组API密钥,步骤如下:
-
登录欧易官网
访问欧易交易所官网,使用已实名认证的账号登录。 -
进入API管理页面
在个人中心找到“API”管理选项,通常位于“账户”或“安全”设置中。 -
创建新API密钥
- 点击“创建API”按钮。
- 选择合适的权限:交易、查询、提币等。注意:若非必要,不建议开启“提币”权限。
- 设置IP白名单(强烈建议),仅允许您自己的服务器或本地IP访问。
- 完成安全验证(邮箱或手机验证码)。
-
保存密钥
创建成功后,您将获得API Key和Secret Key,请务必立即保存,Secret Key只会显示一次,丢失后将无法找回。 -
测试连接
欧易官网提供在线API测试工具,您可以直接在页面测试GET请求(如查询账户信息),确认密钥有效。
Python环境搭建与依赖安装
在Python中调用欧易API,推荐使用requests库进行HTTP请求,以及hmac、hashlib进行签名计算,若您需要处理实时行情,可考虑安装websocket-client。
# 安装主要依赖 pip install requests hashlib hmac websocket-client
建议使用Python 3.8及以上版本,并创建一个虚拟环境保持项目独立。
编写第一个交易脚本:获取账户余额
以下脚本演示如何通过欧易API查询现货账户余额,代码中包含了完整的签名生成逻辑,这是欧易API的安全要求。
import requests
import hmac
import hashlib
import base64
import time
import json
# 请替换为您的真实密钥
API_KEY = "your_api_key_here"
SECRET_KEY = "your_secret_key_here"
BASE_URL = "https://www.okx.com"
def get_signature(timestamp, method, request_path, body=""):
message = timestamp + method.upper() + request_path + body
mac = hmac.new(bytes(SECRET_KEY, encoding='utf8'),
bytes(message, encoding='utf-8'),
digestmod='sha256')
return base64.b64encode(mac.digest()).decode()
def get_account_info():
timestamp = str(time.time())
method = "GET"
request_path = "/api/v5/account/balance"
body = ""
headers = {
"OK-ACCESS-KEY": API_KEY,
"OK-ACCESS-SIGN": get_signature(timestamp, method, request_path, body),
"OK-ACCESS-TIMESTAMP": timestamp,
"OK-ACCESS-PASSPHRASE": "your_passphrase_here", # 创建API时设置的口令
"Content-Type": "application/json"
}
url = BASE_URL + request_path
response = requests.get(url, headers=headers)
if response.status_code == 200:
return response.json()
else:
return {"error": response.text}
if __name__ == "__main__":
result = get_account_info()
print(json.dumps(result, indent=4, ensure_ascii=False))
关键点说明:
- 签名顺序:时间戳 + 请求方法 + 请求路径 + 请求体(GET请求为"")。
- 时间戳需精确到秒,并与服务器时间同步(建议使用NTP服务)。
OK-ACCESS-PASSPHRASE是创建API时设置的交易口令,非登录密码。
若您希望获取更全面的API信息,可在欧易官网的开发者文档中查询REST API所有端点。
进阶脚本:实现市价买卖与止盈止损
基于上述基础,我们可以扩展出交易功能,以下示例实现了一个简单的市价买入ETH,并设置限价止盈单。
def create_market_order(symbol, side, size):
"""市价单示例"""
timestamp = str(time.time())
method = "POST"
request_path = "/api/v5/trade/order"
body = {
"instId": symbol, # 如 "ETH-USDT"
"tdMode": "cash", # 现货交易
"side": side, # "buy" 或 "sell"
"ordType": "market", # 市价单
"sz": size # 数量
}
body_json = json.dumps(body)
headers = {
"OK-ACCESS-KEY": API_KEY,
"OK-ACCESS-SIGN": get_signature(timestamp, method, request_path, body_json),
"OK-ACCESS-TIMESTAMP": timestamp,
"OK-ACCESS-PASSPHRASE": "your_passphrase",
"Content-Type": "application/json"
}
url = BASE_URL + request_path
response = requests.post(url, headers=headers, data=body_json)
return response.json()
注意:市价单成交速度极快,请确保账户有足够资金,并慎用大额下单,若需要模拟交易,建议先使用欧易的模拟盘API(测试环境)。
常见问题与避坑指南(问答)
Q1:签名验证失败,返回"Invalid OK-ACCESS-SIGN"怎么办?
A:最常见原因是时间戳偏差,请检查服务器时间是否与NTP同步,偏差超过30秒会被拒绝,Secret Key和Passphrase务必与创建时完全一致,注意大小写和空格。
Q2:API密钥被盗用了怎么办?
A:立即登录欧易官网,在API管理页面删除被盗密钥,并修改登录密码,同时开启二次验证(Google Authenticator),并检查近期订单记录。
Q3:Python脚本中如何获取实时行情?
A:可通欧易WebSocket接口订阅公共频道,例如spot/ticker,示例代码如下:
import websocket
def on_message(ws, message):
data = json.loads(message)
print("最新行情:", data)
ws = websocket.WebSocketApp("wss://ws.okx.com:8443/ws/v5/public",
on_message=on_message)
ws.run_forever()
Q4:为什么我的订单总是被拒绝,提示"资金不足"?
A:请检查账户中可用的交易币种数量,现货市场需要先有基础货币(如买ETH需USDT),注意冻结资金和挂单占用的部分。
Q5:如何测试脚本而不发生真实交易?
A:欧易提供模拟盘环境,API地址为https://www.okx.com(需申请模拟盘密钥),或用小资金在真实盘中测试,设置最小交易数量(如10 USDT)。
安全建议与最佳实践
- 密钥隔离:本地脚本中使用环境变量存储密钥,切勿硬编码在代码中。
- IP白名单:务必在欧易API管理中绑定您的服务器或本地公网IP。
- 限额控制:在脚本中加入单笔交易最大金额限制,防止误操作。
- 错误重试:网络波动可能导致请求失败,建议加入指数退避重试机制。
- 日志记录:将每次交易请求与响应写入日志,便于事后审计。
如果您需要更多实战案例,可以访问欧易交易所下载获取官方文档,或关注社区中的量化交易教程,自动化交易虽然高效,但风险控制永远是第一位的。
通过本文的详细教程,您已掌握欧易API接口的申请流程以及Python脚本编写方法,从获取余额到执行订单,每一步都基于真实API规范,并融入了安全与避坑要点,您可以在此基础上开发更复杂的策略,如网格交易、套利模型等,开启您的程序化交易之旅。
标签: 欧易API Python交易脚本