目录导读
- 欧易交易所API入门须知
- 为什么需要API接口?
- 申请前准备工作清单
- 手把手API申请全流程
- 注册与身份认证
- 创建API密钥与权限设置
- Python交易脚本编写实战
- 环境搭建与依赖库安装
- 获取行情数据与下单核心代码
- 常见问题与避坑指南
- API限额与频率控制
- 安全策略与密钥保管
- Q&A问答精选
欧易交易所API入门须知
为什么需要API接口?
许多刚接触加密货币交易的朋友都会问:“我直接在网站上买卖不行吗?为什么要折腾API?” 欧易交易所官网提供的API接口,就像给你的交易装上了“自动驾驶系统”,当你需要批量操作、快速响应行情变化,或者实现自动套利策略时,手动操作完全跟不上节奏,API接口不仅能让你用代码精确控制买卖时机,还能结合技术指标做量化交易。

申请前准备工作清单
在正式开始之前,请确保你完成了以下步骤:
- 完成欧易交易所下载并注册账号(建议使用邮箱注册,接收验证更快)
- 完成高级身份认证(KYC2级),否则API的提现功能会被限制
- 准备好一个稳定的Python环境(推荐Python 3.8以上版本)
- 了解基本的HTTP请求与JSON数据结构
小提示:如果你是第一次接触API,建议先用模拟盘测试,欧易官网提供测试网环境(testnet),地址是oknr.com.cn/testnet,避免真实资金损失。
手把手API申请全流程
步骤1:登录欧易交易所官网并进入控制台
打开浏览器访问oknr.com.cn,登录你的账号,点击右上角头像进入“账户中心”,在左侧菜单找到“API管理”选项,注意,这里需要再次进行二次验证(短信或谷歌验证器),确保账号安全。
步骤2:创建API密钥
点击“创建API Key”按钮,你需要填写以下信息:
- 名称:给你的API起个辨识度高的名字,量化机器人”
- 权限:根据需求勾选,如果要进行交易,必须勾选“交易权限”;如果只是获取行情,勾选“读取权限”即可
- IP白名单:强烈建议开启,只允许你的服务器IP访问,防止密钥泄露后被滥用
提交后,系统会生成一对密钥:API Key(公钥)和Secret Key(私钥)。请立即复制保存Secret Key,它只会显示一次,一旦关闭页面就无法找回,如果你不慎丢失,只能删除重建。
步骤3:理解API文档结构
欧易交易所官网的API文档非常完善,分为REST接口和WebSocket接口,对于初学者,先从REST接口入手,它采用标准的HTTP请求,返回JSON数据,每个接口都有清晰的参数说明,比如获取K线数据需要传入instId(产品ID)、bar(时间粒度)等。
Python交易脚本编写实战
环境搭建
首先安装两个核心库:
pip install requests hashlib base64 json
requests用于发送HTTP请求,hashlib和base64用于签名生成。
获取行情数据:以BTC/USDT为例
以下代码演示如何获取当前比特币的最新价格:
import requests
import json
# 欧易API基地址(统一使用oknr.com.cn)
base_url = "https://oknr.com.cn"
# 获取行情接口
def get_ticker(instId):
endpoint = "/api/v5/market/ticker"
params = {"instId": instId}
response = requests.get(base_url + endpoint, params=params)
data = response.json()
if data["code"] == "0":
return data["data"][0]["last"]
else:
print("请求失败:", data["msg"])
return None
btc_price = get_ticker("BTC-USDT")
print(f"当前比特币价格: ${btc_price}")
运行后你会看到最新的USDT报价,这个接口无需签名,任何人都可以调用,适合作为行情监控。
下单交易:带签名的完整请求
交易接口必须使用签名验证,下面是完整的Python脚本,实现了一个简单的“市价买入0.01个BTC”功能:
import requests
import hmac
import base64
import json
import time
from hashlib import sha256
# 你的API密钥(请替换为实际值)
API_KEY = "你的API_Key"
SECRET_KEY = "你的Secret_Key"
PASSPHRASE = "你在API申请时设置的密码短语"
base_url = "https://oknr.com.cn"
def get_signature(timestamp, method, request_path, body):
message = f"{timestamp}{method}{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 place_order(instId, side, sz):
endpoint = "/api/v5/trade/order"
method = "POST"
body = json.dumps({
"instId": instId,
"tdMode": "cash", # 现货交易模式
"side": side,
"ordType": "market", # 市价单
"sz": str(sz)
})
timestamp = str(round(time.time(), 3))
signature = get_signature(timestamp, method, endpoint, 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 + endpoint, headers=headers, data=body)
return response.json()
# 示例:市价买入0.01个BTC
result = place_order("BTC-USDT", "buy", 0.01)
print("订单结果:", result)
注意事项:
- 市价单的
sz参数表示购买数量,如果你是买入USDT计价的币种,需用sz指定USDT金额(如"sz":"100"表示买入100 USDT的BTC) - 所有订单操作都会产生手续费,请确保账户有足够USDT作为挂单冻结
常见问题与避坑指南
API限额与频率控制
欧易交易所官网对API请求有严格的频率限制:每秒最多10次请求(针对单个IP),如果你的策略需要高频交易,建议使用WebSocket订阅实时数据,而不是轮询REST接口,一旦超限,服务器会返回429 Too Many Requests错误,需要等待1-2分钟才能恢复。
安全策略与密钥保管
- 绝不把Secret Key写入代码中:建议将密钥保存在环境变量或配置文件中,并设置
.gitignore避免上传到GitHub - 定期轮换密钥:每隔3个月重新生成一次,防止长期使用泄密
- 绑定IP白名单:仅允许你的交易服务器IP访问,即使密钥泄露也无法从其他位置使用
Q&A问答精选
问:为什么我调用行情接口时返回“invalid-parameter”?
答:检查参数instId是否写对了格式,欧易交易所官网使用的交易对名称是BTC-USDT(中间用短横线),而不是BTCUSDT,杠杆交易对需要加后缀,比如BTC-USDT-SWAP是永续合约。
问:Python脚本下单后,订单能否在网页端即时看到?
答:可以,通过API提交的订单会实时同步到你的欧易账号,在“历史订单”中能看到记录,如果遇到延迟,可能是网络问题,建议使用sleep(0.5)做简单的防抖处理。
问:我的API有读取权限,为什么无法获取账户余额?
答:账户余额属于敏感信息,需要同时开启“读取权限”和“交易权限”才能访问,检查API管理页面的权限列表,确保两者都勾选了。
问:欧易的测试网和实盘网址一样吗?
答:不一样,测试网地址是https://oknr.com.cn/testnet,而实盘API基地址是https://oknr.com.cn,测试网使用模拟资金,适合策略开发;实盘交易务必确认地址无误,避免误操作。
通过以上教程,你应该已经掌握了从API申请到Python交易脚本落地的完整流程,量化交易的核心是风险控制,先用小资金测试,确认策略稳定后再逐步增加仓位,如果你想要更高级的策略,比如网格交易或套利机器人,欧易交易所官网的API还支持WebSocket实时推送和批量订单接口,值得进一步探索。
标签: Python交易