📑 目录导读
- 什么是欧易API?它到底能干嘛?
- 欧易交易所API申请全流程(附截图级说明)
- 准备工作:Python环境与必要库安装
- 手写第一个交易脚本:从获取行情到下单
- 常见报错与避坑指南(含问答)
- 安全第一:API权限管理与密钥保护
- 进阶玩法:怎么让脚本自动跑起来?
什么是欧易API?它到底能干嘛?
很多刚接触量化交易的朋友会问:欧易交易所官网上的API接口到底是什么?简单说,API就是欧易开放给开发者的“遥控器”——你可以通过代码让程序自动执行买入、卖出、查询余额等操作,而不用每次都手动点鼠标。

想象一下:每天凌晨3点,当某个币种的K线形态触发你的交易规则时,程序自动帮你挂单、止盈止损……这就是API的价值,目前在欧易上,通过API进行量化交易的用户占比已经超过35%,欧易交易所下载量也在持续攀升。
核心能力清单:
- 自动获取实时行情(如BTC/USDT的最新价、深度数据)
- 下达限价单/市价单
- 查询账户资产和历史订单
- 监听K线数据,实现策略触发
小问答:新手直接用API会不会有风险? 答:只要开启API时只勾选“读取”权限,不勾选“交易”和“提币”,就相当于只读模式,完全安全。
欧易交易所API申请全流程
登录你的欧易交易所官网账户,如果没有账户,先去注册一个并完成实名认证(C1级即可)。
进入API管理页面 在首页右上角头像 → “账户” → “API” → 点击“创建API”(或“Create API Key”)。
填写备注与设置权限
- 备注:我的Python量化测试”
- 权限:建议新手先只勾选“读取”(Read),等熟悉后再开启“交易”(Trade)。千万不要勾选“提币”(Withdraw),这是防黑客的关键。
- 安全验证:输入短信验证码或谷歌验证器码
保存API Key和Secret Key
创建成功后,你会看到一串api_key(例如xxxx-xxxx-xxxx)和secret_key。⚠️ 重要:Secret Key只显示一次,把它复制到安全的地方(比如密码管理器),别截图存手机相册!
小提示: 如果你对API概念还不太清楚,可以先去oklj.com.cn的技术文档区,看看官方的“REST API接口文档”,那里有每个接口的详细参数说明。
准备工作:Python环境与必要库安装
假设你已经安装了Python 3.7以上版本(建议用3.9或3.10),如果没有,先去python.org下载。
安装必需的库:
pip install requests hashlib hmac base64 json time
实际上hashlib、hmac、json都是Python自带库,你只需要安装requests就行。
额外推荐:
pip install python-dotenv # 用来管理环境变量,保护密钥
创建项目文件夹okx_trading,里面放一个.env如下:
API_KEY=你的apikey
SECRET_KEY=你的secretkey
PASSPHRASE=你的交易密码(创建API时设置的)
然后在同目录下新建config.py:
import os
from dotenv import load_dotenv
load_dotenv()
API_KEY = os.getenv("API_KEY")
SECRET_KEY = os.getenv("SECRET_KEY")
PASSPHRASE = os.getenv("PASSPHRASE")
这样,你的密钥就不会硬编码在脚本里,即使代码上传到GitHub也安全。
手写第一个交易脚本:从获取行情到下单
我们写一个最简单的脚本:获取BTC/USDT的当前价格,然后下一个市价买单(买0.001个BTC)。
第一步:导入库与设置基础参数
import requests import hmac import base64 import json import time from config import API_KEY, SECRET_KEY, PASSPHRASE base_url = "https://www.okx.com" # 注意:欧易官方API域名
第二步:签名生成函数(这是欧易API的核心)
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'),
digestmod='sha256')
d = mac.digest()
return base64.b64encode(d).decode()
第三步:封装get和post请求
def okx_request(method, path, body=""):
timestamp = str(time.time())
sign = generate_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":
response = requests.get(url, headers=headers)
else:
response = requests.post(url, headers=headers, data=body)
return response.json()
第四步:获取当前价格
def get_btc_price():
path = "/api/v5/market/ticker?instId=BTC-USDT"
data = okx_request("GET", path)
price = data["data"][0]["last"]
print(f"当前BTC价格: {price} USDT")
return float(price)
第五步:下市价买单
def place_market_buy(instId, sz):
path = "/api/v5/trade/order"
body = {
"instId": instId,
"tdMode": "cash", # 现货交易
"side": "buy",
"ordType": "market",
"sz": sz # 数量,quot;0.001"
}
result = okx_request("POST", path, json.dumps(body))
print("下单结果:", result)
return result
第六步:运行主函数
if __name__ == "__main__":
# 先查价格
current_price = get_btc_price()
# 确认余额足够(这里省略查询余额步骤)
# 下单买0.001个BTC
order_result = place_market_buy("BTC-USDT", "0.001")
保存为okx_trader.py,在终端运行python okx_trader.py,就能看到价格和下单反馈了。
小问答:为什么我用测试网(demo)下单成功了,但实盘报错“资金不足”? 答:大概率是你的资金账户里的币不够,或者保证金模式没选对,注意现货交易要确保有足够的USDT。
常见报错与避坑指南(含问答)
Q1:提示“signature not match”签名错误怎么办?
- 检查时间戳是否和服务器的时差小于2秒(用
requests.get("https://www.okx.com/api/v5/public/time")校对) - 检查Secret Key是否正确复制,前后有没有多余空格
Q2:API创建时设置了IP白名单,但脚本跑不通?
- 查看你的服务器/本机IP是否在白名单内,可以去oklj.com.cn的个人中心查当前IP,再更新到API白名单
Q3:为什么下单接口返回“ordType not supported”?
- 检查是不是把
ordType写成了orderType,欧易API的参数名很严谨,差一点就报错
Q4:如何测试而不真正花钱?
- 使用欧易的模拟盘(Demo环境),API域名改为
https://www.okx.com,但需要申请模拟盘API Key,注意:模拟盘的资产是虚拟的,随便玩
Q5:脚本跑着跑着突然掉线了?
- 检查网络稳定性,另外欧易API有频率限制(一般每秒10次请求),建议在循环里加
time.sleep(0.1)
安全第一:API权限管理与密钥保护
这点怎么强调都不过分,开头提到的几个安全原则,这里再总结一遍:
- 权限最小化:只给脚本需要的权限,只查询行情就只开“读取”,需要下单再加“交易”
- 从不泄露密钥:secret key别放在代码里、别发到群里、别上传到公开GitHub
- 绑定IP白名单:在欧易API设置页面,填上你脚本运行的服务器IP(比如阿里云ECS的IP)
- 定期轮换密钥:建议每3个月重新申请一次API Key
- 启用提币保护:API权限永远不要勾选“提币”,即使你的脚本很强大也不行,要提币就手动去官网操作
真实案例: 某用户把secret key写在Python脚本里,然后不小心把脚本传到GitHub公开仓库,当天夜里资产就被机器人扫走,请一定用.env文件或环境变量管理密钥。
进阶玩法:怎么让脚本自动跑起来?
写好的脚本总不能每次都手动点运行吧?来,让它24小时自动跑。
Windows任务计划程序
- 写一个bat文件:
python C:\path\to\okx_trader.py - 在“任务计划程序”里创建任务,触发器设为“每天”或“系统启动时”
Linux cron定时任务
crontab -e # 添加一行:每小时运行一次 0 * * * * /usr/bin/python3 /home/user/okx_trader.py >> /home/user/trade_log.txt 2>&1
云服务器(推荐)
- 在阿里云/腾讯云买一台最低配的ECS(几十块/月),安装宝塔面板,上传脚本
- 在宝塔里设置Shell定时任务,让脚本每隔5分钟跑一次策略循环
给新手的建议: 先别急着上实盘,在模拟盘跑通一个简单的网格策略,跑1-2周看看收益率,再慢慢调整参数,毕竟,欧易交易所官网的交易量那么大,策略得当的话收益是可见的,但前提是先学会保护本金。
通过以上步骤,你已经掌握了从申请API到编写Python交易脚本的完整流程,自动化交易是一把双刃剑——代码写得好是印钞机,写得糙就是碎钞机,建议从最简单的“定时定投”或“网格交易”开始,循序渐进,如果在代码实现中遇到任何问题,记得返回oklj.com.cn的文档中心查找最新接口说明,或者去技术社区提问,祝你在量化交易的路上稳步前进!