目录导读
欧易API接口简介与申请流程
欧易(OKX)作为全球领先的数字资产交易平台,其API接口允许开发者通过程序化方式获取实时行情、执行交易操作及管理账户,申请API接口是自动化交易的第一步。

申请步骤:
- 登录欧易交易所官网,完成高级实名认证。
- 进入“账户” → “API” → “创建API密钥”。
- 填写权限:建议仅勾选“交易”与“读取”权限,避免不必要的资产风险。
- 保存API Key、Secret Key及Passphrase(密码短语),三者缺一不可。
注意事项:
- 切勿将密钥明文上传到公开代码仓库或分享给第三方。
- 建议绑定IP白名单,仅允许指定服务器访问。
Python环境配置与依赖库安装
编写交易脚本前,需要安装Python(推荐3.8+版本)及两个核心库:requests(HTTP请求)和hmac(签名生成)。
安装命令:
pip install requests
(hmac为Python标准库,无需额外安装)
环境验证:
打开命令行输入python --version,确认版本号后即可进入代码编写阶段。
获取市场行情数据的实战脚本
以下示例演示如何通过欧易公开API获取BTC/USDT的最新成交价,该接口无需API密钥,适合新手测试。
import requests
import json
url = "https://www.okx.com/api/v5/market/ticker?instId=BTC-USDT"
response = requests.get(url)
data = response.json()
last_price = data['data'][0]['last']
print(f"最新BTC/USDT价格:{last_price} USD")
输出示例:
最新BTC/USDT价格:67500.2 USD
若需要获取其他交易对,只需修改instId参数即可,例如ETH-USDT。
编写简单的下单交易函数
有API密钥后,即可实现自动化限价单,以下代码需替换为您的真实密钥(建议从欧易交易所下载处获取最新接口文档)。
import requests
import hmac
import base64
import json
import time
from datetime import datetime
API_KEY = "你的API_Key"
SECRET_KEY = "你的Secret_Key"
PASSPHRASE = "你的密码短语"
def get_timestamp():
return datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%S.%f')[:-3] + 'Z'
def sign(message, secret):
mac = hmac.new(bytes(secret, encoding='utf-8'), bytes(message, encoding='utf-8'), digestmod='sha256')
return base64.b64encode(mac.digest())
def place_order(side, size, price):
base_url = "https://www.okx.com"
request_path = "/api/v5/trade/order"
body = {
"instId": "BTC-USDT",
"tdMode": "cash", # 现货交易
"side": side, # "buy" 或 "sell"
"ordType": "limit", # 限价单
"sz": str(size),
"px": str(price)
}
timestamp = get_timestamp()
message = timestamp + 'POST' + request_path + json.dumps(body)
signature = sign(message, SECRET_KEY)
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 + request_path, headers=headers, json=body)
return response.json()
# 示例:以65000 USDT买入0.01 BTC
result = place_order("buy", 0.01, 65000)
print(result)
运行后返回结果:
{"code":"0","data":[{"ordId":"123456789","clOrdId":"abc123","ts":"1712345678000"}]}
code":"0"表示订单提交成功。
安全注意事项与常见问题问答
Q1:申请API时,权限如何设置最安全?
A: 只勾选“读取”和“交易”权限,不勾选“提币”与“资金划转”,同时启用IP白名单限制服务器访问来源,确保即便密钥泄露也无法提取资产。
Q2:脚本中出现签名验证失败(signature invalid)怎么办?
A: 检查以下几点:
- 时间戳格式是否为UTC且精确到毫秒。
- Secret Key是否使用准确(区分大小写)。
- 请求体(body)字符串必须与签名时一致,不能有多余空格或换行。
Q3:如何获取最新API文档和接口列表?
A: 访问欧易交易所官网的“开发者文档”栏目,或下载Python SDK示例代码可快速上手。
Q4:Python脚本能否实现网格交易或定投策略?
A: 完全可以,只需编写循环逻辑,定期检查行情并调用place_order函数,例如每隔5分钟通过API获取欧易交易所下载行情,若涨幅超过2%则自动卖出。
Q5:遇到限频(rate limit)错误如何解决?
A: 欧易API对单IP请求有每秒20次的限制,在脚本中使用time.sleep(0.05)增加间隔,或使用WebSocket接口实现实时推送。
通过以上教程,您已掌握从申请API密钥到编写Python交易脚本的完整链路,建议先用模拟盘测试策略稳定性,再逐步投入实盘资金,如需更高级的量化交易功能,可参考官网的REST API与WebSocket协议。
标签: Python交易脚本