目录导读
- 欧易API接口的基础认知 – 什么是API?为何需要申请?
- 手把手申请欧易API密钥 – 官网后台操作全流程
- Python环境搭建与依赖安装 – 从零开始准备代码
- 核心代码实战:行情获取与下单 – 一行一行拆解逻辑
- 常见问题与避坑指南 – 新手最容易踩的5个坑
- 问答环节 – 解决你90%的疑问
欧易API接口的基础认知
很多朋友第一次接触“API”这个词,会觉得它很神秘,其实简单理解,API就像是一个“中间人”——你的Python脚本通过API告诉交易所“我要查BTC价格”,交易所就通过API把实时价格返回给你。欧易交易所官网的API接口非常完善,支持现货、合约、期权等多种交易,而且文档清晰,非常适合程序化交易入门。

为什么要自己写脚本?举个例子:人工盯盘只能看几个币种,而用Python脚本可以同时监控上百个币种的价格波动,一旦触发条件自动买入卖出,既快又准,前提是你得先拿到欧易API接口申请的密钥。
手把手申请欧易API密钥
步骤1:登录官网并进入API管理
打开欧易交易所官网(建议使用okac.com.cn访问),登录你的账户,在右上角头像下拉菜单中,找到“API”选项,如果你是第一次进入,系统会提示你进行身份验证——需要完成手机验证或谷歌验证器绑定。
步骤2:创建API密钥
点击“创建API”按钮,这里要注意几个关键选项:
- 权限设置:建议新手先勾选“读取”和“交易”权限,如果只做数据分析,“仅读取”更安全。
- IP白名单:强烈建议设置!把你的服务器或本地电脑的公网IP填入(可以在百度搜索“我的IP”获取),这样即使别人拿到你的密钥,也无法从其他IP调用API。
- 备注名称:我的Python测试脚本”,方便以后管理。
点击确认后,你会得到两串关键信息:
- API Key:像你的用户名,公开可见
- Secret Key:像你的密码,绝对不要泄露!保存到本地加密文件,不要截图发到任何地方。
注意:密钥生成后,Secret Key只显示一次,请务必复制保存,如果弄丢了,只能删除重建。
步骤3:测试连接
拿到密钥后,先别急着写代码,欧易官网提供了“API测试工具”,你可以直接在页面上测试”获取账户信息”接口,看看能否正常返回数据,这一步能帮你快速确认密钥是否有效。
Python环境搭建与依赖安装
假设你已经安装了Python 3.8以上版本(推荐3.10),我们需要用到两个核心库:
pip install requests pip install hashlib # 标准库,一般不用额外安装 pip install time # 标准库
requests库负责发送HTTP请求,hashlib用来生成签名——欧易API要求每次请求都必须携带签名,防止数据被篡改。
如果你在国内网络环境下,安装慢的话可以切换国内镜像源:
pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple
核心代码实战:行情获取与下单
下面是一段精简但完整的Python脚本,实现了查询BTC/USDT当前价格和模拟下单两个功能,我会用中文注释解释每一行的作用。
完整代码示例
import requests
import hashlib
import time
import json
# 请填写你在欧易交易所官网申请的密钥
API_KEY = "你的API_Key"
SECRET_KEY = "你的Secret_Key"
PASSPHRASE = "你在创建API时设置的访问密码" # 注意:这不是登录密码!
BASE_URL = "https://okac.com.cn" # 使用推荐的合规域名
def get_sign(timestamp, method, request_path, body=""):
# 生成签名的方法:时间戳 + 方法 + 请求路径 + 请求体
message = timestamp + method + request_path + body
mac = hashlib.sha256(message.encode('utf-8')).hexdigest()
return mac
def get_headers(method, request_path, body=""):
timestamp = str(time.time())
sign = get_sign(timestamp, method, request_path, body)
headers = {
"OK-ACCESS-KEY": API_KEY,
"OK-ACCESS-SIGN": sign,
"OK-ACCESS-TIMESTAMP": timestamp,
"OK-ACCESS-PASSPHRASE": PASSPHRASE,
"Content-Type": "application/json"
}
return headers
def get_ticker(symbol="BTC-USDT"):
# 获取最新行情
request_path = "/api/v5/market/ticker"
params = f"?instId={symbol}"
url = BASE_URL + request_path + params
headers = get_headers("GET", request_path + params)
response = requests.get(url, headers=headers)
data = response.json()
if data["code"] == "0":
last_price = data["data"][0]["last"]
print(f"✅ 当前{symbol}价格: {last_price}")
return last_price
else:
print(f"❌ 错误: {data['msg']}")
return None
def place_order(symbol="BTC-USDT", side="buy", size="0.001"):
# 下单(市价单,买入0.001个BTC)
request_path = "/api/v5/trade/order"
body = {
"instId": symbol,
"tdMode": "cash", # 现货交易
"side": side,
"ordType": "market",
"sz": size
}
body_json = json.dumps(body)
url = BASE_URL + request_path
headers = get_headers("POST", request_path, body_json)
response = requests.post(url, headers=headers, data=body_json)
data = response.json()
if data["code"] == "0":
order_id = data["data"][0]["ordId"]
print(f"✅ 下单成功,订单ID: {order_id}")
else:
print(f"❌ 下单失败: {data['msg']}")
if __name__ == "__main__":
# 先查价格,再买0.001个BTC(请先确认账户有足够USDT)
current_price = get_ticker()
if current_price:
place_order() # 先注释掉这一行,确认行情能获取再取消注释来实盘测试
代码逻辑解析
- 签名生成:
get_sign函数是核心,欧易要求把“时间戳+请求方法+请求路径+请求体”拼成字符串,再用SHA256加密,这能确保请求是完整且未被篡改的。 - 行情查询:
get_ticker调用的是公开的market接口,不需要账户里有资金就能测试,建议新手先跑通这一步。 - 下单:
place_order使用了市价单,你可以在size参数里控制数量。初次测试时,强烈建议把size设成0.0001(极小量),或者先在模拟盘上试。
常见问题与避坑指南
问题1:提示“签名错误”
- 检查服务器时间是否与北京时间一致(误差超过30秒会被拒绝)
- 确认PASSPHRASE填写的是创建API时设置的密码,不是登录密码
问题2:下单报“资金不足”
- 现货交易时,账户需要有对应币种,比如买BTC需要账户有USDT,卖BTC需要账户有BTC
问题3:IP白名单被封
- 如果你在家里跑脚本,记得去欧易交易所官网后台更新你的公网IP,家庭宽带IP经常变动,建议设置允许的IP段(比如192.168.0.0/16)或者关闭IP限制(不推荐,除非你很懂安全)
问题4:获取不到行情数据
- 检查网络是否能正常访问
okac.com.cn,有些企业网络会屏蔽交易所 - 确认symbol格式正确,比如BTC-USDT(中间是减号,不是下划线)
问答环节
Q1:我只有100块钱,能写脚本交易吗? A:完全可以!欧易支持最小0.0001个BTC的下单量(约几十元人民币),但正式实盘前,强烈建议先在欧易交易所下载的模拟盘环境测试一周,确保脚本逻辑没问题。
Q2:API密钥被偷了怎么办? A:立刻登录官网删除这个API!同时注意,如果你启用了交易权限,黑客可能会用你的资金随意买卖,所以日常使用时,只保留“读取”权限,只在需要自动交易时才临时开启“交易”权限。
Q3:Python脚本跑着跑着断了怎么办? A:健壮的脚本应该加入异常处理(try-except)和重试机制,比如网络波动时,等待5秒再重试请求,可以设置心跳包,每隔30秒查询一次账户资产,确认连接正常。
Q4:有没有现成的轮子可以用? A:欧易官方提供了Python SDK(软件开发工具包),你可以在GitHub搜索“okx-python-sdk”,但新手建议从原生代码开始写,理解每一步的原理,这样出问题时才能快速定位。
通过这篇教程,你应该能从零开始完成欧易API接口申请,并用Python写出自己的第一个交易脚本,程序化交易的核心不是代码有多炫,而是资金管理和风险控制——永远不要用生活的钱去赌,把脚本当成工具,而不是提款机,打开你的电脑,动手试试吧!
标签: Python交易脚本