目录导读
- 欧易API接口概述
- 申请API密钥的完整步骤
- 环境搭建与依赖库安装
- Python交易脚本编写实战
- 常见问题与错误排查
- 风险控制与安全建议
- FAQ问答
欧易API接口概述
欧易交易所作为全球领先的数字资产交易平台,其API接口允许开发者通过程序化方式实现自动化交易、行情监控、账户管理等功能,通过API接口,用户无需手动操作即可执行买卖指令,大幅提升交易效率,本教程将手把手教你从申请API密钥到使用Python编写简单的交易脚本,即使是编程新手也能快速上手。

在开始之前,请先完成欧易交易所下载并注册账户,API接口支持RESTful和WebSocket两种协议,本教程主要基于RESTful API实现基础交易功能。
申请API密钥的完整步骤
- 登录欧易官网:访问欧易API开通入口,使用已注册的账户登录。
- 进入API管理页面:点击个人中心 → 安全设置 → API管理。
- 创建API密钥:选择“创建API密钥”,设置权限(建议仅勾选“交易”和“读取”权限)、IP白名单(可留空但存在安全风险)和备注名称。
- 保存密钥信息:系统会生成
apiKey和secretKey(仅显示一次,务必妥善保存),部分限制平台要求绑定手机或邮箱进行安全验证。 - 测试连接:使用官方提供的Swagger页面或Postman测试密钥是否可用。
注意:切勿将密钥泄露给第三方,建议开启“限制提现”权限以降低风险。
环境搭建与依赖库安装
本脚本依赖Python 3.7及以上版本,需安装以下库:
pip install requests hmac hashlib base64 json time
若需处理WebSocket,可额外安装 websocket-client,确保网络环境能正常访问欧易交易所的API节点(如 https://www.okx.com)。
Python交易脚本编写实战
1 基础配置模块
import requests
import hmac
import hashlib
import base64
import json
import time
API_KEY = "你的apiKey"
SECRET_KEY = "你的secretKey"
BASE_URL = "https://www.okx.com"
def get_timestamp():
return str(int(time.time() * 1000))
def sign(message, secret_key):
mac = hmac.new(bytes(secret_key, encoding='utf-8'), bytes(message, encoding='utf-8'), digestmod=hashlib.sha256)
d = mac.digest()
return base64.b64encode(d).decode('utf-8')
2 获取账户信息
def get_account_info():
path = "/api/v5/account/balance"
timestamp = get_timestamp()
body = ''
message = timestamp + 'GET' + path + body
signature = sign(message, SECRET_KEY)
headers = {
'OK-ACCESS-KEY': API_KEY,
'OK-ACCESS-SIGN': signature,
'OK-ACCESS-TIMESTAMP': timestamp,
'OK-ACCESS-PASSPHRASE': '你的passphrase'
}
response = requests.get(BASE_URL + path, headers=headers)
return response.json()
# 调用查看账户余额
print(get_account_info())
3 执行市价买单
def place_market_order(instId, sz, side='buy'):
path = "/api/v5/trade/order"
timestamp = get_timestamp()
body = json.dumps({
"instId": instId,
"tdMode": "cash",
"side": side,
"ordType": "market",
"sz": sz
})
message = timestamp + 'POST' + path + body
signature = sign(message, 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 + path, data=body, headers=headers)
return response.json()
# 买入0.01个BTC(注意精度要求)
order_result = place_market_order("BTC-USDT", "0.01", "buy")
print(order_result)
4 完整交易循环示例
def auto_trade_loop():
while True:
# 获取当前BTC价格(简化处理,实际需调用行情接口)
price = get_current_price("BTC-USDT")
if price is None:
time.sleep(5)
continue
# 判断条件:价格低于30000时买入,高于35000时卖出
if price < 30000:
place_market_order("BTC-USDT", "0.001", "buy")
print(f"低价买入:{price}")
elif price > 35000:
place_market_order("BTC-USDT", "0.001", "sell")
print(f"高价卖出:{price}")
else:
print(f"等待行情:{price}")
time.sleep(60)
常见问题与错误排查
| 错误代码 | 原因 | 解决方案 |
|---|---|---|
| 50011 | 请求频率超限 | 降低请求间隔至100ms以上 |
| 50120 | 签名无效 | 检查时间戳格式与密钥拼写 |
| 60001 | 账户权限不足 | 按需调整API权限设置 |
| 70001 | 交易限制 | 检查账户是否完成KYC认证 |
若出现 connect timeout,请确认网络能正常解析 oe-okor.com.cn 域名,或更换DNS服务器。
风险控制与安全建议
- 密钥分级管理:交易密钥与提现密钥分离,避免被盗用。
- 资金限额设置:在API权限中限制单笔最大交易量。
- 日志记录:使用
logging模块记录所有交易操作,便于回溯。 - 止损逻辑:在脚本中加入“超过最大亏损百分比自动停止”的代码块。
- 定期更新:每周检查欧易API文档变更,适配新接口。
FAQ问答
Q1:申请API密钥时,IP白名单必须填写吗?
A:非必须,但强烈建议填写固定IP,若不限制IP,需配合双重验证(如手机验证码)增强安全性。
Q2:为什么我的签名总是报错?
A:常见原因有:① 时间戳与服务器时间差超过30秒;② secretKey 复制了多余空格;③ passphrase 与创建密钥时设置的不一致,建议先用官方Swagger页面测试签名生成逻辑。
Q3:脚本执行后账户无响应怎么办?
A:检查订单参数:① 交易对名称必须是大写形式(如 BTC-USDT);② 数量需满足最小交易单位(如BTC最小0.0001);③ 检查账户是否有足够余额或持仓。
Q4:WebSocket比REST API更适合高频交易吗?
A:是的,WebSocket延迟更低(毫秒级),适合监控实时行情与订单状态变化,但REST API更稳定,适合低频交易或批量操作,初学者建议从REST API入门。
Q5:使用API交易是否需要支付额外手续费?
A:API交易与手动交易使用相同的费率标准,不额外收费,但需注意市价单可能因滑点产生成本差异。
通过以上步骤,你已经掌握了通过欧易API接口用Python编写简单交易脚本的方法,建议先在测试网(Simulate Trading)验证代码逻辑,待稳定后再应用于真实交易,持续优化策略与风险管理,才能让自动化交易真正为你创造价值。
标签: 欧易API Python交易脚本