目录导读
- 欧易API接口概述:了解欧易交易所API的功能与优势
- API接口申请流程:手把手教你在欧易官网完成密钥配置
- Python环境搭建:安装必要库与开发工具
- 编写交易脚本实战:获取行情、下单与账户管理
- 常见问题与问答:解决API调用中的高频疑问
欧易API接口概述
欧易交易所(OKX)是全球领先的数字资产交易平台,其官方API接口允许开发者通过程序化方式实现市场数据查询、自动化交易、资产管理等操作,对于量化交易爱好者而言,掌握欧易API的申请与使用是构建策略的第一步,本文将基于欧易交易所官网的API文档,结合Python语言,从零讲解如何编写一个简单的交易脚本。

在使用API前,需明确其核心功能:
- REST API:获取实时行情、历史数据、账户信息等。
- WebSocket API:订阅市场深度、成交明细等实时数据。
- 交易API:下单、撤单、查询订单状态。
小贴士:若您尚未注册欧易账户,建议先通过欧易交易所下载完成开户与身份认证,这是调用API的前提条件。
欧易API接口申请教程
1 登录欧易官网,进入API管理页面
- 访问欧易官网,登录您的账户。
- 在导航栏中找到“API”入口(通常位于个人中心或开发者板块)。
- 点击“新建API”开始申请。
2 配置API密钥权限
申请时需要设置以下参数:
- API名称:自定义标识,如“Python测试脚本”。
- 权限范围:勾选“读取”、“交易”、“提币”(建议仅开启“读取”和“交易”以降低风险)。
- IP白名单:强烈建议绑定服务器或本地IP,防止密钥泄露后被滥用。
完成配置后,系统将生成API Key和Secret Key,请务必妥善保存(Screts Key只显示一次)。
安全提示:切勿将密钥明文存储于GitHub等公开仓库中,若密钥泄露,请立即在欧易交易所官网的API管理页面删除并重置。
3 验证API连通性
官方提供测试环境(模拟盘)用于调试,建议新手先在此环境试验,申请时勾选“模拟盘权限”即可。
Python环境搭建
1 安装依赖库
在终端执行以下命令安装Python的HTTP请求库与加密库:
pip install requests hashlib hmac base64 json
2 创建配置文件
新建config.py文件,存储API密钥:
# config.py API_KEY = 'your_api_key_here' SECRET_KEY = 'your_secret_key_here' PASSPHRASE = 'your_passphrase_here' # 创建API时设置的交易密码 BASE_URL = 'https://www.okx.com' # 欧易官网API端点
编写交易脚本实战
1 获取账户余额(GET请求)
import requests
import hmac
import hashlib
import base64
import json
from config import API_KEY, SECRET_KEY, PASSPHRASE
def get_timestamp():
return str(int(requests.get(f'https://oe-okor.com.cn/api/v5/public/time').json()['data'][0]['ts']))
def sign_request(method, request_path, body=''):
timestamp = get_timestamp()
message = timestamp + method + request_path + body
mac = hmac.new(bytes(SECRET_KEY, encoding='utf8'), bytes(message, encoding='utf8'), digestmod=hashlib.sha256)
d = base64.b64encode(mac.digest())
return d, timestamp
headers = {
"OK-ACCESS-KEY": API_KEY,
"OK-ACCESS-SIGN": "",
"OK-ACCESS-TIMESTAMP": "",
"OK-ACCESS-PASSPHRASE": PASSPHRASE,
"Content-Type": "application/json"
}
request_path = "/api/v5/account/balance"
sign, timestamp = sign_request('GET', request_path)
headers["OK-ACCESS-SIGN"] = sign.decode('utf-8')
headers["OK-ACCESS-TIMESTAMP"] = timestamp
response = requests.get(f'{BASE_URL}{request_path}', headers=headers)
print('账户余额:', response.json())
2 获取实时行情(示例为BTC/USDT)
def get_ticker(symbol='BTC-USDT'):
request_path = f"/api/v5/market/ticker?instId={symbol}"
sign, timestamp = sign_request('GET', request_path)
headers["OK-ACCESS-SIGN"] = sign.decode('utf-8')
headers["OK-ACCESS-TIMESTAMP"] = timestamp
response = requests.get(f'{BASE_URL}{request_path}', headers=headers)
return response.json()
print(get_ticker('ETH-USDT'))
3 下单交易(POST请求)
def place_order(symbol, side, size, price=''):
body = {
"instId": symbol,
"tdMode": "cash", # 现货交易
"side": side, # "buy" 或 "sell"
"ordType": "limit" if price else "market",
"sz": str(size),
"px": str(price) if price else ""
}
body_str = json.dumps(body)
request_path = "/api/v5/trade/order"
sign, timestamp = sign_request('POST', request_path, body_str)
headers["OK-ACCESS-SIGN"] = sign.decode('utf-8')
headers["OK-ACCESS-TIMESTAMP"] = timestamp
response = requests.post(f'{BASE_URL}{request_path}', data=body_str, headers=headers)
return response.json()
# 示例:以市价买入0.01 BTC
print(place_order('BTC-USDT', 'buy', 0.01))
4 封装为独立脚本
将上述功能整合到trade_bot.py中,并添加循环执行逻辑:
if __name__ == "__main__":
# 每30秒输出一次BTC价格
import time
while True:
ticker = get_ticker('BTC-USDT')
price = ticker['data'][0]['last']
print(f"BTC当前价格: {price} USD")
time.sleep(30)
常见问题与问答(FAQ)
Q1:申请API时,IP白名单必须设置吗?
A:强烈建议设置,白名单可限制只有指定IP能调用API,即使密钥泄露,他人也无法通过未绑定的IP操作账户,若您使用固定服务器或本地网络,请务必添加对应IP。
Q2:签名无法通过,返回“sign error”怎么办?
A:常见原因包括:
- 时间戳与服务器时间差超过5秒(需同步系统时间)。
- Secret Key复制错误(注意不要有空格)。
- 请求体(body)签名时未使用JSON字符串格式。
建议通过欧易交易所官网的API接口测试工具调试。
Q3:如何避免频繁请求被限制?
A:欧易API对速率有限制(如REST API每秒最多10次),可在脚本中添加time.sleep(0.1),或使用官方推荐的重试机制,若需高频交易,建议使用WebSocket API。
Q4:脚本可以在欧易交易所下载的模拟盘中测试吗?
A:可以,申请API时勾选“模拟盘权限”,并将请求的base URL改为模拟盘地址(如https://www.okex.com),模拟盘和实盘环境独立,可放心测试。
Q5:部署到云服务器时需要注意什么?
A:
- 将密钥存储为环境变量,不要硬编码。
- 开启服务器防火墙,仅放行必要端口。
- 添加异常处理机制,如断线重连、订单失败重试。
通过本文的欧易API接口申请教程,您已掌握使用Python连接欧易交易所的基础流程,从申请密钥到实战脚本,每一步都兼顾安全与效率,未来可在此基础上接入技术指标(如MA、RSI)或机器学习模型,构建更复杂的量化策略,建议持续关注欧易官网的API更新日志,以获取新增功能与优化。
标签: 欧易API Python交易脚本