目录导读
- 为什么需要欧易API?交易员的“第二双手”
- 手把手教你申请欧易API密钥(附避坑指南)
- Python环境搭建与必备库安装
- 编写第一个交易脚本:行情获取+自动下单
- 常见问题与代码调试技巧
- 问答环节:新手最常踩的五个坑
为什么需要欧易API?交易员的“第二双手”
在加密货币市场,手动盯盘下单就像用手挡瀑布——既累又慢,欧易API接口允许你用代码直接连接交易所服务器,实现自动监控价格、执行买卖、管理订单,无论你是做量化套利,还是想设置止损机器人,Python脚本+欧易API都是最佳入门组合。

API就是交易所给你的“遥控器”,而Python脚本则是帮你按遥控器的“机械臂”。
手把手申请欧易API密钥
登录账号
打开欧易交易所官网,登录你的账户,如果没有账号,建议先完成KYC认证(否则API权限受限)。
进入API管理页面
点击右上角头像 → “API” → “创建API Key”,注意:不同版本页面可能叫“API管理”或“开发者中心”。
填写信息
- 备注名:随便写,我的交易机器人”
- 权限选择:新手建议勾选“读取”+“交易”(不要勾“提现”,安全第一)
- 安全验证:需要邮箱+谷歌验证器双重确认
保存密钥
创建成功后,你会看到两个关键字符串:
- API Key(类似用户名)
- Secret Key(交易密码,只显示一次!)
⚠️ 重要提醒:立刻把Secret Key复制到本地TXT文件,关闭页面后永不显示,建议同时开启IP白名单(只允许你自己的服务器IP调用)。
想要手机端操作?欧易交易所下载后,在APP的“个人中心-API”同样可以创建密钥。
Python环境搭建与必备库安装
打开终端或CMD,依次执行:
pip install requests pandas
如果你要处理实时数据,建议加装:
pip install websocket-client
推荐IDE:VSCode或PyCharm(社区版免费),新手直接下载Python 3.9+版本,别碰3.12以下(可能部分库不兼容)。
编写第一个交易脚本:行情获取+自动下单
以下是一个完整脚本,实现BTC/USDT市价买入0.001个:
import requests
import json
import time
import hashlib
import base64
import hmac
# 从文件读取密钥
with open('api_key.txt', 'r') as f:
api_key = f.readline().strip()
secret_key = f.readline().strip()
base_url = "https://www.okx.com"
def get_timestamp():
return str(int(time.time()))
def sign(message, secret_key):
mac = hmac.new(bytes(secret_key, encoding='utf8'), bytes(message, encoding='utf-8'), digestmod='sha256')
d = mac.digest()
return base64.b64encode(d)
def place_order(side, sz, tdMode='cash'):
"""下单函数 side: 'buy' or 'sell', sz: 数量"""
path = '/api/v5/trade/order'
body = {
"instId": "BTC-USDT",
"tdMode": tdMode,
"side": side,
"ordType": "market",
"sz": str(sz)
}
timestamp = get_timestamp()
message = timestamp + 'POST' + 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": "你的交易密码",
"Content-Type": "application/json"
}
response = requests.post(base_url + path, headers=headers, json=body)
return response.json()
# 获取当前BTC价格(用于判断)
def get_ticker():
path = '/api/v5/market/ticker?instId=BTC-USDT'
response = requests.get(base_url + path)
return response.json()['data'][0]['last']
# 执行:当价格低于60000时买入
current_price = float(get_ticker())
print(f"当前BTC价格: {current_price}")
if current_price < 60000:
result = place_order('buy', 0.001)
print("买入结果:", result)
else:
print("价格过高,等待时机...")
关键点解释:
sign()函数用于生成加密签名,欧易要求每次请求都必须带签名- 市价单
ordType: "market"适合新手,但注意滑点风险 tdMode: 'cash'表示现货交易,合约交易需要改成'isolated'
常见问题与代码调试技巧
| 错误码 | 含义 | 解决方法 |
|---|---|---|
| 400 | 参数错误 | 检查请求体字段是否拼错 |
| 401 | 签名失败 | 重新核对Secret Key和Passphrase |
| 50013 | 余额不足 | 检查账户资产,或者缩小下单数量 |
调试技巧:
在requests.post前加print(body, headers),对比欧易API文档的示例请求格式。
问答环节:新手最常踩的五个坑
Q1:为什么我的签名总是报错?
A:99%的情况是Passphrase拼写错误,Passphrase是创建API时自己设的密码,不是Secret Key!
Q2:脚本能24小时运行吗?
A:建议部署在云服务器(比如阿里云轻量应用服务器),每月几十块成本,本地电脑关机就废了。
Q3:如何避免被交易所风控?
A:请求频率别超过每秒5次,建议加time.sleep(0.2),另外不要用脚本刷单,欧易对异常交易监控很严。
Q4:脚本下单后没反应怎么办?
A:检查是否开启“交易权限”,部分用户默认只开“读取”,登录欧易交易所官网重新编辑API权限。
Q5:如何实现止损自动化?
A:可以写个循环监控价格,当跌幅超过3%时自动卖出,但更建议用WebSocket实时推送,避免轮询延迟。
延伸阅读:如果你需要更复杂的策略(如网格交易、套利监控),可以学习ccxt库,它封装了欧易等50多家交易所的API,只需几行代码就能切换平台。
最后提醒:实盘测试先用最小单位(0.0001 BTC),等逻辑验证无误再加大投入,市场有风险,代码需谨慎。
标签: 欧易API Python交易脚本