目录导读
- 欧易API接口概述
- API申请与密钥配置流程
- Python环境搭建与依赖库安装
- 编写首个交易脚本:从行情获取到下单
- 常见问题与代码调试技巧
- 问答专区:新手最常遇到的5个问题
欧易API接口概述
欧易交易所(原名OKEx)作为全球领先的数字资产交易平台,其欧易API接口为开发者提供了自动化交易的核心能力,通过API,你可以实现行情数据抓取、自动买卖挂单、资产查询等操作,本教程将完整演示如何申请欧易API,并使用Python编写简单的交易脚本,帮助你在量化交易领域迈出第一步。

注意:本文所有涉及欧易交易所官网的操作,请访问【欧易交易所下载】获取最新入口,并确保使用官方渠道申请API密钥。
API申请与密钥配置流程
步骤1:登录欧易交易所官网
访问【欧易交易所官网】并登录你的账户,若未注册,请先完成实名认证。
步骤2:进入API管理页面
在账户菜单中找到“API”选项(通常位于“账户”或“安全设置”下),点击“创建API”。
步骤3:设置权限与安全验证
- 权限类型:建议选择“交易”权限(包含查询和下单),避免使用“提币”权限以保障资金安全。
- 安全验证:需通过手机验证码或谷歌身份验证器(2FA)确认身份。
- IP绑定:建议填写你运行脚本的服务器的公网IP,防止密钥泄露后被他人滥用。
步骤4:保存密钥
创建成功后,你会获得以下信息:
- API Key(公钥)
- Secret Key(私钥,仅显示一次,务必截图或备份至安全位置)
- Passphrase(密码短语,在签名时使用)
⚠️ 安全提示:切勿将Secret Key和Passphrase上传至任何公开平台或代码仓库。
Python环境搭建与依赖库安装
1 安装Python 3.7+
确保你的系统已安装Python,建议使用虚拟环境管理依赖。
2 安装依赖库
使用pip安装以下库:
pip install requests hashlib hmac base64 json time
requests:用于HTTP请求hashlib+hmac:生成API签名base64:编码处理json:解析响应数据time:生成时间戳
编写首个交易脚本:从行情获取到下单
以下脚本演示如何调用欧易API接口获取当前BTC/USDT行情,并下一个市价买单。
代码示例(完整可运行)
import requests
import hashlib
import hmac
import base64
import json
import time
# 配置信息(请替换为你自己的密钥)
API_KEY = "your-api-key-here"
SECRET_KEY = "your-secret-key-here"
PASSPHRASE = "your-passphrase-here"
# 基础URL(欧易API端点)
BASE_URL = "https://www.okx.com"
# 生成签名
def generate_sign(timestamp, method, request_path, body=""):
message = timestamp + method + request_path + (body if body else "")
mac = hmac.new(
bytes(SECRET_KEY, encoding='utf-8'),
bytes(message, encoding='utf-8'),
digestmod=hashlib.sha256
)
return base64.b64encode(mac.digest()).decode()
# 获取K线数据(示例:最新价格)
def get_ticker(symbol="BTC-USDT"):
endpoint = "/api/v5/market/ticker"
params = {"instId": symbol}
response = requests.get(BASE_URL + endpoint, params=params)
data = response.json()
return data["data"][0]["last"]
# 下单(市价买入)
def place_order(symbol, side, size):
endpoint = "/api/v5/trade/order"
timestamp = str(time.time())
body = {
"instId": symbol,
"tdMode": "cash",
"side": side,
"ordType": "market",
"sz": str(size)
}
body_json = json.dumps(body)
sign = generate_sign(timestamp, "POST", endpoint, body_json)
headers = {
"OK-ACCESS-KEY": API_KEY,
"OK-ACCESS-SIGN": sign,
"OK-ACCESS-TIMESTAMP": timestamp,
"OK-ACCESS-PASSPHRASE": PASSPHRASE,
"Content-Type": "application/json"
}
response = requests.post(BASE_URL + endpoint, headers=headers, data=body_json)
return response.json()
# 主程序
if __name__ == "__main__":
# 步骤1:获取最新价格
price = get_ticker("BTC-USDT")
print(f"当前BTC价格: {price} USDT")
# 步骤2:市价买入0.001 BTC(请根据自身资金调整)
order_result = place_order("BTC-USDT", "buy", 0.001)
print("下单结果:", order_result)
关键点解释
- 签名算法:使用HMAC-SHA256对时间戳+方法+路径+请求体进行加密,确保请求合法性。
- 请求头:必须包含
OK-ACCESS-KEY、OK-ACCESS-SIGN、OK-ACCESS-TIMESTAMP、OK-ACCESS-PASSPHRASE。 - 交易参数:
instId为交易对,tdMode为资金模式(现金交易),sz为数量。
常见问题与代码调试技巧
问题1:签名验证失败
- 原因:时间戳未严格使用UTC时间,或请求体与签名时使用的body不一致。
- 解决:确保生成签名时使用的
body与请求体完全一致(包括空格和换行)。
问题2:返回“Insufficient balance”
- 原因:账户内可用余额不足。
- 解决:检查可用资产,或调整下单数量。
问题3:API被限频
- 规则:欧易API对请求频率有限制(如每秒钟最多10次)。
- 解决:在循环中增加
time.sleep()延迟。
问题4:数据解析失败
- 原因:请求返回格式异常或网络问题。
- 解决:打印原始响应内容
response.text辅助排查。
问答专区:新手最常遇到的5个问题
Q1:如何获取欧易交易所API接口文档?
A:欧易官方文档位于「欧易交易所官网」的开发者中心,建议优先查看“REST API”部分,并仔细阅读签名生成章节。
Q2:Python脚本是否需要始终运行在服务器上?
A:如果你需要实现24小时自动交易,建议将脚本部署在云服务器或VPS上,可结合cron或schedule库定时执行。
Q3:有没有测试环境可以模拟交易?
A:是的!欧易提供“模拟交易”功能,在官网申请API时选择“模拟盘”权限,并使用模拟盘域名进行测试,避免真金白银的风险。
Q4:如何查看已申请的API密钥?
A:登录欧易账户后,在“API管理”页面可以查看已有密钥(Secret Key不会再次显示,需在创建时保存)。
Q5:脚本报错“API key not found”怎么办?
A:检查API_KEY值是否正确粘贴(包括大小写),同时确认该密钥在欧易平台上未被删除或禁用,如忘记密钥,可重新创建一个新的API并替换脚本中的配置。
通过本教程,你已掌握欧易API接口申请教程,并能够使用Python编写简单的交易脚本,建议从获取行情数据开始练习,逐步过渡到实盘交易,如需更多高级功能(如限价单、K线历史数据、组合交易等),可参考官方文档并结合你自身的策略进行开发,祝你在数字资产交易之路上稳步前行!
标签: Python交易脚本