📖 目录导读
- 欧易API接口概述
- API申请与权限配置
- 环境搭建:Python与依赖库安装
- 编写第一个交易脚本
- 常见问题与问答(FAQ)
- 安全与合规建议
欧易API接口概述
在数字资产交易领域,欧易交易所(OKX)凭借其强大的技术栈与流动性,成为全球用户首选的交易平台之一,通过欧易交易所官网提供的API接口,开发者可以实现自动化交易、行情监控、资产管理等功能,本文将以Python语言为例,详细讲解如何申请API密钥并编写简易的交易脚本,帮助您从零开始构建自己的交易工具。

什么是API?为何需要它?
API(应用程序编程接口)是欧易交易所与外部程序通信的桥梁,通过API,您可以:
- 获取实时行情数据
- 执行买卖订单
- 查询账户余额
- 管理杠杆与合约策略
对于高频交易者或量化投资者而言,API是提升效率、减少人为情绪干扰的核心工具。
API申请与权限配置
在开始编程之前,您需要先在欧易交易所下载并注册账户,然后完成身份认证(KYC),具体步骤如下:
步骤1:登录开发者中心
- 访问欧易交易所官网,登录您的账户。
- 点击个人头像 → “API” 管理页面。
步骤2:创建API密钥
- 点击“创建新的API”,系统会生成API Key、Secret Key和Passphrase三个关键参数。
- 权限设置:根据需求勾选“读取”、“交易”、“资金”等权限,若仅需行情数据,建议仅开放“读取”权限,以降低风险。
- IP白名单:强烈建议绑定服务器或本地公网IP,防止密钥泄露后被盗用。
步骤3:保存密钥
- 密钥仅显示一次,请立即复制并安全存储。
- 切勿在公开代码或网络请求中明文写入Secret Key。
环境搭建:Python与依赖库安装
所需工具
- Python 3.8+(推荐使用虚拟环境)
- 库:
requests、hmac、hashlib、base64、json、time
安装命令
pip install requests
代码结构
我们将在本地创建一个名为 okx_trade.py 的文件,所有逻辑均写入其中。
编写第一个交易脚本
以下是一个完整的示例脚本,它实现了获取BTC/USDT当前价格并下达一个市价买入订单,请将密钥替换为您从欧易交易所官网获取的真实值。
完整代码示例
import requests
import hmac
import hashlib
import base64
import json
import time
# ---------- 配置参数(请替换为真实值) ----------
API_KEY = "您的API_KEY"
SECRET_KEY = "您的SECRET_KEY"
PASSPHRASE = "您的PASSPHRASE"
BASE_URL = "https://www.okx.com"
# ---------- 工具函数:生成签名 ----------
def generate_signature(timestamp, method, request_path, body=''):
message = timestamp + method.upper() + request_path + body
mac = hmac.new(bytes(SECRET_KEY, encoding='utf8'), bytes(message, encoding='utf-8'), digestmod=hashlib.sha256)
return base64.b64encode(mac.digest())
# ---------- 获取账户信息(示例) ----------
def get_account_info():
method = 'GET'
request_path = '/api/v5/account/balance'
timestamp = str(int(time.time() * 1000))
signature = generate_signature(timestamp, method, request_path)
headers = {
'OK-ACCESS-KEY': API_KEY,
'OK-ACCESS-SIGN': signature,
'OK-ACCESS-TIMESTAMP': timestamp,
'OK-ACCESS-PASSPHRASE': PASSPHRASE,
'Content-Type': 'application/json'
}
url = BASE_URL + request_path
response = requests.get(url, headers=headers)
return response.json()
# ---------- 下单函数 ----------
def place_order(side='buy', sz='0.001', instId='BTC-USDT'):
method = 'POST'
request_path = '/api/v5/trade/order'
timestamp = str(int(time.time() * 1000))
body = {
"instId": instId,
"side": side,
"ordType": "market",
"sz": sz
}
body_json = json.dumps(body)
signature = generate_signature(timestamp, method, request_path, body_json)
headers = {
'OK-ACCESS-KEY': API_KEY,
'OK-ACCESS-SIGN': signature,
'OK-ACCESS-TIMESTAMP': timestamp,
'OK-ACCESS-PASSPHRASE': PASSPHRASE,
'Content-Type': 'application/json'
}
url = BASE_URL + request_path
response = requests.post(url, headers=headers, data=body_json)
return response.json()
# ---------- 执行 ----------
if __name__ == "__main__":
# 1. 获取账户余额
print("账户信息:", get_account_info())
# 2. 下市价买单(0.001 BTC)
# 注意:请确保账户有足够USDT,否则会报错
order_result = place_order(side='buy', sz='0.001')
print("订单结果:", order_result)
关键点解析
- 签名算法:欧易要求每个请求必须携带
OK-ACCESS-SIGN,它由时间戳、请求方法、路径和请求体通过HMAC-SHA256加密生成。 - 请求头:必须包含上述四个认证参数。
- 下单参数:
ordType="market"表示市价单;sz为数量(对于BTC-USDT现货,最小单位为0.0001)。
运行脚本后,您将在终端看到账户信息以及订单返回结果,若收到 "code":"0",说明操作成功。
常见问题与问答(FAQ)
Q1:申请API时提示“IP白名单不匹配”怎么办?
A:请登录欧易交易所官网开发者中心,检查您当前运行脚本的IP地址是否已添加到白名单,您也可以暂时关闭IP限制进行测试(不推荐生产环境使用)。
Q2:脚本运行时报错 {"code":"60010","msg":"Illegal request"}
A:通常由签名错误导致,请确认:
- 时间戳为毫秒级整数
- Secret Key 与 Passphrase 完全匹配
- 请求体(body)的格式为JSON字符串且与签名时一致
Q3:如何获取历史K线数据?
A:使用 GET /api/v5/market/candles 接口,需要传入 instId、bar(如1m、1H)等参数,具体请参考欧易官方文档。
Q4:我的API密钥泄露了怎么办?
A:立即登录欧易交易所开发者中心,禁用并删除泄露的API,然后创建新密钥,同时转移账户剩余资产至安全地址。
安全与合规建议
- 最小权限原则:仅为API分配所需的最小权限(如仅查询时不开交易权限)。
- 定期轮换密钥:建议每30天更换一次Secret Key。
- 使用环境变量:将密钥存储于系统环境变量或加密配置文件中,勿硬编码在脚本内。
- 回测先行:先使用模拟盘或小额资金测试策略,确认无误后再投入实际资金。
- 监听异常通知:配置邮件或短信告警,当API被异常调用时第一时间知晓。
通过本文的教程,您已学会如何在欧易交易所官网申请API密钥,并使用Python编写了一个简单的交易脚本,无论是进行量化交易研究,还是构建自动定投机器人,这些基础技能都将成为您的技术基石。欧易交易所下载后,您还可以探索更多高级功能,如WebSocket行情订阅、合约交易策略等,愿您在实践中不断优化,享受自动化交易带来的效率提升与投资乐趣!
标签: API接口 Python交易脚本