目录导读
- 第一章:欧易API接口申请前的必要准备
- 第二章:一步一步教你完成欧易API密钥创建与权限配置
- 第三章:Python环境搭建与依赖库安装
- 第四章:手写第一个欧易交易脚本(含完整代码)
- 第五章:常见API错误排查与安全最佳实践
- 第六章:高频问答(FAQ)——新手最关心的5个问题
第一章:欧易API接口申请前的必要准备
在进入欧易交易所官网正式编写交易脚本之前,你首先需要完成两个基础动作:注册并完成KYC实名认证(至少达到LV1级别),以及开启账户的二次验证(2FA),API接口作为程序与欧易服务器通信的桥梁,其安全性直接关联资产安全,务必记住:任何情况下都不要将你的API密钥分享给第三方。

建议在欧易交易所下载版本更新后及时同步客户端,但脚本调用使用的是REST API或WebSocket接口,与移动端App无直接依赖关系,可放心开发。
第二章:欧易API接口申请——密钥创建与权限配置
- 登录欧易官网,点击右上角头像进入“API管理”页面。
- 点击“创建API Key”,选择“交易API”(若只做行情分析可选“只读API”)。
- 为你的密钥设置一个备注名(如“my_python_trader”)。
- 勾选权限时,务必遵循最小权限原则,做网格交易或限价单策略,仅需开启“交易”和“读取”权限;不要开启“提现”权限。
- 创建成功后,系统会展示 API Key 和 Secret Key,Secret Key仅显示一次,必须立即复制保存到本地密码管理器,同时会生成一个Passphrase(口令),这在后续签名请求中会用到。
第三章:Python环境搭建与依赖库安装
推荐使用Python 3.8+版本,打开终端或命令行,执行以下命令安装核心依赖:
pip install requests pandas ccxt
其中ccxt是一个统一加密货币交易所接口库,支持欧易(OKX),你也可以直接使用欧易官方的okx库(pip install okx),但本文为了降低初学者门槛,采用逻辑更清晰的requests手动签名方式。
第四章:手写第一个欧易交易脚本(完整代码)
以下脚本功能:获取BTC/USDT当前市场价格,并提交一个限价买单(买入0.001个BTC),请将API_KEY、SECRET_KEY、PASSPHRASE替换为实际值。
import requests
import json
import hmac
import hashlib
import base64
from datetime import datetime, timezone
API_KEY = "你的API_KEY"
SECRET_KEY = "你的SECRET_KEY"
PASSPHRASE = "你的PASSPHRASE"
BASE_URL = "https://www.okx.com"
def sign(secret, timestamp, method, request_path, body=""):
message = timestamp + method + request_path + body
mac = hmac.new(secret.encode(), message.encode(), hashlib.sha256)
return base64.b64encode(mac.digest()).decode()
def get_ticker():
path = "/api/v5/market/ticker?instId=BTC-USDT"
resp = requests.get(BASE_URL + path)
return resp.json()["data"][0]["last"]
def place_order(px, sz):
timestamp = datetime.now(timezone.utc).strftime('%Y-%m-%dT%H:%M:%S.%f')[:-3] + 'Z'
body = {
"instId": "BTC-USDT",
"tdMode": "cash", # 现货模式
"side": "buy",
"ordType": "limit",
"px": str(px),
"sz": str(sz)
}
body_str = json.dumps(body)
path = "/api/v5/trade/order"
header = {
"OK-ACCESS-KEY": API_KEY,
"OK-ACCESS-SIGN": sign(SECRET_KEY, timestamp, "POST", path, body_str),
"OK-ACCESS-TIMESTAMP": timestamp,
"OK-ACCESS-PASSPHRASE": PASSPHRASE,
"Content-Type": "application/json"
}
resp = requests.post(BASE_URL + path, headers=header, data=body_str)
return resp.json()
if __name__ == "__main__":
price = float(get_ticker())
print(f"当前BTC价格: {price} USDT")
# 以当前价格下浮0.5%作为限价买单
buy_price = round(price * 0.995, 2)
result = place_order(buy_price, 0.001)
print("下单结果:", json.dumps(result, indent=2))
代码逻辑解析:
sign函数使用HMAC-SHA256算法对时间戳+请求方式+请求路径+请求体进行签名。- 获取行情走公开接口,无需签名。
- 下单必须携带带签名的请求头,注意
tdMode为cash表示现货逐仓交易。
第五章:常见API错误排查与安全最佳实践
错误代码速查表:
50111:请求频率超限,欧易默认限频为20次/2秒(普通APIKey),建议使用requests.Session()复用连接,并在循环中加time.sleep(0.1)。50102:时间戳偏移过大,检查系统时间是否与网络时间同步(UTC)。50113:签名不匹配,仔细核对Secret Key和Passphrase,特别注意密钥内包含的特殊字符不要被截断。
安全建议:
- 将API密钥保存在环境变量或
.env文件中,切勿硬编码在脚本内。 - 服务器本地防火墙仅放行你的IP白名单(欧易支持绑定IP限制)。
- 定期在欧易交易所官网轮换API密钥。
第六章:高频问答(FAQ)——新手最关心的5个问题
Q1:欧易API接口申请需要收费吗?
完全免费,任何用户完成实名认证后即可创建最多10个APIKey。
Q2:使用Python脚本下单,如何模拟测试?
欧易提供了模拟盘(demo trading)环境,域名与实盘不同,API地址为https://www.okx.com(用demo账号登录后获取独立的APIKey),强烈建议先在模拟盘跑通全部逻辑。
Q3:脚本在下单时提示“资金不足”,但我账户明明有余额?
请检查tdMode和ccy(币种)参数,现货买入时,需要确保你账户有足够的USDT,且合约和现货的保证金是分开的,下单数量sz需满足最小交易限制(BTC-USDT最小为0.00001)。
Q4:API密钥被泄露怎么办?
立即登录官网删除该密钥,并调整账户资金,同时检查账户历史委托是否有异常单。
Q5:Python脚本如何获取实时K线数据?
调用/api/v5/market/candles接口,传入instId=BTC-USDT和bar=1m,可通过pandas轻松转换为DataFrame进行策略回测。
延伸阅读:完成上述基础教程后,你可以进一步研究欧易的WebSocket私有频道推送(适合做高频策略),以及尝试接入ccxt库来快速封装多交易所支持,祝你的量化之路顺利!
标签: Python交易脚本