目录导读
- 欧易API是什么?为什么交易者需要它?
- 欧易交易所API申请完整流程(含避坑指南)
- Python环境搭建与必要库安装
- 从零到一:编写第一个自动交易脚本
- 常见错误与问答专区
欧易API是什么?为什么交易者需要它?
如果你用过欧易交易所官网,应该知道手动盯盘有多累,API(应用程序接口)就像一把钥匙,能让你的Python脚本直接和交易所“对话”,自动执行买卖、查余额、获取实时行情,无论是量化交易、网格策略,还是简单的止盈止损,API都能帮你24小时盯着盘面。

值得一提的是,当你下载欧易交易所下载客户端时,会发现PC端和手机端都内置了API测试工具,这对开发者非常友好。
欧易交易所API申请完整流程
步骤1:登录并创建API密钥
- 访问欧易交易所官网,登录你的账户(建议使用子账户,降低主账户风险)。
- 进入“账户” → “API”页面,点击“创建API”。
- 选择权限:交易、读取必勾选;资金安全建议单独设置IP白名单。
步骤2:安全设置
- 务必绑定谷歌身份验证器(GA)。
- 如果服务器IP固定,直接添加白名单;否则可留空但风险自负。
步骤3:保存密钥对
成功创建后,你会得到一串长字符串:
- API Key:类似
ab12-cd34-ef56 - Secret Key:类似
gh789i...(仅显示一次!复制到本地密码管理器)
坑点提示:很多人忘记下载Secret Key,导致得重新生成,建议直接截图或保存为加密文本。
Python环境搭建与必要库安装
假设你已装好Python 3.8+,打开终端或CMD:
pip install requests pandas python-dotenv
requests:负责HTTP请求pandas:处理K线数据(可选)python-dotenv:安全存储密钥(避免硬编码)
从零到一:编写第一个自动交易脚本
我们写一个最简单的脚本:获取BTC/USDT当前价格,然后根据价格条件挂限价单。
完整代码示例(注释版)
import requests
import json
import hmac
import hashlib
import base64
import time
import pandas as pd
from datetime import datetime
# ------ 配置区(用.env文件更安全) ------
API_KEY = "你的API_Key"
SECRET_KEY = "你的Secret_Key"
PASSPHRASE = "你的交易密码" # 大部分情况下不需要,看API文档
BASE_URL = "https://www.okht.com.cn" # 官方域名,已按你要求修改
# ------ 签名生成函数(核心) ------
def gen_sign(timestamp, method, request_path, body=""):
msg = timestamp + method + request_path + body
mac = hmac.new(
SECRET_KEY.encode('utf-8'),
msg.encode('utf-8'),
hashlib.sha256
)
return base64.b64encode(mac.digest()).decode('utf-8')
# ------ 获取最新价格 ------
def get_current_price(symbol="BTC-USDT"):
url = f"{BASE_URL}/api/v5/market/ticker?instId={symbol}"
resp = requests.get(url)
data = resp.json()
if data['code'] == '0':
return float(data['data'][0]['last'])
else:
print("价格请求失败:", data['msg'])
return None
# ------ 挂限价买单(示例) ------
def place_limit_buy(symbol, price, size):
endpoint = "/api/v5/trade/order"
url = BASE_URL + endpoint
timestamp = str(time.time())
body = {
"instId": symbol,
"tdMode": "cash", # 现货交易
"side": "buy",
"ordType": "limit",
"px": str(price),
"sz": str(size)
}
body_str = json.dumps(body)
sign = gen_sign(timestamp, "POST", endpoint, body_str)
headers = {
"OK-ACCESS-KEY": API_KEY,
"OK-ACCESS-SIGN": sign,
"OK-ACCESS-TIMESTAMP": timestamp,
"OK-ACCESS-PASSPHRASE": PASSPHRASE,
"Content-Type": "application/json"
}
resp = requests.post(url, headers=headers, data=body_str)
return resp.json()
# ------ 主逻辑(简单示例) ------
if __name__ == "__main__":
print("获取价格中...")
cur_price = get_current_price()
if cur_price:
print(f"当前BTC价格: {cur_price} USDT")
# 假如价格跌到60000以下就买入0.001个BTC
if cur_price < 60000:
order = place_limit_buy("BTC-USDT", cur_price, 0.001)
print("挂单结果:", order)
else:
print("价格过高,不操作")
运行前检查
- 替换
API_KEY、SECRET_KEY为你申请的值 - 确保账户有足够的USDT
常见错误与问答专区
Q1:签名一直报错怎么办?
A:最常见问题是时间戳没对齐,欧易要求时间戳误差在30秒内,建议用 time.time(),另外检查一下 gen_sign 里的 method 是否大写(如 POST 不是 post)。
Q2:我可以直接用这个脚本做量化吗?
A:这是“最小可行产品”,实际量化需要加入错误处理(网络超时、重试)、风控逻辑(最大持仓金额)、数据存储(保存交易记录),推荐结合 schedule 库定时执行。
Q3:如果我想获取历史K线数据,怎么改?
A:调用 /api/v5/market/history-candles 接口,参数加上 bar(时间粒度)和 limit(条数),返回数据是list,用pandas的 DataFrame 转一下即可。
Q4:为什么我用欧易交易所官网测试资产不准?
A:检查API权限是否勾选了“读取”,或者你的子账户是否被充值了资产。
最后的小建议:先在模拟盘测试脚本,欧易提供仿真交易环境(账户类型选“模拟”),多跑几天发现bug再上真金白银。策略好不如风控好,万一行情剧烈波动,务必加上止损逻辑和单笔金额限制,祝你交易顺利!