在数字货币交易的世界里,很多朋友都希望实现自动化操作——比如设定好价格自动买入卖出,或者根据市场数据快速执行策略,而这背后绕不开一个关键环节:API接口的申请与调用,今天我们就以欧易交易所为例,完整走一遍从API申请到用Python编写简单交易脚本的全流程,如果你是刚接触编程的新手,也别担心,我会尽量用大白话讲清楚每一步。

目录导读
- 为什么要用API做交易?——人工操作的那些痛
- 欧易API接口申请步骤详解(附避坑指南)
- 准备工作:Python环境与库安装
- 手写第一个交易脚本:行情获取与下单示例
- 常见问题问答(Q&A)
- 安全提示与下一步学习方向
为什么要用API做交易?——人工操作的那些痛
想象一下这个场景:你盯着一根K线图,发现某个币突然拉升,想赶紧买入,结果手忙脚乱打开手机App,填价格、选数量、输密码,等单子挂上去,价格已经飞了,这还算好的,更常见的是夜间行情波动,总不能半夜定闹钟起来操作吧?
API(应用程序接口) 就像给你配了个7×24小时的智能助手,你写一段代码,告诉它“当BTC价格跌破某个位置时自动买入”,剩下的事就交给程序,用欧易API,你可以:
- 实时获取行情数据
- 自动下单、撤单
- 查询账户余额
- 甚至跑一些简单的网格策略
欧易API接口申请步骤详解
第一步:登录官网并进入API管理
打开欧易交易所官网,登录你的账号,在右上角头像下拉菜单找到“API”选项(部分版本在“账户中心”里),这里要特别提醒:不建议直接用主账户的API,最好创建一个仅用于交易的子账户,权限隔离更安全。
第二步:创建API key
点击“创建API”按钮,你会看到几个选项:
- 读取权限:只能查数据,不能交易(适合行情分析)
- 交易权限:可以下单、撤单(我们要选这个)
- 提币权限:千万别勾选! 一旦泄露,别人能直接转走你的资产
给你的API起个名字,test_bot”,然后点击创建,系统会生成一串API Key和Secret Key,Secret Key只会显示一次,务必立刻复制保存到本地(比如一个加密的txt文件),否则只能删除重新创建。
第三步:绑定IP白名单(强烈建议)
在API详情页,你可以设置“允许访问的IP地址”,如果你用的是云服务器,就把服务器IP填进去;如果是本地电脑,可以查一下自己公网IP然后绑定,这一步能有效防止API被异地盗用。
准备工作:Python环境与库安装
假设你已经安装了Python(建议3.8以上版本),打开终端或命令提示符,安装两个关键库:
pip install requests pip install hashlib
为什么不用官方SDK? 其实欧易官方提供了Python SDK,但为了让你理解底层原理,我们直接用requests手动构造请求,这样以后换任何交易所,思路都是通用的。
建议使用虚拟环境(比如venv)隔离项目依赖,避免与其他项目冲突,如果你经常进行欧易交易所下载,记得留意官网的软件更新通知,新版客户端对API兼容性更好。
手写第一个交易脚本:行情获取与下单示例
1 获取BTC/USDT当前价格(公共API)
不需要API Key也能调用的接口,用来测试环境是否连通:
import requests
url = "https://www.okwi.com.cn/api/v5/market/ticker?instId=BTC-USDT"
response = requests.get(url)
data = response.json()
print(f"当前BTC价格: {data['data'][0]['last']}")
运行这段代码,你会看到最新成交价,如果没问题,说明你的网络环境可以访问欧易服务器。
2 签名机制(私有API的核心)
所有涉及账户操作的请求,都需要做签名,欧易使用HMAC-SHA256算法,简单说就是把请求参数按规则加密后放入请求头,这是新手最容易卡壳的地方,我拆解一下步骤:
import requests
import hmac
import base64
import datetime
from hashlib import sha256
# 你的API信息(千万别硬编码在代码里,建议用环境变量)
api_key = "你的API_KEY"
secret_key = "你的SECRET_KEY"
passphrase = "你在创建API时设置的密码短语"
# 构造请求
method = "POST" # 或GET
request_path = "/api/v5/trade/order"
body = {
"instId": "BTC-USDT",
"tdMode": "cash",
"side": "buy",
"ordType": "market",
"sz": "0.001"
}
body_json = json.dumps(body) # 转换为JSON字符串
# 生成时间戳(ISO格式)
timestamp = datetime.datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%S.%f')[:-3] + 'Z'
# 准备签名字符串
message = timestamp + method + request_path + body_json
# 计算签名
signature = base64.b64encode(
hmac.new(secret_key.encode('utf-8'), message.encode('utf-8'), sha256).digest()
).decode('utf-8')
# 设置请求头
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(f"https://www.okwi.com.cn{request_path}", headers=headers, data=body_json)
print(response.json())
这段代码会以市价买入0.001个BTC(用U本位交易)。强烈建议先用小额测试,比如把sz改成0.0001。
3 完整脚本骨架
把上面两部分整合起来,加上简单的错误处理,就是一个基础的交易机器人,更复杂的策略比如网格、移动止盈,都是在这个框架上加逻辑。
常见问题问答(Q&A)
Q1:申请API时,Passphrase(密码短语)是什么?
A:这是你在创建API时自己设的一个口令(不是账户密码),每次请求都要带上它,和Key、签名一起验证身份,如果忘了,只能删除API重新创建。
Q2:为什么我的签名总是失败(报错“Invalid Sign”)?
A:最常见的原因有:时间戳偏差太大(服务器与本地时间差超过30秒)、请求体格式不对(必须是JSON字符串而非字典)、或者Secret Key复制时多了空格,建议先用官方提供的在线签名工具比对一下结果。
Q3:交易脚本每天最多调用多少次?
A:欧易对API有频率限制,普通用户大概每秒10次左右,短线高频策略需要用WebSocket(实时推送),而不是不停轮询。
Q4:脚本能跑在手机上吗?
A:理论上可以(用Termux之类的终端),但更推荐用云服务器(比如阿里云、腾讯云),支付宝买个99元一年的轻量服务器,24小时挂脚本,功耗比手机还低。
安全提示与下一步学习方向
- 永远不要泄露Secret Key:不要截图发群里,不要上传到GitHub(哪怕私有仓库也建议用环境变量或加密存储)
- 小额测试:先用0.0001个币跑通流程,再逐步增大下单量
- 日志记录:在脚本里加上
logging模块,记录每次下单的结果,方便复盘
如果你已经理解上面的内容,下一步可以学习:
- WebSocket数据流:获取实时价格变化(比轮询快且节省流量)
- 止盈止损逻辑:比如持仓达到目标收益率自动平仓
- 多币种监控:一个脚本同时监控ETH、SOL等多个币种
最后提醒一句:自动化交易只是工具,不要迷信它能稳赚。 市场永远有风险,写代码时多想想“如果价格反向波动怎么办”,希望这篇教程能帮你迈出自动交易的第一步,如果有其他问题,欢迎在评论区交流。
标签: 欧易API Python自动交易脚本