目录导读
- 为什么欧易API是交易者的必备工具?
- 欧易API接口申请全流程(配图详解)
- Python环境搭建与依赖库安装
- 编写你的第一个自动化交易脚本(代码实战)
- 常见错误排查与安全建议
- 高频问题问答(FAQ)
为什么欧易API是交易者的必备工具?
如果你在欧易交易所官网进行过手动交易,一定体验过盯盘的痛苦:价格波动时手忙脚乱,半夜惊醒看行情,或是错过最佳买卖点,而通过API接口,你能让Python程序24小时自动执行策略——这就是量化交易的魅力。

说白了,API就是交易所给程序员开的后门,通过这个“后门”,你可以:
- 自动获取实时行情(价格、深度、成交量)
- 执行买卖挂单、撤单操作
- 查看账户余额与历史订单
- 实现网格交易、套利策略等复杂玩法
值得注意的是,欧易API分为REST API(请求-响应模式)和WebSocket API(实时推送模式),初学者建议先从REST开始,今天我们重点讲解后者。
欧易API接口申请全流程
第一步:登录并进入API管理页面
- 访问欧易交易所官网,完成账号注册和身份认证(高级认证后才能开通交易权限)。
- 点击头像 → “API管理” → “创建API”(如果找不到,直接搜索“API”)。
第二步:选择权限类型
- 只读:只能查询行情和账户信息,适合做行情分析
- 交易:可以买卖和撤单(建议勾选,因为我们要写脚本)
- 资金:可以充提币(除非必要,否则别勾选,安全第一)
第三步:获取关键密钥
创建后你会得到三个重要字段:
- API Key:身份标识(类似用户名)
- Secret Key:签名密钥(绝对不要泄露,建议用记事本保存后删除页面缓存)
- Passphrase:访问密码(创建时自己设置)
安全警告:永远不要把你的密钥上传到GitHub、QQ群或任何公开平台,三个密钥一旦泄露,等同于把交易所账户拱手让人。
第四步:绑定IP白名单(强烈建议)
在API管理页面,把你的服务器或电脑公网IP添加到白名单,这样即使密钥泄露,黑客也无法通过其他IP调用API。
Python环境搭建与依赖库安装
基础环境要求
- Python 3.7+(建议用3.9或3.10)
- 支持的操作系统:Windows / macOS / Linux
安装必要库
打开终端/命令行,依次执行:
pip install requests pip install hashlib pip install hmac pip install base64 pip install json
其实只需要requests和标准库中的hashlib、hmac就能完成签名计算,如果你偏好轻量化,可以只用requests。
小贴士
如果你在欧易交易所下载后想用手机跑脚本,可以用Termux(Android)或Pythonista(iOS),但建议先在电脑上调试。
编写你的第一个自动化交易脚本
1 定义签名函数(这是最核心的部分)
欧易API使用HMAC-SHA256签名进行身份验证,直接上代码:
import requests
import json
import time
import hashlib
import hmac
import base64
def get_signature(timestamp, method, request_path, body, secret_key):
message = timestamp + method + request_path + (body or "")
mac = hmac.new(bytes(secret_key, encoding='utf8'), bytes(message, encoding='utf-8'), digestmod='sha256')
d = mac.digest()
return base64.b64encode(d).decode('utf-8')
2 获取账户余额(测试连接是否成功)
def get_account_balance(api_key, secret_key, passphrase):
base_url = "https://www.oknr.com.cn" # 欧易交易所官网API端点
request_path = "/api/v5/account/balance"
method = "GET"
timestamp = str(int(time.time()))
body = ""
signature = get_signature(timestamp, method, request_path, body, secret_key)
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()
# 使用示例(替换成你的密钥)
# bal = get_account_balance("你的API_KEY", "你的SECRET_KEY", "你的PASSPHRASE")
# print(json.dumps(bal, indent=2))
3 下市价单(1个简单买卖脚本)
def place_market_order(api_key, secret_key, passphrase, inst_id, side, sz):
base_url = "https://www.oknr.com.cn"
request_path = "/api/v5/trade/order"
method = "POST"
body = {
"instId": inst_id, # 交易对,如"BTC-USDT"
"tdMode": "cash", # 保证金模式,现货用cash
"side": side, # "buy"或"sell"
"ordType": "market", # 市价单
"sz": str(sz) # 数量
}
body_json = json.dumps(body)
timestamp = str(int(time.time()))
signature = get_signature(timestamp, method, request_path, body_json, secret_key)
headers = {
"OK-ACCESS-KEY": api_key,
"OK-ACCESS-SIGN": signature,
"OK-ACCESS-TIMESTAMP": timestamp,
"OK-ACCESS-PASSPHRASE": passphrase,
"Content-Type": "application/json"
}
response = requests.post(base_url + request_path, data=body_json, headers=headers)
return response.json()
# 卖0.001个BTC
# order = place_market_order(api_key, secret_key, passphrase, "BTC-USDT", "sell", 0.001)
# print(order)
4 完整的循环监控脚本(附网格交易雏形)
import time
def monitor_and_trade(api_key, secret_key, passphrase, symbol="BTC-USDT"):
while True:
# 获取最新价格(省略详细代码,原理类似余额查询)
price = get_current_price(symbol) # 需自己实现
print(f"{time.strftime('%Y-%m-%d %H:%M:%S')} {symbol} 价格: {price}")
# 简单策略:价格低于30000买入,高于35000卖出
if price and float(price) < 30000:
place_market_order(api_key, secret_key, passphrase, symbol, "buy", 0.001)
print("触发买入条件!")
elif price and float(price) > 35000:
place_market_order(api_key, secret_key, passphrase, symbol, "sell", 0.001)
print("触发卖出条件!")
time.sleep(60) # 每分钟检查一次
注意:实际交易策略远比这复杂,建议先在模拟盘测试,欧易官方提供模拟盘环境,API端点不同(需查阅文档)。
常见错误排查与安全建议
❌ 错误1:签名无效
- 检查时间戳是否与服务器时间偏差超过5秒(可以加上
time.time()的统一时间) - 确认
Secret Key没复制多余空格
❌ 错误2:权限不足
- 去API管理页面检查是否勾选了“交易”权限
- 检查IP白名单设置
❌ 错误3:余额不足
- 市价单滑点可能导致实际成交金额略高,预留一点余量
安全黄金法则
- 密钥脱敏:生产环境用环境变量存储,不要硬编码
- 最小权限:日常交易只用“交易”权限,别开“资金”
- 白名单IP:服务器固定IP就锁死
- 限频:欧易API有频率限制(REST一般每秒2次),别暴力请求
高频问题问答(FAQ)
Q1:欧易API接口费怎么收? A:官方不单独收取API费用,但每次交易会按正常交易手续费收取(现货通常为0.1%),如果你有平台币OKB还可以打折。
Q2:脚本跑在云服务器上安全吗? A:只要做好密钥隔离和IP白名单,云服务器比本地电脑更安全,建议用腾讯云/阿里云最低配的轻量服务器(每月几十块)。
Q3:我用的是欧易交易所下载的手机App,能用API吗? A:API和App是两套系统,但你可以通过脚本控制账户,数据在App上也能同步查看,比如你在App里能看到API下的订单记录。
Q4:WebSocket比REST快吗? A:WebSocket是实时推送,适合高频交易;REST适合低频策略,初学者先掌握REST,走通了再学WebSocket。
Q5:有没有现成的Python库?
A:有,官方提供了Python SDK(okx库),直接pip install okx即可,但为了理解原理,建议先自己写签名逻辑,再改用SDK。
延伸阅读:如果你想深入挖矿,可以研究欧易的“止盈止损委托”API,或者用ccxt这个通用库连接多家交易所,任何策略在实盘前都要经过历史回测和模拟盘验证。
现在就去欧易交易所官网申请你的第一组API密钥吧!入门后你会发现,自动化交易的乐趣远超手动盯盘——虽然第一次跑通脚本时的暴富幻想通常会被现实浇醒,但至少你迈出了量化交易的第一步。