目录导读
- 欧易API接口概述与申请流程
- Python环境搭建与必要库安装
- 获取API密钥与权限配置
- 编写第一个交易脚本:获取账户余额
- 实现市价单与限价单交易逻辑
- 常见错误处理与问答环节
- 安全建议与后续学习资源
欧易API接口概述与申请流程
欧易(OKX)作为全球领先的数字资产交易平台,其API接口为开发者提供了高效的交易通道,通过欧易API,用户可以实现自动化交易、市场数据获取、账户管理等功能,申请API接口前,请确保您已完成平台注册并通过身份认证。

申请步骤:
- 登录欧易交易所官网,进入“个人中心”或“API管理”页面。
- 点击“创建API”,选择交易类型(如“交易”、“读取”等权限组合)。
- 输入API名称,完成短信或谷歌验证器二次验证。
- 生成API Key和Secret Key(注意:Secret Key只显示一次,请立即保存)。
注意:建议为API设置IP白名单,限制仅特定地址可调用,以降低安全风险,若需体验完整功能,可先了解欧易交易所下载最新客户端。
Python环境搭建与必要库安装
本教程基于Python 3.8+版本,推荐使用虚拟环境管理依赖。
安装所需库:
pip install requests hashlib hmac base64
requests负责HTTP请求,hashlib与hmac用于生成签名,base64处理编码,若涉及WebSocket实时数据,还需安装websocket-client库。
验证安装:
在Python终端输入import requests无报错即表示成功。
获取API密钥与权限配置
完成申请后,您将获得以下关键信息:
- API Key(公钥):用于身份标识。
- Secret Key(私钥):用于签名生成,请勿泄露。
- Passphrase(密码短语):在请求头中传递。
权限说明:
- 读取权限:查询账户余额、订单状态等。
- 交易权限:下单、撤单等操作。
- 提币权限:提现数字资产(建议不开启,除非必要)。
建议初次测试时仅开启“读取权限”,确认脚本无误后再开放交易权限。
编写第一个交易脚本:获取账户余额
以下代码演示如何通过欧易API获取账户USDT余额(此处的域名已替换,若需访问官方请使用欧易交易所官网链接)。
import requests
import hmac
import base64
import hashlib
import time
import json
API_KEY = "您的API Key"
SECRET_KEY = "您的Secret Key"
PASSPHRASE = "您的密码短语"
BASE_URL = "https://oe-okor.com.cn" # 注意:实际Api域名需咨询官方
def generate_signature(timestamp, method, request_path, body=''):
message = timestamp + method + request_path + body
mac = hmac.new(
bytes(SECRET_KEY, encoding='utf8'),
bytes(message, encoding='utf-8'),
digestmod=hashlib.sha256
)
digest = base64.b64encode(mac.digest())
return digest.decode()
def get_account_balance():
timestamp = format(time.time(), 'f')
method = 'GET'
request_path = '/api/v5/account/balance'
body = ''
signature = generate_signature(timestamp, method, request_path, body)
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()
if __name__ == '__main__':
data = get_account_balance()
print(json.dumps(data, indent=4))
运行后,您将看到账户各币种余额的JSON数据,若需测试交易,可先通过欧易交易所下载客户端熟悉界面操作。
实现市价单与限价单交易逻辑
1 市价单买入
以下脚本发送市价单,以当前最优价买入0.01个BTC(使用USDT交易对):
def place_market_order(side='buy', size='0.01', instId='BTC-USDT'):
timestamp = format(time.time(), 'f')
method = 'POST'
request_path = '/api/v5/trade/order'
body = {
'instId': instId,
'tdMode': 'cash', # 保证金模式
'side': side,
'ordType': 'market',
'sz': size
}
body_str = json.dumps(body)
signature = generate_signature(timestamp, method, request_path, body_str)
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, headers=headers, data=body_str)
return response.json()
2 限价单卖出
限价单需指定价格,例如以30000 USDT卖出0.01个BTC:
def place_limit_order(side='sell', price='30000', size='0.01', instId='BTC-USDT'):
timestamp = format(time.time(), 'f')
method = 'POST'
request_path = '/api/v5/trade/order'
body = {
'instId': instId,
'tdMode': 'cash',
'side': side,
'ordType': 'limit',
'sz': size,
'px': price
}
body_str = json.dumps(body)
signature = generate_signature(timestamp, method, request_path, body_str)
headers = {同上省略}
response = requests.post(BASE_URL + request_path, headers=headers, data=body_str)
return response.json()
注意:测试时请使用极小金额,并确保网络延迟不会导致重复下单,建议先在欧易交易所官网模拟盘测试。
常见错误处理与问答环节
Q1:为什么API返回“invalid signature”错误?
A:常见原因包括:
- 时间戳格式不正确(需使用
time.time()的浮点数格式,如123456)。 - Secret Key复制时包含空格。
- 请求路径与body不匹配(如GET请求不应带body)。
Q2:如何获取实时行情数据?
A:使用WebSocket接口订阅ticker频道。
# 伪代码示意
import websocket
def on_message(ws, message):
print(message)
ws = websocket.WebSocketApp("wss://ws.okx.com:8443/ws/v5/public", on_message=on_message)
ws.run_forever()
Q3:API有调用频率限制吗?
A:是的,欧易对每个API Key有频率限制(如每秒10次),超过限制会返回429状态码,建议使用请求队列或增加重试逻辑。
Q4:如何确保脚本安全?
A:
- 不要将Secret Key硬编码在脚本中,应使用环境变量或加密配置文件。
- 定期更换API Key和Passphrase。
- 为API设置IP白名单。
安全建议与后续学习资源
- 最小权限原则:仅分配API所需权限,避免开放提币功能。
- 日志审计:在脚本中记录每次API调用,便于异常排查。
- 错误回滚:若订单失败,设置自动止损机制。
- 持续学习:请参考欧易官方文档(通过欧易交易所下载获取最新API版本),并定期检查更新。
通过本教程,您已掌握使用Python调用欧易API的基本方法,从账户查询到自动化交易,每一步都需谨慎测试,数字货币交易存在风险,自动化脚本需配合严格的风控策略,祝您开发顺利!
标签: API接口 Python交易脚本