目录导读
- 欧易API接口概述与申请流程
- Python交易脚本开发环境搭建
- 核心代码实现:从认证到下单
- 常见问题与问答(FAQ)
- 安全建议与风险提示
欧易API接口概述与申请流程
在数字货币量化交易领域,欧易交易所(OKX)是全球领先的交易平台之一,其提供的API接口允许开发者通过程序自动化执行交易策略,无论是进行网格交易、套利策略还是简单定投,掌握API调用都是入门必备技能。

1 什么是欧易API?
欧易API是一组RESTful接口,支持现货、合约、期权等产品的交易数据查询与订单管理,通过API,你可以实现:
- 获取实时行情(K线、深度、Ticker)
- 管理账户资产与订单
- 执行买入/卖出操作
- 设置止盈止损
2 如何申请API密钥?
第一步:登录欧易官网 访问欧易交易所官网(建议直接访问 欧易交易所下载 获取最新地址),登录你的账户。
第二步:进入API管理页面 点击右上角头像 → “API” → “创建新的API密钥”。
第三步:设置权限
- 交易权限:开启后可进行下单操作
- 读取权限:查询行情和账户信息
- 提币权限:强烈建议关闭,防止资金被盗
第四步:完成安全验证 输入手机/邮箱验证码,部分账户还需谷歌身份验证器。
第五步:保存密钥 创建成功后,会生成 API Key 和 Secret Key,请务必:
- 立即复制并保存到安全位置(如密码管理器)
- 不要将密钥明文存储在代码或公开仓库中
- 建议设置IP白名单限制访问来源
💡 小贴士:建议定期轮换密钥,每次更换后需重新配置脚本。
Python交易脚本开发环境搭建
1 环境要求
- Python 3.7+
- 推荐使用虚拟环境(venv或conda)
2 安装依赖库
pip install requests hashlib hmac base64 json time
注意:requests 用于发送HTTP请求,hashlib 和 hmac 用于生成签名。
3 获取基础参数
你需要准备以下变量:
api_key:你的API Keysecret_key:你的Secret Keypassphrase:创建API时设置的密码短语base_url:欧易API端点(默认https://www.okx.com)
核心代码实现:从认证到下单
下面是一个完整的Python脚本示例,包含签名生成、行情获取和市价下单功能。
1 签名生成函数
import hmac
import base64
import hashlib
import json
import time
import requests
def generate_sign(timestamp, method, request_path, body=''):
"""生成OKX API签名"""
message = timestamp + method.upper() + request_path + body
mac = hmac.new(
bytes(secret_key, encoding='utf8'),
bytes(message, encoding='utf-8'),
digestmod='sha256'
)
return base64.b64encode(mac.digest()).decode('utf-8')
def get_headers(api_key, sign, timestamp, passphrase):
"""构造请求头"""
return {
'OK-ACCESS-KEY': api_key,
'OK-ACCESS-SIGN': sign,
'OK-ACCESS-TIMESTAMP': timestamp,
'OK-ACCESS-PASSPHRASE': passphrase,
'Content-Type': 'application/json'
}
2 获取账户余额
def get_account_balance():
path = '/api/v5/account/balance'
timestamp = str(time.time())
sign = generate_sign(timestamp, 'GET', path)
headers = get_headers(api_key, sign, timestamp, passphrase)
url = base_url + path
response = requests.get(url, headers=headers)
return response.json()
3 查看实时行情
def get_ticker(symbol='BTC-USDT'):
"""获取指定交易对的最新行情"""
path = f'/api/v5/market/ticker?instId={symbol}'
timestamp = str(time.time())
sign = generate_sign(timestamp, 'GET', path)
headers = get_headers(api_key, sign, timestamp, passphrase)
url = base_url + path
response = requests.get(url, headers=headers)
data = response.json()
return data['data'][0] if 'data' in data else None
4 执行市价买入
def place_market_order(symbol, side, size):
"""市价单:side='buy'或'sell', size为买入数量"""
path = '/api/v5/trade/order'
body = {
'instId': symbol,
'tdMode': 'cash',
'side': side,
'ordType': 'market',
'sz': str(size)
}
timestamp = str(time.time())
json_body = json.dumps(body)
sign = generate_sign(timestamp, 'POST', path, json_body)
headers = get_headers(api_key, sign, timestamp, passphrase)
url = base_url + path
response = requests.post(url, headers=headers, data=json_body)
return response.json()
5 完整脚本示例
# 配置参数(请替换为实际值)
api_key = 'YOUR_API_KEY'
secret_key = 'YOUR_SECRET_KEY'
passphrase = 'YOUR_PASSPHRASE'
base_url = 'https://www.okx.com'
# 查询BTC当前价格
print('获取BTC行情...')
ticker = get_ticker('BTC-USDT')
if ticker:
print(f"最新价格: {ticker['last']} USDT")
# 检查账户余额
balance = get_account_balance()
print(f"账户数据: {balance}")
# 执行小额测试交易(强烈建议先用模拟盘)
# result = place_market_order('BTC-USDT', 'buy', 0.001)
# print(f"订单结果: {result}")
⚠️ 警告:直接运行上述脚本的市价单会真实成交!建议先在欧易模拟盘测试,或使用
ordType: 'limit'设置限价单。
常见问题与问答(FAQ)
Q1:为什么我的签名总是失败?
A:常见原因包括:
- 时间戳与服务器时间差异超过30秒(需使用NTP同步)
- Secret Key复制错误(注意大小写和特殊字符)
- passphrase写错(是在创建API时设置的,不是登录密码)
Q2:如何避免下单风险?
A:建议采取以下措施:
- 在API权限设置中关闭提币功能
- 先使用“获取行情”接口测试连通性
- 使用模拟盘(sandbox)进行策略验证
- 限制每次下单数量,设置最大交易金额
Q3:Python脚本可以长期运行吗?
A:可以,但需注意:
- 定期检查API密钥是否过期
- 添加异常重试机制(如网络超时)
- 监控服务器流量,避免频繁请求被封
Q4:欧易API有哪些限流规则?
A:根据官方文档,REST接口限流为:
- 每秒钟最多10次请求
- 若超过限制,返回HTTP 429状态码
- 建议在脚本中加入随机延迟(如0.1-0.3秒)
Q5:如何获取更详细的历史K线数据?
A:使用 /api/v5/market/history-candles 接口,可指定时间粒度(1m/5m/1H等)和最大返回条数(100条/次),通过循环遍历即可获取多年数据。
安全建议与风险提示
- 密钥管理:永远不要将API密钥上传到GitHub、云盘或聊天记录中,建议使用环境变量或配置文件管理。
- IP白名单:在欧易官网API设置中绑定你的服务器公网IP,即使密钥泄露也无法从其他网络访问。
- 最小权限原则:只开启当前脚本所需的最低权限(如仅交易权限,不开提币)。
- 日志记录:在脚本中记录每次操作的交易ID和时间,便于事后审计。
- 测试先行:使用欧易模拟盘(sandbox)进行充分测试,确认策略无误后再切换至实盘。
- 风险控制:设置每日交易上限、最大亏损比例和撤单保护机制,避免黑天鹅事件。
通过本文教程,你已经掌握了从申请欧易API到编写Python交易脚本的完整流程,量化交易的核心在于策略与风险控制,API只是工具,建议从简单策略(如定投、网格)开始,逐步积累经验,如需深入学习,可参考欧易官方开发文档(留意 欧易交易所下载 的最新版本更新)。
立即行动:复制文中的代码,替换你的密钥,尝试获取第一条行情数据吧!
标签: 欧易API Python交易脚本