目录导读
-
欧易API概述与基础准备

- 什么是欧易API?为何需要申请?
- 申请前必备工具与账户要求
-
欧易API接口申请全流程
- 登录欧易官网并进入API管理
- 创建API密钥(Key & Secret)
- 设置权限与IP白名单
-
Python交易脚本编写实战
- 安装依赖库(requests、hashlib、hmac等)
- 构建签名与请求头(重点:时间戳与签名算法)
- 编写查询账户余额与下单函数
-
完整交易脚本示例
- 代码解析:从连接API到执行限价单
- 运行测试与常见错误处理
-
安全与优化建议
- 密钥管理:切勿硬编码到公开仓库
- 频率控制与日志记录
-
常见问答(FAQ)
- Q1:API申请后多久生效?
- Q2:Python脚本报错“无效签名”怎么办?
- Q3:能否用API实现网格交易或定投?
欧易API概述与基础准备
欧易交易所(OKX)作为全球领先的数字资产交易平台,提供了丰富的API接口,允许开发者通过程序化方式执行行情查询、账户管理、下单交易等操作,对于量化交易者或自动化需求者而言,掌握欧易API是必备技能。
申请前你需要准备:
- 一个已完成高级认证的欧易账户。
- 稳定的网络环境(建议使用代理避免IP变动)。
- Python 3.7+环境及基础编程知识。
- 一个用于存放API密钥的安全文件(切勿直接暴露在代码中)。
提示:若你尚未注册欧易账户,可访问欧易交易所下载完成注册与认证,然后按照本文教程申请API。
欧易API接口申请全流程
登录欧易官网并进入API管理
登录你的欧易账户,在导航栏找到“账户” → “API”选项(或直接访问API管理页面),首次创建时需进行二次验证(短信+谷歌验证器)。
创建API密钥
点击“创建新API”,系统会生成两段关键信息:
- API Key:相当于用户名,用于标识身份。
- Secret Key:相当于密码,用于签名验证。请立即复制并妥善保存,关闭页面后无法再次查看。
设置权限与IP白名单
根据需求勾选权限:
- 查看权限:允许查询账户余额、持仓。
- 交易权限:允许下单、撤单。
- 提现权限:建议不勾选,除非必要。
建议绑定IP白名单,限制仅可从你的服务器IP访问,降低密钥泄露风险,完成后点击“确认”,API即刻生效。
Python交易脚本编写实战
安装依赖库
打开终端,执行以下命令安装HTTP请求与加密签名所需的库:
pip install requests hashlib hmac base64 json
构建签名与请求头
欧易API要求每个请求携带合法签名,下面是一个Python函数,用于生成签名并组装请求头:
import requests
import hmac
import hashlib
import base64
import json
import time
def get_okx_sign(secret_key, request_path, body='', method='GET'):
timestamp = str(time.time()).split('.')[0]
message = timestamp + method.upper() + request_path + (body if body else '')
mac = hmac.new(secret_key.encode('utf-8'), message.encode('utf-8'), hashlib.sha256)
sign = base64.b64encode(mac.digest()).decode('utf-8')
return timestamp, sign
def get_okx_headers(api_key, secret_key, passphrase, request_path, body='', method='GET'):
timestamp, sign = get_okx_sign(secret_key, request_path, body, method)
headers = {
'OK-ACCESS-KEY': api_key,
'OK-ACCESS-SIGN': sign,
'OK-ACCESS-TIMESTAMP': timestamp,
'OK-ACCESS-PASSPHRASE': passphrase,
'Content-Type': 'application/json'
}
return headers
编写查询账户余额函数
以欧易的/api/v5/account/balance接口为例,查询USDT余额:
def get_account_balance(api_key, secret_key, passphrase, ccy='USDT'):
base_url = 'https://www.okx.com'
request_path = '/api/v5/account/balance'
headers = get_okx_headers(api_key, secret_key, passphrase, request_path, body='', method='GET')
response = requests.get(base_url + request_path, headers=headers)
if response.status_code == 200:
data = response.json()
for item in data['data'][0]['details']:
if item['ccy'] == ccy:
return item['availBal']
else:
print(f"Error: {response.status_code}, {response.text}")
return None
编写下单函数(限价单)
以下代码演示如何提交一个BTC/USDT的限价买入单:
def place_limit_order(api_key, secret_key, passphrase, inst_id='BTC-USDT', side='buy', price='30000', sz='0.001'):
base_url = 'https://www.okx.com'
request_path = '/api/v5/trade/order'
body = {
'instId': inst_id,
'tdMode': 'cash', # 保证金模式,现货选cash
'side': side,
'ordType': 'limit',
'price': price,
'sz': sz
}
headers = get_okx_headers(api_key, secret_key, passphrase, request_path, json.dumps(body), method='POST')
response = requests.post(base_url + request_path, headers=headers, data=json.dumps(body))
return response.json()
完整交易脚本示例
将以上函数整合为一个完整的Python脚本,用于查询余额并执行一笔测试下单:
# 请替换以下变量为你的真实API信息
API_KEY = 'your_api_key'
SECRET_KEY = 'your_secret_key'
PASSPHRASE = 'your_passphrase'
if __name__ == '__main__':
# 1. 查询USDT余额
balance = get_account_balance(API_KEY, SECRET_KEY, PASSPHRASE, ccy='USDT')
print(f"USDT余额: {balance}")
# 2. 挂一个限价买入单(注:这里价格远低于市价,仅用于测试)
order_result = place_limit_order(API_KEY, SECRET_KEY, PASSPHRASE,
inst_id='BTC-USDT', side='buy',
price='20000', sz='0.001')
print(f"订单结果: {order_result}")
常见错误处理:
- 如果返回
"code":"50013",说明签名错误,请检查Secret Key是否复制正确。 - 如果返回
"code":"51119",表示IP白名单限制,请在欧易交易所下载后台添加你的公网IP。 - 如果返回
"code":"51020",说明余额不足或最小下单量不符合要求。
安全与优化建议
- 绝对不要将API Key和Secret Key直接写入代码或推送到GitHub,建议使用环境变量或
.env文件加载。 - 为API设置交易限额,比如每日最大转账量,减少被盗损失。
- 脚本中加入速率限制,欧易API对普通用户的频率限制为每秒20次请求,超出会返回429错误。
- 记录日志并使用重试机制:当网络波动导致请求失败时,自动重试2-3次。
如需更高级功能(如WebSocket订阅实时行情、多账户资金归集),可参考欧易官方文档,若你尚未拥有API密钥,请先访问欧易交易所下载完成注册。
常见问答(FAQ)
Q1:API申请后多久生效?
A:在欧易官网创建API并设置权限后,立即生效,但如果启用了IP白名单,需确保你的请求IP在白名单内,否则会拒绝连接。
Q2:Python脚本报错“无效签名”怎么办?
A:检查两点:
- Secret Key是否复制了开头或结尾的空格。
- 请求的
request_path是否与签名时一致(注意大小写)。
可参考本文的签名函数逐行验证。
Q3:能否用API实现网格交易或定投?
A:当然可以,欧易API支持限价单和市价单,通过编写循环策略即可实现定期买入或价格区间挂单,但请注意:现货交易需确保账户有足够资金,合约交易需注意爆仓风险,建议先在测试网模拟运行。
Q4:如何获取API文档?
A:欧易官方提供了完整的REST API文档,包含所有接口参数与错误码说明,建议按需查阅。
通过以上教程,你已掌握了欧易API的申请方法与Python交易脚本的基础写法,从认证签名到实际下单,每一步都需谨慎,你可以开始搭建自己的量化交易系统了,祝交易顺利!
标签: 欧易API Python交易脚本