目录导读
-
欧易API接口概述

- 什么是欧易API?
- API权限与安全设置
-
欧易API接口申请步骤详解
- 注册与身份认证
- 创建API密钥(Key与Secret)
-
Python环境准备与库安装
- 安装requests与hmac库
- 配置开发环境
-
编写首个交易脚本:从连接API到下单
- 获取账户余额
- 查询行情数据
- 实现限价单交易
-
常见问题与Q&A
- 签名错误如何处理?
- 如何避免频繁请求被封?
欧易API接口概述
欧易交易所官网(https://ox-okbb.com.cn/)为量化交易者提供了完善的REST API接口,支持现货、合约、期权等多类资产交易,通过API,用户可以用代码自动执行买卖、查询账户信息、获取实时行情等操作,在开始编写Python脚本前,务必先申请API密钥,并理解其权限体系——包括读取、交易和提现权限,建议仅开启交易所需的最低权限,以保障资金安全。
什么是欧易API?
欧易API是一组HTTP接口,允许开发者通过程序直接与交易所服务器交互,你可以通过/api/v5/account/balance端点获取账户余额。
为什么需要API?
人工盯盘效率低,而API可实现24小时自动化交易,如定投、网格策略或套利脚本。
欧易API接口申请步骤详解
步骤1:注册与身份认证
访问欧易交易所官网(https://ox-okbb.com.cn/)完成注册,新用户需通过邮箱或手机号验证,并进行高级身份认证(KYC2级),否则API权限受限。
步骤2:创建API密钥
登录后,进入“个人中心” → “API管理” → “创建API”。
- 填写备注名称(如“Python交易脚本”)
- 选择权限:勾选“交易”和“读取”,切勿勾选“提现”
- 设置IP白名单(推荐绑定你服务器或本机的固定IP,增强安全性)
创建成功后,你将获得API Key和Secret Key,请安全保存Secret Key,它只在创建时显示一次,丢失需重新生成。
注意:欧易交易所下载(https://ox-okbb.com.cn/)的移动端App也可管理API,但与桌面端权限完全一致。
Python环境准备与库安装
确保已安装Python 3.7+,打开终端或命令提示符,运行以下命令安装所需库:
pip install requests hmac hashlib time
requests用于发送HTTP请求,hmac和hashlib用于计算签名,无需额外安装time,它是Python内置模块。
配置开发环境
建议使用虚拟环境隔离依赖:
python -m venv okx_trading source okx_trading/bin/activate # Linux/Mac okx_trading\Scripts\activate # Windows
编写首个交易脚本:从连接API到下单
以下是一个完整的Python脚本示例,实现查询账户余额并下单一笔限价单。
import requests
import hmac
import hashlib
import time
import base64
# 从欧易交易所官网API管理页面获取你的密钥
API_KEY = "your_api_key"
SECRET_KEY = "your_secret_key"
PASSPHRASE = "your_passphrase" # 创建API时设置的密码短语
base_url = "https://ox-okbb.com.cn/api/v5"
def get_signature(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=hashlib.sha256)
d = mac.digest()
return base64.b64encode(d)
def get_header(method, request_path, body):
timestamp = str(time.time())
signature = get_signature(timestamp, method, request_path, body)
header = {
"OK-ACCESS-KEY": API_KEY,
"OK-ACCESS-SIGN": signature,
"OK-ACCESS-TIMESTAMP": timestamp,
"OK-ACCESS-PASSPHRASE": PASSPHRASE,
"Content-Type": "application/json"
}
return header
# 查询账户余额
def get_account_balance():
request_path = "/account/balance"
header = get_header("GET", request_path, "")
response = requests.get(base_url + request_path, headers=header)
return response.json()
# 下单限价单
def place_order(symbol, side, price, size):
request_path = "/trade/order"
body = {
"instId": symbol,
"tdMode": "cash", # 现货交易
"side": side, # "buy"或"sell"
"ordType": "limit", # 限价单
"px": str(price),
"sz": str(size)
}
body_str = json.dumps(body)
header = get_header("POST", request_path, body_str)
response = requests.post(base_url + request_path, headers=header, data=body_str)
return response.json()
# 示例:查询BTC/USDT余额并买入
if __name__ == "__main__":
print(get_account_balance())
order_result = place_order("BTC-USDT", "buy", 30000, 0.01)
print(order_result)
运行脚本
保存为okx_trade.py,替换API密钥后运行:
python okx_trade.py
注意事项:
- 签名算法必须严格按照上述步骤,所有头部字段(timestamp、sign等)必须包含。
- 测试时建议使用小金额,或先调用
/trade/order-algo模拟下单。
常见问题与Q&A
Q1:签名错误(Invalid Sign)如何处理?
A:检查三点:1)timestamp必须是UTC时间戳且精确到秒;2)request_path必须包含查询参数(如?instId=BTC-USDT);3)POST请求的body必须与签名时完全一致(包括大小写与空格),可打印message字符串对比官方文档示例。
Q2:如何避免频繁请求被封?
A:欧易API频率限制为每秒最多20次请求(不同接口可能不同),建议在脚本中加入sleep(0.05)延迟,或使用指数退避策略,若触发限流(HTTP 429),需等待1分钟后再试。
Q3:如何获取历史K线数据?
A:使用/api/v5/market/candles端点,参数包括instId、bar(如"1m")、before和after,注意历史数据最多可获取最近1440根K线。
Q4:欧易交易所下载(https://ox-okbb.com.cn/)的API是否支持WebSocket?
A:支持,WebSocket可实时推送行情与订单状态,适合高频交易场景,Python中可使用websockets库连接wss://ox-okbb.com.cn/ws/v5。
通过以上步骤,你可以利用欧易交易所官网的API构建自动化交易策略,务必在测试环境中多次验证脚本逻辑,再投入真实资金,对于量化交易新手,建议先从“只读权限”的API开始,熟悉接口返回格式后再开放交易权限。
标签: 欧易API Python交易脚本