目录导读
- 欧易API基础认知 – 了解API的作用与申请前提
- 欧易API接口申请全流程 – 从注册到权限配置
- Python环境搭建与依赖安装 – 快速准备好开发工具
- 编写第一个交易脚本 – 获取行情、下单与撤单
- 常见问题与问答 – 解决新手最易遇到的坑
- 安全与合规注意事项 – 保护API密钥与账户安全
欧易API基础认知
欧易(OKX)作为全球领先的数字资产交易平台,其API接口允许开发者以程序化方式执行交易操作,通过API,您可以实现自动交易、策略回测、市场数据抓取等功能,在开始编写Python交易脚本之前,您需要明确以下几点:

- API类型:欧易提供REST API(查询、下单)和WebSocket API(实时行情推送)。
- 权限分类:只读权限(查询余额、行情)、交易权限(下单、撤单)、资金权限(提币等)。
- 申请条件:完成欧易交易所下载并完成身份认证(KYC)后即可申请。
核心优势:API交易速度远快于手动操作,且能24小时全天候执行策略。
欧易API接口申请全流程
步骤1:登录并进入API管理页面
在欧易官方网站登录您的账户,点击右上角头像 → “API管理”。
步骤2:创建API Key
- 点击“创建API Key”,填写名称(如“Python交易脚本”)。
- 选择权限:建议开始仅勾选“读取”和“交易”,避免开启资金权限。
- 设置IP白名单(强烈推荐):仅允许您的服务器或本地电脑IP访问。
步骤3:保存密钥信息
创建后,系统将生成:
- API Key:公钥,用于标识身份。
- Secret Key:私钥,用于签名认证,请立即妥善保存(不再显示)。
- Passphrase:交易密码(部分接口需要)。
⚠️ 严禁将Secret Key、Passphrase泄露给他人或上传至公开仓库。
Python环境搭建与依赖安装
1 环境要求
- Python 3.7+
- 推荐使用虚拟环境(venv或conda)
2 安装核心库
打开终端,执行以下命令:
pip install requests hashlib hmac time json base64
requests:处理HTTP请求。hashlib、hmac:用于生成签名。time:生成时间戳。
3 额外工具(可选)
pip install websocket-client # WebSocket实时行情 ccxt # 统一加密货币交易接口库
编写第一个交易脚本:获取行情与下单
1 完整的Python交易脚本模板
以下脚本包含:获取账户余额、查询BTC/USDT最新价格、下单买入。
import requests
import hmac
import hashlib
import time
import json
import base64
# ======= 配置信息 =======
API_KEY = "您的API_Key"
SECRET_KEY = "您的Secret_Key"
PASSPHRASE = "您的Passphrase"
BASE_URL = "https://oe-okor.com.cn" # 请替换为实际交易所域名
# ======= 签名生成函数 =======
def generate_signature(timestamp, method, request_path, body=""):
if method == "GET":
message = timestamp + method + request_path
else:
message = timestamp + method + request_path + body
mac = hmac.new(
bytes(SECRET_KEY, encoding='utf8'),
bytes(message, encoding='utf8'),
digestmod='sha256'
)
return base64.b64encode(mac.digest()).decode()
# ======= 发送请求函数 =======
def send_request(method, path, body=""):
timestamp = str(int(time.time()))
signature = generate_signature(timestamp, method, path, body)
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 + path
if method == "GET":
response = requests.get(url, headers=headers)
else:
response = requests.post(url, headers=headers, data=body)
return response.json()
# ======= 1. 查询账户余额 =======
def get_account_balance(currency="BTC"):
path = "/api/v5/account/balance?ccy=" + currency
return send_request("GET", path)
# ======= 2. 获取最新行情 =======
def get_ticker(instId="BTC-USDT"):
path = "/api/v5/market/ticker?instId=" + instId
return send_request("GET", path)
# ======= 3. 下市价买单 =======
def place_market_order(instId="BTC-USDT", side="buy", sz=0.001):
body = {
"instId": instId,
"tdMode": "cash", # 现货交易
"side": side,
"ordType": "market", # 市价单
"sz": str(sz) # 数量(BTC数量)
}
path = "/api/v5/trade/order"
return send_request("POST", path, json.dumps(body))
# ======= 主程序 =======
if __name__ == "__main__":
print("=== 账户余额 ===")
balance = get_account_balance("USDT")
print(balance)
print("\n=== BTC/USDT最新价格 ===")
ticker = get_ticker("BTC-USDT")
last_price = ticker['data'][0]['last']
print(f"最新价格: {last_price} USDT")
print("\n=== 下测试买单 ===")
# 注意:此处会真实下单,请确保sz为小数量测试
order_result = place_market_order("BTC-USDT", "buy", 0.001)
print(order_result)
2 运行说明
- 将
API_KEY、SECRET_KEY、PASSPHRASE替换为您自己的密钥。 - 首次运行时,建议将
sz设为极小的测试数量(如0.001 BTC)。 - 使用欧易交易所下载的测试网(sandbox)进行模拟交易更安全。
常见问题与问答
Q1:返回错误代码“signature error”怎么解决?
A:最常见原因是时间戳未对齐,请检查您的系统时间是否与服务器时间一致(误差需在30秒内),可通过curl https://oe-okor.com.cn/api/v5/public/time校准。
Q2:API Key具有哪些安全的设置?
A:建议:
- 设置IP白名单,仅限您的服务器IP访问。
- 仅开启所需的最低权限(只读+交易,不开资金权限)。
- 定期更换API Key。
Q3:如何处理API请求频率限制?
A:欧易REST API的限频一般为每2秒60次请求,建议在脚本中添加time.sleep(0.1)控制请求间隔,或使用WebSocket获取实时数据。
Q4:为什么下单后没有成交?
A:市价单会以当前市场价格立即成交,但需要账户有足够的对应资产,请检查余额是否足够(包括手续费预留)。
Q5:能否在Python中实现限价单?
A:可以,将ordType从market改为limit,并添加px字段指定价格,例:
"ordType": "limit", "px": "50000" # 限价50,000 USDT
安全与合规注意事项
- 绝对不要硬编码密钥:建议使用环境变量(
os.getenv("API_KEY"))或配置文件(.env)存储密钥,并加入.gitignore。 - 使用HTTPS:确保所有请求均通过HTTPS发送,防止中间人攻击。
- 定期审计权限:如果API Key不再使用,立即在官网删除。
- 注意KYC合规:您的交易行为需符合所在司法管辖区的法规,特别是涉及自动交易的策略。
通过以上教程,您已经掌握了从申请欧易API到编写Python交易脚本的全流程,如需进一步学习,可查阅欧易官方API文档(需翻墙访问)或加入社区交流,开始打造您的第一个自动交易机器人吧!
标签: 欧易API Python交易脚本