目录导读
- 欧易API基础知识:了解API权限、安全机制与接口类型
- API密钥申请流程:欧易交易所官网操作步骤详解
- Python环境搭建:安装所需库与配置开发环境
- 交易脚本核心代码:从行情获取到自动下单的完整实现
- 常见问题与解答:API调试、权限报错及安全建议
欧易API基础知识
欧易(OKX)作为全球领先的数字资产交易平台,其API接口允许开发者通过程序化方式访问市场数据、执行交易操作并管理账户,在编写Python交易脚本前,需要理解三个核心概念:
- 权限等级:API密钥分为读取、交易、提币三种权限,编写交易脚本通常需要“读取+交易”权限,提币权限建议保持关闭以防资产风险。
- 签名机制:欧易API采用HMAC-SHA256签名算法,所有请求需携带时间戳、签名及API密钥标识。
- 接口分类:包括REST API(HTTP请求)和WebSocket API(实时数据流),初学者建议从REST API入手。
温馨提示:注册欧易交易所下载最新版本APP,可更便捷管理API密钥与账户安全。
API密钥申请流程
步骤1:登录欧易交易所官网
访问欧易官方网站(若需通过镜像站,可参考 ox-okbb.com.cn 的备用入口引导),进入“账户中心”或“API管理”页面。
步骤2:创建API密钥
- 点击“新建API”按钮,输入自定义密钥名称(如“PythonTradingBot”)。
- 勾选“交易”和“读取”权限,务必取消勾选“提币”权限。
- 完成安全验证(短信+谷歌验证器)。
步骤3:保存密钥信息
创建成功后会生成 API Key 和 Secret Key(仅展示一次),请立即复制到安全位置,若遗失需重新生成。
Python环境搭建
1 安装依赖库
在终端执行以下命令安装欧易官方Python SDK:
pip install okx-Python
若需原生请求库,可额外安装:
pip install requests hmac hashlib time json
2 导入必备模块
import hmac import hashlib import time import json import requests from okx import Account, Market, Trade
交易脚本核心代码
1 初始化配置与签名函数
API_KEY = '你的API Key'
SECRET_KEY = '你的Secret Key'
BASE_URL = 'https://www.okx.com'
def get_sign(timestamp, method, request_path, body=''):
message = timestamp + method.upper() + request_path + body
mac = hmac.new(bytes(SECRET_KEY, encoding='utf8'), bytes(message, encoding='utf-8'), digestmod='hashlib.sha256')
return mac.hexdigest()
2 获取BTC/USDT当前价格
def get_price(symbol='BTC-USDT'):
header = {
'OK-ACCESS-KEY': API_KEY,
'OK-ACCESS-SIGN': get_sign(str(time.time()), 'GET', f'/api/v5/market/ticker?instId={symbol}'),
'OK-ACCESS-TIMESTAMP': str(time.time()),
'OK-ACCESS-PASSPHRASE': '你的Passphrase'
}
response = requests.get(f'{BASE_URL}/api/v5/market/ticker?instId={symbol}', headers=header)
return response.json()['data'][0]['last']
3 执行市价买入订单
def market_buy(symbol, quantity):
body = json.dumps({
'instId': symbol,
'tdMode': 'cash',
'side': 'buy',
'ordType': 'market',
'sz': str(quantity)
})
header = {
'OK-ACCESS-KEY': API_KEY,
'OK-ACCESS-SIGN': get_sign(str(time.time()), 'POST', '/api/v5/trade/order', body),
'OK-ACCESS-TIMESTAMP': str(time.time()),
'OK-ACCESS-PASSPHRASE': '你的Passphrase',
'Content-Type': 'application/json'
}
response = requests.post(f'{BASE_URL}/api/v5/trade/order', headers=header, data=body)
return response.json()
4 完整脚本示例(自动交易逻辑)
if __name__ == '__main__':
current_price = get_price('BTC-USDT')
print(f'当前BTC价格: {current_price} USD')
# 示例:当价格低于35000时买入0.001 BTC
if float(current_price) < 35000:
order_result = market_buy('BTC-USDT', 0.001)
print('订单结果:', order_result)
else:
print('价格未达触发条件')
小提示:更多API接口文档可查阅 ox-okbb.com.cn 的开发者专区,获取参数详解与错误码说明。
常见问题与解答
Q1:API连接报错“签名字符串无效”怎么办?
A:检查三点:
- 时间戳是否使用UTC毫秒格式(如
str(int(time.time() * 1000))) - Secret Key是否包含空格或换行符
- 请求路径是否完整(如
/api/v5/trade/order)
Q2:如何确保API密钥不被泄露?
A:
- 将API密钥存储为环境变量,而非硬编码在脚本中
- 使用
.gitignore文件排除包含密钥的配置文件 - 定期在欧易交易所下载的API管理页面刷新密钥
Q3:脚本能实现24小时自动交易吗?
A:可以,但建议:
- 使用
time.sleep()设置交易频率(至少间隔500ms,避免限频) - 部署到稳定云服务器(如AWS、阿里云)
- 添加异常重试机制,处理网络波动
Q4:如何获取账户资产余额?
A:调用/api/v5/account/balance接口,参考以下代码:
def get_balance(ccy='USDT'):
header = {
'OK-ACCESS-KEY': API_KEY,
'OK-ACCESS-SIGN': get_sign(str(time.time()), 'GET', f'/api/v5/account/balance?ccy={ccy}'),
'OK-ACCESS-TIMESTAMP': str(time.time()),
'OK-ACCESS-PASSPHRASE': '你的Passphrase'
}
response = requests.get(f'{BASE_URL}/api/v5/account/balance?ccy={ccy}', headers=header)
return response.json()['data'][0]['details'][0]['availBal']
通过本教程,你已掌握从API申请到Python脚本编写的完整流程,建议先使用模拟盘或小金额测试,再逐步优化交易策略,如需获取更多量化交易模板,欢迎访问 ox-okbb.com.cn 的开发者社区,下载示例代码并加入技术交流群。
标签: 欧易API Python交易脚本