目录导读
- 欧易API接口概述
- API接口申请前置条件
- 获取API Key与Secret Key的详细步骤
- Python环境搭建与依赖库安装
- 使用Python调用欧易API实现行情查询
- 编写简单交易脚本:自动下单与撤单
- 交易脚本安全注意事项
- 常见问题与问答(FAQ)
欧易API接口概述
欧易交易所下载作为全球领先的加密资产交易平台,提供了完善的API接口,允许开发者通过程序化方式进行市场数据获取、交易执行、账户管理等功能,其API遵循RESTful架构,支持HTTP/HTTPS协议,返回JSON格式数据,适合使用Python、JavaScript等语言快速开发交易机器人。

通过欧易官方API,你可以实现:
- 实时行情数据(K线、深度、最新价)
- 订单管理(限价单、市价单、止损单)
- 账户资产查询
- 交易对信息获取
在开始编写脚本前,你需要先完成API的申请与配置。
API接口申请前置条件
在申请API之前,请确保你已完成以下步骤:
- 注册并完成实名认证:访问欧易交易所官网注册账号,并完成KYC(身份认证)二级或以上等级。
- 开启二次验证(2FA):为了账户安全,欧易要求所有API申请必须绑定谷歌验证器或手机验证码。
- 了解API权限分类:欧易API分为“读取”“交易”“提币”等权限,建议按需申请,不要开放不必要的权限。
获取API Key与Secret Key的详细步骤
登录欧易官网
打开欧易交易所下载页面,登录你的账户。
进入API管理页面
在账户菜单中选择“API”或“API管理”选项,如果你使用的是新版UI,可以在“账户设置”中找到“API”入口。
创建新API
点击“创建API”按钮,系统会提示输入名称(如“Python交易机器人”),并选择权限:
- 读取权限:用于获取行情、账户余额。
- 交易权限:用于下单、撤单。
- 提币权限:建议不勾选,除非必要。
绑定二次验证
输入谷歌验证码或短信验证码完成身份确认。
保存API Key与Secret Key
生成后,你会得到一对密钥:
api_key(7e3a1c9b-...)secret_key(F2D4A0C8...)
重要提示:Secret Key只显示一次,请立即复制并保存在安全位置,如果泄露,请立即在后台删除并重新生成。
Python环境搭建与依赖库安装
环境要求
- Python 3.8 及以上版本
- 操作系统:Windows/macOS/Linux 均可
安装依赖库
在终端执行以下命令:
pip install requests hashlib hmac base64 json time
其中requests用于发送HTTP请求,hashlib和hmac用于签名生成,json处理数据格式。
基础代码结构
创建一个okx_api.py文件,导入必要模块:
import requests import json import hmac import hashlib import base64 import time
使用Python调用欧易API实现行情查询
1 构建签名函数
欧易API要求每个请求携带签名,以确保数据完整性,以下是签名生成函数:
def generate_signature(secret_key, method, request_path, body, timestamp):
# 构建待签名字符串
sign_str = timestamp + method.upper() + request_path + (body if body else '')
# HMAC-SHA256签名
mac = hmac.new(secret_key.encode('utf-8'), sign_str.encode('utf-8'), hashlib.sha256)
return base64.b64encode(mac.digest()).decode('utf-8')
2 获取最新行情数据
以下代码查询BTC/USDT的最新交易价格:
def get_ticker(symbol="BTC-USDT"):
url = "https://www.okx.com/api/v5/market/ticker"
params = {"instId": symbol}
response = requests.get(url, params=params)
if response.status_code == 200:
data = response.json()
price = data['data'][0]['last']
print(f"当前{ symbol }价格: {price} USDT")
return price
else:
print("请求失败:", response.text)
return None
get_ticker("ETH-USDT")
示例输出:
当前ETH-USDT价格: 2745.32 USDT
编写简单交易脚本:自动下单与撤单
1 下单函数(限价单)
需要传入API Key和Secret Key进行身份验证:
def place_order(api_key, secret_key, symbol, side, size, price, order_type="limit"):
timestamp = str(int(time.time() * 1000))
body = json.dumps({
"instId": symbol,
"tdMode": "cash", # 保证金模式
"side": side, # buy or sell
"ordType": order_type,
"sz": size,
"px": price
})
request_path = "/api/v5/trade/order"
signature = generate_signature(secret_key, "POST", request_path, body, timestamp)
headers = {
"OK-ACCESS-KEY": api_key,
"OK-ACCESS-SIGN": signature,
"OK-ACCESS-TIMESTAMP": timestamp,
"OK-ACCESS-PASSPHRASE": "your_passphrase", # 申请API时设置的口令
"Content-Type": "application/json"
}
url = "https://www.okx.com" + request_path
response = requests.post(url, headers=headers, data=body)
return response.json()
2 撤单函数
def cancel_order(api_key, secret_key, order_id):
timestamp = str(int(time.time() * 1000))
body = json.dumps({"ordId": order_id})
request_path = "/api/v5/trade/cancel-order"
signature = generate_signature(secret_key, "POST", request_path, body, timestamp)
headers = {
"OK-ACCESS-KEY": api_key,
"OK-ACCESS-SIGN": signature,
"OK-ACCESS-TIMESTAMP": timestamp,
"OK-ACCESS-PASSPHRASE": "your_passphrase",
"Content-Type": "application/json"
}
url = "https://www.okx.com" + request_path
response = requests.post(url, headers=headers, data=body)
return response.json()
3 完整交易脚本示例
以下脚本实现:当BTC价格低于26000时,自动买入0.01个BTC。
def trade_bot(api_key, secret_key, threshold=26000):
price = get_ticker("BTC-USDT")
if price and float(price) < threshold:
print("触发买入条件,执行下单...")
result = place_order(api_key, secret_key, "BTC-USDT", "buy", "0.01", str(threshold))
print("下单结果:", result)
else:
print("价格未达到阈值,等待中...")
# 使用示例(请替换为真实密钥)
if __name__ == "__main__":
my_api_key = "your_api_key_here"
my_secret_key = "your_secret_key_here"
trade_bot(my_api_key, my_secret_key)
交易脚本安全注意事项
- 密钥保护:永远不要将API Key或Secret Key硬编码在公共仓库中,建议使用环境变量或配置文件。
- IP白名单:在欧易API设置中,限制只有你的服务器IP才能访问API,能有效防止密钥被滥用。
- 权限最小化:仅开启必要权限,例如只做交易就不要开放提币权限。
- 错误处理:生产环境中需添加重试机制和错误日志,避免因网络波动导致订单失败。
- 测试网先行:欧易提供了沙箱测试环境,建议先在模拟资金中验证脚本无误后再投入真实资金,更多信息可参考欧易交易所下载文档中心。
常见问题与问答(FAQ)
Q1:为什么我生成的签名总是验证失败?
A:最常见原因是时间戳相差过大,请确保服务器时间与NTP同步,差异不应超过30秒,另外检查账户API中的“口令(passphrase)”是否与代码中一致。
Q2:交易脚本返回错误“Order size too small”?
A:每个交易对都有最小下单数量限制,例如BTC的最小交易单位为0.0001,你可以在欧易官网的交易规则页面查询具体最小交易量。
Q3:通过API下单后,多久能成交?
A:限价单的成交速度取决于市场深度,如果在最优买/卖价范围内通常很快;如果价格偏离市场,则可能无法成交,你也可以使用市价单(ordType="market")确保即时成交。
Q4:API的请求频率有限制吗?
A:有的,欧易API对REST接口限制为每秒20次请求,如果被限流,请添加适当的time.sleep()延迟,WebSocket接口则无限流,但连接数量有限。
Q5:如何获取历史K线数据?
A:使用/api/v5/market/candles接口,支持1m、5m、15m、30m、1H等周期,注意历史数据最多可获取最近300根K线。
通过以上教程,你已经掌握了从欧易API申请到Python交易脚本编写的完整流程,建议新手先从查询行情和模拟订单开始,逐步过渡到真实交易,如需更深入的功能如止盈止损、量化策略,可查阅欧易交易所官网开发者文档获取更多API端点与示例代码。
标签: 交易脚本