目录导读
- 欧易API接口概述与申请流程
- Python环境搭建与依赖库安装
- API认证与签名机制详解
- 编写第一个Python交易脚本:获取账户余额
- 实战:自动下单与行情监听
- 常见问题与安全性建议
欧易API接口概述与申请流程
欧易交易所(OKX)作为全球领先的数字资产交易平台,其API接口为开发者提供了强大的程序化交易能力,通过API,用户可以自动化完成行情查询、订单管理、资金划转等操作,要申请API接口,首先需要登录欧易官网(推荐使用稳定镜像站如欧易交易所下载完成账号注册),然后在“API管理”页面创建新的API密钥。

申请步骤:
- 登录账号后进入“账户-API”页面
- 点击“创建API Key”,选择交易权限
- 设置IP白名单(强烈建议开启)
- 保存Secret Key和Passphrase(注意:Secret Key仅显示一次)
Python环境搭建与依赖库安装
编写交易脚本前,需要安装Python 3.7以上版本及以下关键库:
pip install requests pip install ccxt # 统一加密交易所API库 pip install python-dotenv # 管理环境变量
其中ccxt库提供了统一的接口封装,可降低开发复杂度,若需要自定义签名逻辑,也可直接使用requests库实现。
API认证与签名机制详解
欧易API采用HMAC-SHA256签名算法,请求头需包含:
OK-ACCESS-KEY:API KeyOK-ACCESS-SIGN:签名结果OK-ACCESS-TIMESTAMP:UTC时间戳OK-ACCESS-PASSPHRASE:API密钥密码
签名生成示例:
import hmac
import base64
import datetime
def get_sign(timestamp, method, request_path, body=''):
message = timestamp + method.upper() + request_path + body
mac = hmac.new(secret_key.encode('utf-8'),
message.encode('utf-8'),
digestmod='sha256')
return base64.b64encode(mac.digest()).decode('utf-8')
编写第一个Python交易脚本:获取账户余额
以下脚本演示如何通过欧易API获取交易账户余额,注意要将API凭证替换为在欧易交易所下载申请到的密钥。
import requests
import json
import time
import hmac
import base64
api_key = '你的API_KEY'
secret_key = '你的SECRET_KEY'
passphrase = '你的PASSPHRASE'
base_url = 'https://www.okx.com'
def get_timestamp():
return str(int(time.time()))
def sign(timestamp, method, request_path, body=''):
message = timestamp + method.upper() + request_path + body
mac = hmac.new(secret_key.encode('utf-8'),
message.encode('utf-8'),
digestmod='sha256')
return base64.b64encode(mac.digest()).decode('utf-8')
def get_balance():
timestamp = get_timestamp()
request_path = '/api/v5/account/balance'
method = 'GET'
body = ''
signature = sign(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()
# 执行查询
balance_data = get_balance()
print(json.dumps(balance_data, indent=2))
实战:自动下单与行情监听
进阶脚本可实现限价交易,以下为市价买入的示例,注意使用正确的接口地址:
def place_market_order(symbol, side, size):
timestamp = get_timestamp()
request_path = '/api/v5/trade/order'
method = 'POST'
body = json.dumps({
'instId': symbol,
'tdMode': 'cash',
'side': side,
'ordType': 'market',
'sz': str(size)
})
signature = sign(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.post(base_url + request_path,
data=body, headers=headers)
return response.json()
提示: 首次测试建议使用模拟盘(demo账户),通过欧易交易所下载页面可获取测试网地址。
常见问题与安全性建议
Q1: 如何防止IP泄露导致的资产风险? A: 务必设置IP白名单,仅允许可信IP访问,代码中不要硬编码密钥,建议使用环境变量或加密文件存储。
Q2: API连接超时如何处理?
A: 可在requests请求中添加timeout参数,并实现重试机制。
try:
response = requests.get(url, headers=headers, timeout=10)
except requests.exceptions.Timeout:
print("连接超时,稍后重试")
安全最佳实践:
- 启用API权限分离:交易API仅赋予交易权限,读取API仅赋予查询权限
- 定期轮换密钥,避免长期使用同一API Key
- 监控API调用频率,避免触发平台限流机制
通过以上教程,您已掌握欧易API的基础使用方法,建议从模拟盘开始逐步调试脚本,确保逻辑正确后再投入实盘交易,更多高级功能如WebSocket实时推送、合约交易等,可参考欧易官方文档进一步探索。
标签: 欧易API Python交易脚本