目录导读
欧易API接口是什么?为什么交易者需要它?
在数字货币交易领域,手工下单不仅效率低下,还容易错过最佳买卖点。欧易交易所(原OKEx)提供的API接口,允许用户通过程序自动执行交易策略,API就是一道“电子门”,让你的Python脚本能够直接访问交易所的行情数据、下单、撤单等功能。

很多交易者问:“为什么要用API?直接在网页上交易不香吗?”答案是:当你需要同时监控多个交易对、高频套利或者执行复杂策略时,人工操作几乎不可能完成,你写一个脚本监控BTC/USDT价格波动,当价格跌破某个支撑位时自动挂单买入——这就是API的典型应用场景。
如果你是新手,建议先通过欧易交易所下载获取官方客户端,熟悉基本操作后再尝试API开发,顺便说一句,欧易交易所下载的模拟盘功能非常适合测试脚本,不用真金白银就能验证策略逻辑。
欧易交易所API申请全流程(含避坑指南)
第一步:注册并完成身份认证
前往欧易官网注册账号,然后完成KYC(身份认证),注意:API权限与账户安全等级挂钩,未认证的账户无法使用交易类接口。
第二步:创建API Key
登录后进入“账户中心”→“API管理”,点击“创建API”,这里要特别注意三个参数:
- API Key:你的身份标识(类似用户名)
- Secret Key:签名密钥(严禁泄露!)
- Passphrase:自定义密码短语(用于加密通信)
第三步:设置权限
建议新手只勾选“交易”和“读取”权限,不要勾选“提现”权限——即使API Key被盗,对方也无法转走你的资产,这是很多人忽略的安全细节。
第四步:保存密钥
把API Key、Secret Key和Passphrase复制到本地文本文件中,注意:这些信息只在创建时显示一次,关闭页面后就无法再查看了!很多用户因为没保存而不得不重新申请。
Python环境搭建与依赖库安装
确保你的电脑已安装Python 3.7以上版本,然后通过pip安装两个核心库:
pip install requests pip install hashlib pip install hmac pip install base64
这里有个小技巧:建议使用虚拟环境(virtualenv)来隔离项目依赖,避免与其他Python项目冲突,如果你在Windows上遇到SSL证书报错,可以执行:
pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org requests
手把手编写第一个交易脚本(附完整代码)
下面是一个完整的Python交易脚本,实现“查询账户余额”和“市价买入0.001个BTC”两个功能,请将代码中的YOUR_API_KEY、YOUR_SECRET_KEY、YOUR_PASSPHRASE替换为真实值。
import requests
import hmac
import base64
import hashlib
import time
import json
# 在[欧易交易所下载](https://oknr.com.cn/)的API文档中获取BASE URL
BASE_URL = "https://www.okx.com"
# 替换为你的密钥
API_KEY = "YOUR_API_KEY"
SECRET_KEY = "YOUR_SECRET_KEY"
PASSPHRASE = "YOUR_PASSPHRASE"
def generate_sign(timestamp, method, request_path, body=""):
"""生成签名"""
message = timestamp + method + request_path + body
mac = hmac.new(
bytes(SECRET_KEY, encoding='utf8'),
bytes(message, encoding='utf-8'),
hashlib.sha256
)
return base64.b64encode(mac.digest()).decode()
def send_request(method, request_path, params=None):
"""发送带认证的请求"""
timestamp = str(time.time())
if method == "GET" and params:
query_string = "&".join([f"{k}={v}" for k, v in params.items()])
request_path = request_path + "?" + query_string
body = ""
else:
body = json.dumps(params) if params else ""
signature = generate_sign(timestamp, method, request_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 + request_path
if method == "GET":
response = requests.get(url, headers=headers)
elif method == "POST":
response = requests.post(url, headers=headers, data=body)
else:
response = None
return response.json()
# 1. 获取账户余额
def get_account_balance():
response = send_request("GET", "/api/v5/account/balance")
print("账户余额:", response)
return response
# 2. 市价买入BTC
def market_buy_btc(size=0.001):
params = {
"instId": "BTC-USDT",
"tdMode": "cash",
"side": "buy",
"ordType": "market",
"sz": str(size)
}
response = send_request("POST", "/api/v5/trade/order", params)
print("下单结果:", response)
return response
if __name__ == "__main__":
# 先查余额
get_account_balance()
# 然后下个极小测试单(建议先用模拟盘)
market_buy_btc(0.001)
代码说明:
generate_sign函数负责生成OKEx要求的HMAC-SHA256签名,这是API通信的安全基础send_request通用请求函数,自动处理GET/POST请求和签名- 实际使用时,建议先运行
get_account_balance()确认API连接正常,再用极小金额测试下单功能
常见问题解答(QA环节)
Q1:为什么我的API连接总是报错“Invalid signature”?
A:最常见的原因是服务器时间不同步,请在发送请求前执行time.time()检查,确保你的系统时间与网络时间误差在30秒以内,检查一下Secret Key中是否包含多余空格。
Q2:下单后提示“Insufficient balance”,但我账户明明有余额?
A:检查tdMode参数,如果是现货交易,请设置为cash;如果是保证金交易,则设置为isolated或cross,市价单买入时,注意sz参数是“数量”而非“金额”,0.001个BTC需要账户有足够的USDT。
Q3:如何获取实时行情数据?
A:使用公共接口即可,无需API Key,例如获取BTC当前价格:
import requests
response = requests.get("https://www.okx.com/api/v5/market/ticker?instId=BTC-USDT")
print(response.json())
Q4:我可以在欧易交易所下载的模拟盘中测试脚本吗?
A:完全可以!模拟盘使用相同的API接口,只需将BASE_URL改为沙盒地址https://www.okx.com(注意:沙盒环境的域名可能与正式环境不同,具体参考文档),模拟盘资产是虚拟的,随便折腾不心疼。
Q5:API Key被盗怎么办?
A:立即登录欧易交易所官网,在“API管理”中删除该Key,如果来不及,可以同时冻结账户,所以再次强调:绝对不要给API Key开通提现权限。
写在最后:这篇文章的代码只是入门级示例,真实交易还需要添加错误处理、重试机制、交易日志等功能,建议你从查询功能开始,逐步扩展到下单,最后才部署到实盘,在欧易交易所下载的文档中心有完整的API参考手册,遇到问题先查文档——大部分坑都有人踩过了。
标签: 欧易API Python交易脚本