欧易交易所官网 API接口申请教程,如何使用Python编写简单的交易脚本?

admin ok快讯 1

目录导读


欧易API接口概述与申请流程

欧易交易所官网作为全球领先的数字资产交易平台,提供了完善的API接口,允许开发者通过编程方式获取市场数据、执行交易和管理账户,对于量化交易爱好者而言,掌握API申请与使用是自动交易的第一步。

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

API类型与权限

欧易API主要分为三类:

  • REST API:用于查询行情、账户信息及提交订单
  • WebSocket API:实现实时行情推送和订单状态更新
  • 模拟盘API:供开发者测试策略,无实际资金风险

要申请API,首先需登录欧易交易所官网(注意:请认准官方域名,避免进入钓鱼网站),具体步骤如下:

  1. 注册并完成KYC认证
  2. 进入“账户安全” → “API管理”
  3. 点击“创建API”,选择权限(读取、交易、提币)
  4. 保存API Key和Secret Key(务必妥善保管,仅显示一次)

提醒:为避免资产风险,建议仅开启“读取”和“交易”权限,切勿开启“提币”权限,若需下载客户端,请通过欧易交易所下载获取官方版本。


Python环境搭建与必要库安装

编写交易脚本前,请确保已安装Python 3.7及以上版本,推荐使用虚拟环境管理依赖。

安装核心依赖库

pip install requests pandas ccxt
  • requests:发送HTTP请求
  • pandas:数据处理与格式化
  • ccxt:统一加密货币交易所API库(当然也可以直接调用欧易原生API)

若需实时数据,还需安装websocket-client

pip install websocket-client

验证环境

import requests
print("环境准备完成!")

若未报错,说明基础环境已就绪。


API密钥配置与安全注意事项

密钥泄露可能导致资产损失,因此务必遵循以下安全准则:

配置方式

推荐使用环境变量或配置文件存储密钥,避免硬编码在脚本中。

环境变量(Linux/macOS/Windows)

export OKX_API_KEY="your-api-key"
export OKX_SECRET_KEY="your-secret-key"
export OKX_PASSPHRASE="your-passphrase"

配置文件config.py

API_KEY = "your-api-key"
SECRET_KEY = "your-secret-key"
PASSPHRASE = "your-passphrase"

安全建议

  • 绝不将密钥上传至GitHub等公开仓库
  • 使用IP白名单限制API调用来源
  • 定期更换密钥
  • 启用谷歌二次验证

注意:欧易API域名需准确填写,当前公开信息显示官方API地址为https://www.okx.com,但请以欧易交易所官网公布的最新文档为准。


编写第一个Python交易脚本:获取账户余额

下面演示如何使用Python通过欧易REST API获取账户余额,我们使用requests库直接调用欧易API。

完整脚本

import requests
import json
import time
import hmac
import base64
import hashlib
from datetime import datetime
# 配置信息(请替换为你自己的密钥)
API_KEY = "你的API_KEY"
SECRET_KEY = "你的SECRET_KEY"  
PASSPHRASE = "你的PASSPHRASE"
BASE_URL = "https://www.okx.com"
def get_timestamp():
    return datetime.utcnow().isoformat()[:19] + "Z"
def sign(message, secret_key):
    mac = hmac.new(bytes(secret_key, encoding='utf8'), bytes(message, encoding='utf-8'), digestmod=hashlib.sha256)
    d = mac.digest()
    return base64.b64encode(d).decode()
def get_account_balance():
    endpoint = "/api/v5/account/balance"
    timestamp = get_timestamp()
    method = "GET"
    body = ""
    # 生成签名
    message = timestamp + method + endpoint + body
    signature = sign(message, SECRET_KEY)
    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 + endpoint
    response = requests.get(url, headers=headers)
    return response.json()
# 执行查询
if __name__ == "__main__":
    balance = get_account_balance()
    print(json.dumps(balance, indent=2))

运行结果示例

{
  "code": "0",
  "data": [{
    "totalEq": "1000.0",
    "details": [{
      "ccy": "BTC",
      "availBal": "0.1",
      "eq": "0.1"
    }]
  }]
}

进阶:实现市价单与限价单交易

获取余额后,我们可以进一步实现下单功能,以下示例演示如何提交市价买单。

下单函数

def place_market_order(instId, side, sz, tgtCcy="base_ccy"):
    """
    instId: 交易对,如 "BTC-USDT"
    side:   "buy" 或 "sell"
    sz:     数量
    tgtCcy: 计价单位,"base_ccy" 或 "quote_ccy"
    """
    endpoint = "/api/v5/trade/order"
    timestamp = get_timestamp()
    method = "POST"
    body = {
        "instId": instId,
        "tdMode": "cash",   # 现货交易
        "side": side,
        "ordType": "market",
        "sz": str(sz),
        "tgtCcy": tgtCcy
    }
    body_json = json.dumps(body)
    message = timestamp + method + endpoint + body_json
    signature = sign(message, SECRET_KEY)
    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 + endpoint
    response = requests.post(url, headers=headers, data=body_json)
    return response.json()
# 示例:买入0.001 BTC
result = place_market_order("BTC-USDT", "buy", 0.001)
print(result)

限价单示例

只需将ordType改为"limit",并增加px(价格)字段即可。


常见问题与问答

Q1:如何获取欧易交易所下载的官方链接?
A:建议直接访问欧易交易所官网下载最新版本,务必核对域名真实性,避免下载恶意软件。

Q2:API请求返回“signature not match”错误如何解决?
A:检查时间戳是否与服务器时间同步(误差不超过5秒);确认Secret Key和Passphrase是否正确;检查签名字符串格式是否严格遵循“时间戳+方法+路径+请求体”规则。

Q3:交易脚本如何实现止损功能?
A:可通过WebSocket订阅订单状态,当价格触发预设值时,调用/api/v5/trade/order-algo接口创建止损止盈订单,建议先在模拟盘测试。

Q4:Python脚本运行时报错“ValueError: Invalid endpoint”怎么办?
A:确认API_BASE_URL末尾无多余斜杠,且使用HTTPS协议,若仍报错,请查看欧易官方最新API文档,你也可以直接在欧易交易所官网的帮助中心查找相关错误代码解析。

Q5:多个API Key能否同时使用?
A:可以,但注意每个Key都有速率限制(通常每秒10次),建议对高频交易脚本使用单独的API Key,并启用IP白名单。


通过以上教程,你已经掌握了从欧易API申请到Python交易脚本编写的完整流程,实际交易前,务必在模拟盘充分测试策略,数字资产交易存在风险,请合理控制仓位,若想深入了解量化交易,建议订阅欧易官方开发者文档更新,打开欧易交易所官网开始你的自动化交易之旅吧!

标签: API接口 Python交易

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