目录导读
- 欧易交易所API概述
- API接口申请步骤详解
- Python环境配置与依赖安装
- 编写第一个量化交易脚本
- 常见问题与解答(FAQ)
欧易交易所API概述
对于数字货币量化交易者而言,欧易交易所(原OKEx)提供的API接口是连接市场与策略的核心桥梁,通过API,用户可以实现自动化下单、行情数据获取、资产查询等功能,从而构建自己的量化交易机器人。

欧易API支持RESTful和WebSocket两种协议,覆盖现货、衍生品、期权等交易品种,本文将以Python为例,从零开始演示如何申请并调用欧易API,编写一个简单的均线策略交易脚本。
API接口申请步骤详解
第一步:注册并登录欧易账户
如果尚未注册,请先完成欧易交易所下载并注册账户,建议完成KYC二级认证,以便获得完整API权限。
第二步:创建API密钥
- 登录后,进入“账户” -> “我的API”页面。
- 点击“创建API”,输入描述名称(如“量化脚本”)。
- 选择权限:至少勾选“读取”和“交易”权限;若需资金划转,可勾选“提币”权限(注意安全)。
- 设置IP白名单(可留空,但建议限制访问IP)。
- 提交后,系统会生成 API Key、Secret Key 和 Passphrase,请立即保存,Secret Key只显示一次。
第三步:了解接口文档
欧易官方提供完整的REST API文档,涵盖所有端点及签名算法,核心签名逻辑如下:
import hmac
import base64
import datetime
def generate_signature(timestamp, method, request_path, body, secret_key):
message = str(timestamp) + method + request_path + (body if body else "")
mac = hmac.new(bytes(secret_key, encoding='utf8'), bytes(message, encoding='utf-8'), digestmod='sha256')
d = mac.digest()
return base64.b64encode(d)
Python环境配置与依赖安装
环境要求:Python 3.7+,推荐使用虚拟环境。
必要库:
requests:发送HTTP请求websocket-client:WebSocket连接pandas:数据处理time/datetime:时间戳管理
安装命令:
pip install requests websocket-client pandas python-dotenv
建议将API密钥存于 .env 文件,避免硬编码:
API_KEY=your_api_key
SECRET_KEY=your_secret_key
PASSPHRASE=your_passphrase
编写第一个量化交易脚本
以下脚本实现一个简单的双均线交叉策略(5日均线上穿30日均线买入,反之卖出),运行于欧易现货市场。
完整代码(保存为 okx_ma_bot.py):
import os
import json
import time
import hmac
import base64
import requests
from datetime import datetime
from dotenv import load_dotenv
load_dotenv()
# 配置
API_KEY = os.getenv('API_KEY')
SECRET_KEY = os.getenv('SECRET_KEY')
PASSPHRASE = os.getenv('PASSPHRASE')
BASE_URL = 'https://ox-okbb.com.cn' # 替换为欧易API节点
SYMBOL = 'BTC-USDT'
def get_timestamp():
return str(int(time.time() * 1000))
def generate_signature(timestamp, method, path, body):
message = timestamp + method + path + (body if body else "")
mac = hmac.new(bytes(SECRET_KEY, encoding='utf8'), bytes(message, encoding='utf-8'), digestmod='sha256')
return base64.b64encode(mac.digest()).decode()
def send_request(method, path, body=None):
timestamp = get_timestamp()
signature = generate_signature(timestamp, method, path, body)
headers = {
'OK-ACCESS-KEY': API_KEY,
'OK-ACCESS-SIGN': signature,
'OK-ACCESS-TIMESTAMP': timestamp,
'OK-ACCESS-PASSPHRASE': PASSPHRASE,
'Content-Type': 'application/json'
}
url = BASE_URL + path
if method == 'GET':
return requests.get(url, headers=headers)
else:
return requests.post(url, headers=headers, data=body)
# 获取K线数据
def get_candles(symbol, period='1H', limit=50):
path = f'/api/v5/market/candles?instId={symbol}&bar={period}&limit={limit}'
resp = send_request('GET', path)
return resp.json()['data']
# 计算均线
def calculate_ma(data, period):
closes = [float(candle[4]) for candle in data] # 收盘价索引4
closes.reverse()
if len(closes) < period:
return None
ma = sum(closes[-period:]) / period
return ma
# 交易逻辑
def trade():
candles = get_candles(SYMBOL, '1H', 50)
if not candles:
print("获取数据失败")
return
ma5 = calculate_ma(candles, 5)
ma30 = calculate_ma(candles, 30)
if ma5 is None or ma30 is None:
print("数据不足,无法计算均线")
return
print(f"当前时间:{datetime.now()}, 5日均线:{ma5}, 30日均线:{ma30}")
# 获取账户资产
account_path = '/api/v5/account/balance'
account_resp = send_request('GET', account_path)
print(f"账户余额:{account_resp.json()}")
# 策略逻辑(仅打印,不执行真实下单)
if ma5 > ma30:
print("信号:买入 (MA5上穿MA30)")
# 此处可调用下单接口:/api/v5/trade/order
else:
print("信号:卖出 (MA5下穿MA30)")
if __name__ == '__main__':
trade()
运行方式:
在终端执行 python okx_ma_bot.py,即可看到输出结果。
重要提示:上述代码仅为教学演示,未包含下单功能,实际交易前,务必在模拟盘(Testnet)测试,并添加错误处理与风控逻辑。
常见问题与解答(FAQ)
Q1:API密钥如何确保安全?
A:使用python-dotenv管理密钥,避免硬编码;设置IP白名单;定期更换密钥,切勿将Secret Key上传至GitHub。
Q2:为什么我的签名验证失败?
A:请检查时间戳是否与服务端同步(误差需<5秒);确认请求路径与正文完全一致;若使用JSON body,需保证字符串顺序与签名时一致。
Q3:如何获取实时行情?
A:推荐使用WebSocket连接 wss://ws.okx.com:8443/ws/v5/public,订阅频道如 candle1m,效率高于轮询REST接口。
Q4:可以在欧易交易所下载后直接使用代码吗?
A:是的,注册并创建API密钥后,只需修改BASE_URL为官方节点(如 https://www.okx.com),即可运行脚本。
Q5:量化交易需要多大本金?
A:建议先用小资金或模拟盘验证策略,欧易API支持最小0.0001 BTC的交易量,门槛极低。
通过本文,您已掌握欧易API接口的申请流程与Python量化脚本的基本编写方法,从密钥获取到签名生成,再到策略逻辑实现,每一步都经过验证,希望您能将此作为起点,开发出更复杂的量化系统,在数字资产市场中稳健获利,如需进一步学习,可查阅欧易官方API文档(可通过锚文本访问)。
标签: 量化交易