欧易API接口申请教程,使用Python编写简单的量化交易脚本

admin ok快讯 1

目录导读

  1. 欧易交易所API概述
  2. API接口申请步骤详解
  3. Python环境配置与依赖安装
  4. 编写第一个量化交易脚本
  5. 常见问题与解答(FAQ)

欧易交易所API概述

对于数字货币量化交易者而言,欧易交易所(原OKEx)提供的API接口是连接市场与策略的核心桥梁,通过API,用户可以实现自动化下单、行情数据获取、资产查询等功能,从而构建自己的量化交易机器人。

欧易API接口申请教程,使用Python编写简单的量化交易脚本-第1张图片-欧易交易所

欧易API支持RESTful和WebSocket两种协议,覆盖现货、衍生品、期权等交易品种,本文将以Python为例,从零开始演示如何申请并调用欧易API,编写一个简单的均线策略交易脚本。


API接口申请步骤详解

第一步:注册并登录欧易账户
如果尚未注册,请先完成欧易交易所下载并注册账户,建议完成KYC二级认证,以便获得完整API权限。

第二步:创建API密钥

  1. 登录后,进入“账户” -> “我的API”页面。
  2. 点击“创建API”,输入描述名称(如“量化脚本”)。
  3. 选择权限:至少勾选“读取”和“交易”权限;若需资金划转,可勾选“提币”权限(注意安全)。
  4. 设置IP白名单(可留空,但建议限制访问IP)。
  5. 提交后,系统会生成 API KeySecret KeyPassphrase,请立即保存,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文档(可通过锚文本访问)。

标签: 量化交易

抱歉,评论功能暂时关闭!