目录导读
- 欧易API接口申请准备
- Python环境搭建与库安装
- 获取API密钥与签名生成
- 编写基础交易脚本(挂单/撤单)
- 常见问题与错误排查
- 安全建议与合规注意事项
欧易API接口申请准备
在开始编写交易脚本前,首先需要完成欧易交易所的API权限申请,登录欧易交易所官网后,进入“账户安全中心”或“API管理”页面,点击“创建API Key”,系统会要求进行身份验证(如手机短信、邮箱验证或谷歌身份验证器)。

申请步骤:
- 填写API名称(如“Python交易脚本”)。
- 选择权限范围:通常建议勾选“交易权限”和“资金权限”(若需查询余额)。
- 生成后,务必保存API Key和Secret Key,Secret Key仅显示一次,丢失需重新生成。
注意:使用API时需绑定服务器IP白名单,避免密钥泄露导致资产风险,若仅用于学习,可暂不设IP限制,但测试环境应使用模拟账户。
Python环境搭建与库安装
1 环境要求
- Python 3.7+(推荐3.9或更高版本)
- 操作系统:Windows / macOS / Linux均可
2 安装必要依赖库
打开终端执行以下命令:
pip install requests hashlib time hmac json
requests:发送HTTP请求hashlib与hmac:生成签名time与json:时间戳与数据解析
若需更高级功能(如WebSocket实时行情),可安装websocket-client:
pip install websocket-client
获取API密钥与签名生成
欧易API使用HMAC-SHA256签名算法验证请求合法性,以下为Python签名生成示例:
import hmac
import hashlib
import base64
import json
import time
def generate_sign(secret_key, method, request_path, body=''):
timestamp = str(time.time()).split('.')[0] + '.' + str(time.time()).split('.')[1][:3]
sign_str = timestamp + method.upper() + request_path + (json.dumps(body) if body else '')
signature = hmac.new(secret_key.encode('utf-8'), sign_str.encode('utf-8'), hashlib.sha256).hexdigest()
return timestamp, signature
参数说明:
secret_key:步骤一保存的Secret Keymethod:HTTP方法(GET/POST)request_path:如/api/v5/trade/orderbody:POST请求的JSON数据
编写基础交易脚本(挂单/撤单)
1 查询账户余额(GET请求)
import requests
def get_balance(api_key, secret_key, passphrase='你的passphrase'):
base_url = 'https://www.okx.com'
request_path = '/api/v5/account/balance'
method = 'GET'
timestamp, sign = generate_sign(secret_key, method, request_path)
headers = {
'OK-ACCESS-KEY': api_key,
'OK-ACCESS-SIGN': sign,
'OK-ACCESS-TIMESTAMP': timestamp,
'OK-ACCESS-PASSPHRASE': passphrase
}
response = requests.get(base_url + request_path, headers=headers)
return response.json()
注意:欧易API目前使用OK-ACCESS-PASSPHRASE字段,申请API时需单独设置(非登录密码)。
2 创建市价买单(POST请求)
def place_market_buy(api_key, secret_key, passphrase, inst_id='BTC-USDT', sz='0.001'):
base_url = 'https://www.okx.com'
request_path = '/api/v5/trade/order'
method = 'POST'
body = {
'instId': inst_id,
'tdMode': 'cash', # 现货交易
'side': 'buy',
'ordType': 'market',
'sz': sz
}
timestamp, sign = generate_sign(secret_key, method, request_path, body)
headers = {
'OK-ACCESS-KEY': api_key,
'Content-Type': 'application/json',
'OK-ACCESS-SIGN': sign,
'OK-ACCESS-TIMESTAMP': timestamp,
'OK-ACCESS-PASSPHRASE': passphrase
}
response = requests.post(base_url + request_path, json=body, headers=headers)
return response.json()
若需交易其他币种,可至欧易交易所下载查看最新交易对列表。
3 撤单操作
def cancel_order(api_key, secret_key, passphrase, inst_id='BTC-USDT', ord_id='你的订单ID'):
base_url = 'https://www.okx.com'
request_path = '/api/v5/trade/cancel-order'
method = 'POST'
body = {'instId': inst_id, 'ordId': ord_id}
timestamp, sign = generate_sign(secret_key, method, request_path, body)
# ...(headers同上)
response = requests.post(base_url + request_path, json=body, headers=headers)
return response.json()
常见问题与错误排查
Q1:签名总报错怎么办?
A:检查三点:
- Secret Key是否完整复制(无空格或换行符)。
- 时间戳格式是否为Unix时间戳(精确到毫秒,如
123)。 - 请求路径是否与官方文档完全一致(区分大小写)。
Q2:提示“API key无权限”?
A:在欧易交易所官网的API管理页面,检查是否已勾选“交易”和“资金”权限,若已勾选仍报错,需删除旧API并重新生成。
Q3:如何测试脚本是否正常运行?
A:使用https://www.okx.com/api/v5/public/time获取服务器时间,验证网络连通性,若返回{"code":"0","data":[{"ts":"1700000000.123"}]},则环境配置正确。
安全建议与合规注意事项
-
密钥保护:
- 不要将Secret Key硬编码在脚本中,建议使用环境变量或配置文件(如
.env文件)。 - 生产环境必须启用IP白名单,避免密钥泄露。
- 不要将Secret Key硬编码在脚本中,建议使用环境变量或配置文件(如
-
使用模拟盘:
- 初学者可先申请欧易交易所下载的模拟账户,使用
base_url = 'https://www.okx.com'进行测试(模拟盘需单独配置)。 - 真实交易前,务必在测试环境验证所有逻辑。
- 初学者可先申请欧易交易所下载的模拟账户,使用
-
风险控制:
- 建议编写“止损检查”函数,避免行情剧烈波动导致损失。
- 控制下单频率,避免触发API限流(每秒最多5次请求)。
-
法律合规:
- 自动化交易需遵守目标国家/地区法规,如中国境内禁止使用API进行虚拟货币交易。
- 保持交易记录完整,便于税务申报或审计。
通过本教程,您已掌握欧易API接入与Python基础脚本编写,如需进阶学习“止盈止损策略”或“网格交易算法”,可参考官方技术文档或社区开源项目。任何交易策略都存在风险,请务必以保护资金安全为首要目标。
标签: 欧易API Python交易脚本