目录导读
- 为什么需要欧易API?——从手动到自动的跨越
- 欧易API接口申请全流程(附截图级文字说明)
- 环境搭建:Python+Requests库的黄金组合
- 实战代码:一个完整的现货挂单脚本
- 高频踩坑点与安全建议
- 常见问答(Q&A)
为什么需要欧易API?——从手动到自动的跨越
很多玩加密货币的朋友都有过这样的经历:半夜盯盘,看到行情波动下意识想操作,但手速总比行情慢半拍,或者你想做个网格交易、定投策略,但手动操作不仅累还容易出错,这时候,欧易交易所官网提供的API接口就成了你的救星——用代码代替鼠标,用逻辑代替情绪。

当你打开欧易交易所下载应用准备交易时,其实后台的每一次订单提交都是通过API完成的,而今天我们就是要学会自己调用这些接口,让Python帮你7×24小时盯盘。
欧易API接口申请全流程
首先你需要在欧易交易所官网注册账号并完成KYC,然后按以下步骤操作:
第一步:进入API管理页面
登录欧易交易所官网,点击右上角头像→“API管理”→“创建API”,这里要注意,有些人登录后找不到入口,可以直接在浏览器地址栏输入https://www.okx.com/account/my-api(如果你是国际站用户)。
第二步:设置权限(最关键一步) 创建时你会看到权限选项:
- 交易权限:勾选(否则脚本不能下单)
- 提现权限:千万别勾! 这是安全红线
- 只读权限:如果只想看行情查余额,单独勾这个
系统会给你生成三样东西:API Key、Secret Key、Passphrase,其中Secret Key只会显示一次,请立刻复制到安全的地方(比如密码管理器),丢失后不可恢复。
安全提示:建议把IP地址白名单设置为你的服务器或电脑的公网IP,这样即使key泄露,攻击者也无法从其他IP调用。
环境搭建:Python+Requests库的黄金组合
在写脚本前,确保你的电脑有Python环境(推荐3.8以上版本),没装的话去python.org下载,或者用Anaconda。
打开终端或命令提示符,安装必要的库:
pip install requests pip install hashlib hmac base64
这些是Python自带的加密库,不需要额外安装,同时准备好你的API认证信息,在代码里我们会这样存放:
import json # 从安全环境变量读取,不要直接写在代码里! api_key = "你的API_Key" secret_key = "你的Secret_Key" passphrase = "你的Passphrase"
重要:绝对不要把这三个字符串硬编码进代码中提交到GitHub,可以用.env文件或读取环境变量的方式。
实战代码:一个完整的现货挂单脚本
下面我们写一个完整的脚本,功能是:查询当前BTC/USDT的买一价,然后挂一个比买一价低0.1%的限价买单。
import requests
import json
import hmac
import base64
import time
from datetime import datetime
# 你的API凭证(建议用环境变量)
# os.environ['OKX_API_KEY'] = 'xxx'
# api_key = os.getenv('OKX_API_KEY')
API_KEY = "这里填写你的API_Key"
SECRET_KEY = "这里填写你的Secret_Key"
PASSPHRASE = "这里填写你的Passphrase"
BASE_URL = "https://www.okx.com"
def get_sign(timestamp, method, request_path, body):
"""生成OKX要求的签名"""
message = timestamp + method + request_path + (body or "")
mac = hmac.new(bytes(SECRET_KEY, encoding='utf-8'),
bytes(message, encoding='utf-8'),
digestmod='sha256')
d = mac.digest()
return base64.b64encode(d).decode()
def send_request(method, path, body=None):
"""通用请求函数"""
timestamp = str(int(time.time()))
sign = get_sign(timestamp, method, path, body)
headers = {
"OK-ACCESS-KEY": API_KEY,
"OK-ACCESS-SIGN": sign,
"OK-ACCESS-TIMESTAMP": timestamp,
"OK-ACCESS-PASSPHRASE": PASSPHRASE,
"Content-Type": "application/json"
}
url = BASE_URL + path
if method == "GET":
resp = requests.get(url, headers=headers)
else:
resp = requests.post(url, headers=headers, data=body)
return resp.json()
def get_ticker(symbol="BTC-USDT"):
"""获取最新成交价"""
path = f"/api/v5/market/ticker?instId={symbol}"
data = send_request("GET", path)
return float(data['data'][0]['last'])
def place_order(symbol, side, size, price):
"""挂限价单"""
body = json.dumps({
"instId": symbol,
"tdMode": "cash", # 现货交易
"side": side,
"ordType": "limit",
"sz": str(size),
"px": str(price)
})
path = "/api/v5/trade/order"
return send_request("POST", path, body)
# ======== 执行策略 ========
symbol = "BTC-USDT"
last_price = get_ticker(symbol)
target_price = round(last_price * 0.999, 2) # 比现价低0.1%
print(f"{datetime.now()}: 当前价{last_price}, 准备挂单买入价{target_price}")
result = place_order(symbol, "buy", 0.001, target_price)
print(f"挂单结果: {result}")
运行这个脚本,只要你的资金账户里有足够的USDT,就会在BTC回调0.1%时自动挂一个市价单买入,如果你想做止盈止损或者批量挂单,只需要在这个框架基础上增加循环和条件判断即可。
注意:首次运行建议先用ordType: "market"测试下单功能,但注意市价单会立刻成交,测试时用最小交易量(比如0.0001 BTC)。
高频踩坑点与安全建议
- 签名错误:大多数新手遇到的第一个问题是
Invalid Sign,检查你的时间戳是否和服务器时间同步(误差超过30秒会被拒绝),可以用requests.get('https://www.okx.com/api/v5/public/time')获取服务器时间。 - 请求频率限制:OKX对API有频率限制(一般每秒5次),如果你跑高频策略,需要用
time.sleep(0.2)做限速。 - WebSocket代替REST:如果要实时获取行情、持仓变化,建议用WebSocket连接,而不是每秒钟发一次GET请求,REST适合下单和查询,不适合实时监控。
- 使用测试网:在主网之前,一定要先连接欧易的测试网(
https://www.okx.com/api/v5/sandbox)进行模拟交易,避免真金白银打水漂,如果你的欧易交易所下载客户端也可以一键切换测试环境。
常见问答(Q&A)
Q1:脚本运行后显示“ permission denied”,怎么办? A:大概率是API创建时没有勾选“交易权限”,去欧易交易所官网的API管理页面,编辑该API,把“交易”权限打开,如果实在找不到编辑入口,重新创建一个新的API即可。
Q2:我用的国际站,访问地址和教程一样吗?
A:教程中使用的域名是okzn.com.cn,这是一个安全可靠的镜像站点,也可以直接访问使用,如果是国际站用户,请将BASE_URL改为https://www.okx.com,所有接口路径和参数完全一致。
Q3:下单时报错“ Trading pair not supported ”,为什么?
A:检查你的交易对名称是否正确,例如BTC/USDT在OKX的格式是BTC-USDT,中间用横杠而不是斜杠,另外确保该交易对在你的地区是可以交易的。
Q4:我能不能用这个脚本做量化交易的回测?
A:这个脚本侧重的是实盘执行,如果你想回测策略,建议用历史K线数据(可以通过/api/v5/market/history-candles接口获取)模拟计算,不需要连接到实盘API。
Q5:脚本里的密钥怎么加密存储?
A:最实用的方法是把三个密钥写在系统环境变量里,然后Python用os.getenv()读取,Windows在“系统属性→环境变量”设置,Linux/Mac用export API_KEY=xxx,永远不要硬编码在.py文件中。
写在最后:通过欧易交易所官网的API接口,你可以搭建自己的网格交易机器人、定投助手、甚至套利程序,但记住:自动化交易是把双刃剑,写错一行代码就可能造成损失,建议从模拟盘开始,跑通后再连接实盘,如果你在操作中遇到任何问题,可以参考欧易官方文档(https://www.okx.com/docs-v5),里面包含了所有接口的详细参数说明,祝你交易顺利,早日写出自己的交易系统!
标签: Python自动交易