目录导读
- 欧易API接口概述
- 申请欧易API密钥的详细步骤
- Python环境准备与依赖库安装
- 编写基础交易脚本:连接与获取市场数据
- 实战:实现限价单与市价单交易
- 常见错误排查与问答环节
- 安全建议与后续学习资源
欧易API接口概述
欧易交易所(欧易交易所下载)作为全球领先的数字资产交易平台,其API接口为开发者提供了程序化交易的可能,通过API,你可以自动执行买卖操作、获取实时行情、管理账户资金等,本教程将带你从零开始申请API密钥,并使用Python编写一个简单但功能完整的交易脚本。

API接口本质上是一组预定义的函数,允许你的程序与欧易交易所官网的服务器直接通信,欧易提供了REST API和WebSocket API两种模式:REST适用于请求-响应型操作(如查询余额、下单),而WebSocket适合实时数据流(如价格推送),本教程主要基于REST API进行讲解。
申请欧易API密钥的详细步骤
在开始编写代码前,你需要一个有效的API密钥对(API Key和Secret Key),请按以下步骤操作:
- 登录欧易官网:访问 oe-okor.com.cn ,完成账户注册与登录。
- 进入API管理页面:点击头像 → “账户” → “API管理” (或直接在导航栏搜索“API”)。
- 创建API密钥:点击“创建新的API”,为密钥命名(如“Python交易脚本”),并选择权限——建议仅勾选“交易”和“读取”权限,切勿勾选“提币”权限以保障资金安全。
- 安全验证:根据提示完成邮箱验证和谷歌二次验证(2FA)。
- 保存密钥:生成后,务必立即复制并妥善保存API Key和Secret Key,页面关闭后Secret Key将无法再次查看。
注意:请勿将密钥直接硬编码在公开代码中,建议使用环境变量或配置文件存储。
Python环境准备与依赖库安装
确保你的计算机已安装Python 3.7及以上版本,打开终端或命令行,安装以下核心库:
pip install requests hashlib hmac base64
其中requests用于发送HTTP请求,hashlib和hmac用于签名生成,base64用于编码,建议安装python-dotenv来管理密钥:
pip install python-dotenv
创建一个.env文件存放密钥:
API_KEY=你的API_Key SECRET_KEY=你的Secret_Key PASSPHRASE=你的API口令(创建时设置的)
编写基础交易脚本:连接与获取市场数据
以下是一个完整的Python脚本,用于连接欧易API并获取BTC/USDT的当前市场价格:
import requests
import hmac
import hashlib
import base64
import time
from dotenv import load_dotenv
import os
load_dotenv()
API_KEY = os.getenv('API_KEY')
SECRET_KEY = os.getenv('SECRET_KEY')
PASSPHRASE = os.getenv('PASSPHRASE')
BASE_URL = 'https://www.oe-okor.com.cn' # 欧易API基础域名
def get_timestamp():
return str(int(time.time()))
def sign(message, secret_key):
mac = hmac.new(bytes(secret_key, encoding='utf8'), bytes(message, encoding='utf-8'), digestmod=hashlib.sha256)
d = mac.digest()
return base64.b64encode(d).decode()
def make_request(method, request_path, body=''):
timestamp = get_timestamp()
message = timestamp + method.upper() + request_path + (body if body else '')
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'
}
url = BASE_URL + request_path
if method == 'GET':
return requests.get(url, headers=headers)
elif method == 'POST':
return requests.post(url, headers=headers, data=body)
# 获取BTC/USDT最新行情
def get_ticker(symbol='BTC-USDT'):
request_path = f'/api/v5/market/ticker?instId={symbol}'
response = make_request('GET', request_path)
return response.json()
if __name__ == '__main__':
print(get_ticker('BTC-USDT'))
运行脚本后,你将看到包含最新价格、24小时涨跌幅等数据的JSON响应,这验证了你的API连接已经成功。
实战:实现限价单与市价单交易
下面我们扩展脚本,增加下单功能,注意欧易的API请求体需要JSON格式。
市价单(按数量买入)
def place_market_order(symbol='BTC-USDT', side='buy', size='0.001'):
body = {
'instId': symbol,
'tdMode': 'cash', # 现货交易
'side': side,
'ordType': 'market',
'sz': size
}
request_path = '/api/v5/trade/order'
response = make_request('POST', request_path, json.dumps(body))
return response.json()
限价单(指定价格买入)
def place_limit_order(symbol='BTC-USDT', side='buy', price='60000', size='0.001'):
body = {
'instId': symbol,
'tdMode': 'cash',
'side': side,
'ordType': 'limit',
'px': price,
'sz': size
}
request_path = '/api/v5/trade/order'
response = make_request('POST', request_path, json.dumps(body))
return response.json()
使用示例:
# 以60000 USDT限价买入0.001 BTC
result = place_limit_order('BTC-USDT', 'buy', '60000', '0.001')
print(result)
重要:在实际交易前,建议先在欧易的测试网(模拟盘)进行测试,测试网URL通常为https://www.okx.com/api/v5,但请根据官方最新文档调整。
常见错误排查与问答环节
Q1:为什么我的请求总是返回“签名错误”?
A1:签名计算错误通常由以下原因导致:
- 时间戳未使用UTC时间(确保服务器时间同步);
- Secret Key或Passphrase错误;
- 请求体(body)格式不一致(需确保JSON字符串严格如
json.dumps(body))。
请使用print(timestamp, message)调试,并与欧易API文档的签名示例比对。
Q2:如何确保API密钥安全?
A2:永远不要将密钥上传到GitHub等公开仓库,使用环境变量或.env文件,并添加.env到.gitignore,在欧易API管理页面设置IP白名单,仅允许你的服务器IP访问。
Q3:能否用WebSocket获取实时数据?
A3:可以,欧易WebSocket API支持订阅行情、深度、交易等数据,对于高频交易场景,WebSocket延迟更低,具体代码类似,但需要websocket-client库。
Q4:脚本下单后没有成交,为什么?
A4:市价单通常立即成交,限价单可能因价格未到达而挂单,检查订单状态可通过/api/v5/trade/order接口的ordId查询。
Q5:欧易API有频率限制吗?
A5:有,现货交易接口通常限制每秒20次请求,WebSocket订阅限制较低,超出限制会返回429 Too Many Requests,建议在请求间添加time.sleep(0.05)。
安全建议与后续学习资源
- 资金安全优先:API权限务必最小化,尤其是禁止提币权限。
- 错误重试机制:网络波动可能导致请求失败,建议实现指数退避重试逻辑。
- 日志记录:记录每次交易请求和响应,便于事后复盘。
- 进阶学习:阅读欧易官方API文档(oe-okor.com.cn)获取完整接口列表,并关注“量化交易”社区。
通过本教程,你已经掌握了从申请API到编写Python交易脚本的全流程,你可以在欧易交易所下载的实战中逐步优化你的策略,自动化交易是一把双刃剑,务必在充分测试后再投入真实资金。
如果你在实践过程中遇到任何问题,欢迎在欧易官方社群交流探讨,祝交易顺利!
标签: 欧易API Python交易脚本