目录导读
- 为什么要用API交易?
- 欧易API接口申请全流程
- 准备工作:Python环境与依赖库
- 实战:编写一个简单的自动交易脚本
- 常见问题与避坑指南
- 问答环节:你的疑问,我来解答
为什么要用API交易?
很多朋友刚接触加密货币交易时,习惯手动在欧易交易所官网界面点点鼠标挂单,但当你需要同时监控多个币种、执行复杂的策略(比如网格交易、套利),或者想避免情绪化操作时,API(应用程序接口)就派上用场了。

简单说,API就像是一座桥梁,让你的Python脚本直接与交易所的服务器对话,实现自动化挂单、撤单、查询余额等操作,这样一来,你只需要写好代码,电脑就能24小时帮你盯盘,甚至可以在你睡觉时完成交易。
API交易还有一个隐藏优势——速度,手动操作需要加载网页、点击按钮,往往需要好几秒,而API请求通常在毫秒级别,这对短线交易者来说至关重要。
欧易API接口申请全流程
第一步:登录并创建API
- 访问欧易交易所官网(建议使用稳定域名,
okfl.com.cn),登录你的账户。 - 在右上角个人中心找到“API”选项,点击“创建API”。
- 根据需求选择API类型:
- 只读API:只能查询账户信息,不能交易,适合需要监控但不想自动操作的用户。
- 交易API:可以下单、撤单,适合需要执行策略的朋友。
- 提现API:可以发起提币,一般不建议开启,除非你清楚自己在做什么。
第二步:安全设置
创建API时,系统会要求你设置权限和IP白名单:
- 权限:建议默认只勾选“读取”和“交易”,“提现”保持关闭。
- IP白名单:如果你在固定IP(如家庭宽带、云服务器)上运行脚本,只填入该IP即可,如果IP不固定(比如用动态IP的笔记本),可以暂时留空,但风险较高。
第三步:保存密钥
创建成功后,你会得到两个关键信息:
- API Key(类似你的用户名)
- Secret Key(类似你的密码,请务必保密,不要分享给任何人)
注意:部分API还会要求设置“Passphrase”(密码短语),这是额外的安全层,记得记录下来。
提示:如果你需要下载欧易交易所APP或桌面客户端,可在浏览器搜索“欧易交易所下载”,选择官方渠道安装。
准备工作:Python环境与依赖库
在开始写脚本前,确保你的电脑已经安装了Python(推荐3.8及以上版本),然后安装以下三个库:
pip install requests pip install hmac pip install hashlib
我们只需要用到requests和标准库hashlib、hmac,如果你的系统没有这些库,直接用pip安装即可。
测试连接
先写一段简单的代码,验证你的API是否能正常工作,以下代码会读取你的账户总资金(USDT为例):
import requests
import hmac
import hashlib
import base64
import time
API_KEY = "你的API_Key"
SECRET_KEY = "你的Secret_Key"
def get_balance():
url = "https://www.okx.com/api/v5/account/balance"
timestamp = str(int(time.time()))
body = ""
sign = base64.b64encode(
hmac.new(SECRET_KEY.encode(), (timestamp + "GET" + "/api/v5/account/balance" + body).encode(),
hashlib.sha256).digest()
).decode()
headers = {
"OK-ACCESS-KEY": API_KEY,
"OK-ACCESS-SIGN": sign,
"OK-ACCESS-TIMESTAMP": timestamp,
"OK-ACCESS-PASSPHRASE": "你的密码短语"
}
response = requests.get(url, headers=headers)
return response.json()
print(get_balance())
运行后,如果返回的数据包含"code":"0",说明连接成功。
实战:编写一个简单的自动交易脚本
假设我们想实现这样一个功能:当比特币(BTC)价格低于60000 USDT时,自动买入0.001个BTC,以下是一个完整的示例。
完整代码示例
import requests
import hmac
import hashlib
import base64
import time
import json
API_KEY = "你的API_Key"
SECRET_KEY = "你的Secret_Key"
PASSPHRASE = "你的密码短语"
def generate_sign(method, endpoint, body=""):
timestamp = str(int(time.time()))
message = timestamp + method + endpoint + body
mac = hmac.new(SECRET_KEY.encode(), message.encode(), hashlib.sha256)
return base64.b64encode(mac.digest()).decode()
def get_btc_price():
url = "https://www.okx.com/api/v5/market/ticker?instId=BTC-USDT"
response = requests.get(url)
data = response.json()
if data["code"] == "0":
return float(data["data"][0]["last"])
else:
return None
def place_market_order(instId, side, size):
endpoint = "/api/v5/trade/order"
url = "https://www.okx.com" + endpoint
body = json.dumps({
"instId": instId,
"tdMode": "cash", # 现货模式
"side": side, # "buy" 或 "sell"
"ordType": "market",
"sz": str(size)
})
sign = generate_sign("POST", endpoint, body)
headers = {
"OK-ACCESS-KEY": API_KEY,
"OK-ACCESS-SIGN": sign,
"OK-ACCESS-TIMESTAMP": str(int(time.time())),
"OK-ACCESS-PASSPHRASE": PASSPHRASE,
"Content-Type": "application/json"
}
response = requests.post(url, data=body, headers=headers)
return response.json()
# 主逻辑
if __name__ == "__main__":
price = get_btc_price()
print(f"当前BTC价格:{price} USDT")
if price and price < 60000:
print("价格低于60000,触发买入!")
result = place_market_order("BTC-USDT", "buy", 0.001)
print("订单结果:", result)
else:
print("未触发交易条件")
如何运行?
- 将代码中的
API_KEY、SECRET_KEY、PASSPHRASE替换为你在欧易交易所官网申请的真实值。 - 在终端运行脚本:
python trading_bot.py。 - 脚本会每隔几秒(你可以手动添加循环)检查BTC价格,一旦满足条件就自动买入。
安全提醒:不要在公开代码中暴露你的密钥,建议使用环境变量存储,例如
os.getenv("OKX_API_KEY")。
如果你想获取更全面的交易工具,可以访问欧易交易所下载页面,安装官方客户端辅助操作。
常见问题与避坑指南
❌ 错误1:签名验证失败
- 原因:时间戳不准确、密码短语错误、请求参数顺序不对。
- 解决:检查服务器时间是否同步(可以使用
ntpdate校准),确认Passphrase正确。
❌ 错误2:交易被拒绝,提示“资金不足”
- 检查账户余额是否足够,注意USDT和BTC的可用余额。
- 现货交易需要确保“现金账户”有足够资金。
❌ 错误3:无法连接API
- 可能原因:IP白名单限制,或者使用了VPN导致请求超时。
- 解决:先在欧易交易所官网的API管理页面添加当前IP到白名单。
💡 进阶建议
- 错误处理:加入重试机制,比如网络波动时等待1秒再试。
- 日志记录:用
logging模块记录每次交易,方便复盘。 - 风险控制:设置每日最大交易次数或最大亏损比例,避免策略失控。
问答环节:你的疑问,我来解答
Q1:API交易安全吗?我的密钥会不会泄露?
A:只要你不把密钥写入公开代码或分享给他人,就是安全的,建议:
- 使用IP白名单限制访问来源。
- 定期更换密钥。
- 不要开通“提现”权限。
如果还是担心,可以在欧易交易所官网设置“资金密码”二次验证。
Q2:为什么我的脚本一直返回“请求频率限制”?
A:各交易所对API调用有频率限制,欧易通常为每秒10-20次,你可以在两次请求之间加入time.sleep(0.1)来降低频率,如果进行高频交易,建议使用WebSocket流而非REST API。
Q3:可以用这个脚本做网格交易吗?
A:当然可以!只要在脚本中加入循环判断,设定多个价格区间,就能实现简单的网格策略,但注意:网格交易需要频繁挂单撤单,建议使用市价单或限价单的“FOK”模式。
Q4:我想测试脚本,但不想用真钱怎么办?
A:欧易提供模拟交易环境(测试网),只需要在申请API时选择“模拟盘”,然后使用测试网的API地址(https://www.okx.com/api/v5/simulate)即可,或者,你可以先用极小金额(如1 USDT)做实盘测试。
Q5:Python代码报错“module 'hmac' has no attribute 'new'”,如何解决?
A:这是导包错误,正确写法是import hmac,然后使用hmac.new(),检查你是否错误地导入了其他同名的库。
从0到1的自动化交易
通过本文,你应该已经学会了:
- 如何在欧易交易所官网申请API接口。
- 安装Python环境并编写连接代码。
- 实现一个简单的自动买入脚本。
- 避开常见的踩坑点。
自动化交易并不神秘,核心就是“API接口 + 策略逻辑”,只要你掌握了基础方法,后续可以自由扩展功能,比如添加均线策略、止盈止损,甚至对接通知机器人。
如果你想深入了解更多高阶玩法,欢迎持续关注后续文章,打开你的Python编辑器,开始你的第一个自动化交易脚本吧!如果遇到问题,不妨先在欧易交易所官网的文档中查找接口详情,或者重读本文的问答部分。
动手试试看?
标签: Python交易脚本