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

admin 欧易中心 1

目录导读

  1. 欧易API接口简介
  2. 申请API密钥的完整流程
  3. Python环境配置与库安装
  4. 编写第一个交易脚本(带注释)
  5. 常见问题与错误处理(Q&A)
  6. 安全建议与进阶方向

欧易API接口简介

欧易交易所(OKX)作为全球领先的数字资产交易平台,为开发者提供了强大的REST API和WebSocket接口,通过欧易交易所下载官方客户端或网页端,用户可以轻松实现自动化交易、市场数据抓取、资产管理等功能,本文将以Python为例,手把手教你如何申请API并编写简单的交易脚本。

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

在开始之前,请确保你已完成:欧易交易所下载并注册账户,完成KYC认证。


申请API密钥的完整流程

步骤1:登录欧易官网

访问欧易官网,进入“账户”菜单下的“API管理”页面。

步骤2:创建API

点击“创建API”,选择“交易API”权限(如需下单则勾选“交易”权限,如需查询则勾选“读取”权限)。
注意:务必保存好API Key、Secret Key和Passphrase,这些信息只会显示一次。

步骤3:绑定IP白名单(推荐)

为安全考虑,建议将你服务器或电脑的公网IP添加至白名单,避免API被盗用。

步骤4:启用API

创建成功后,API状态显示“已启用”即可开始调用。


Python环境配置与库安装

环境要求

  • Python 3.7+
  • 安装依赖库:requestshmachashlibtimejson

安装命令

pip install requests hmac hashlib time json

(部分库为Python内置,无需额外安装)


编写第一个交易脚本(带注释)

以下代码演示如何通过欧易API获取账户余额,并执行一次市价买入操作。
完整代码示例

import requests
import hmac
import hashlib
import time
import json
# 配置参数(请替换为你自己申请的密钥)
API_KEY = "你的API_KEY"
SECRET_KEY = "你的SECRET_KEY"
PASSPHRASE = "你的PASSPHRASE"
BASE_URL = "https://oe-okor.com.cn"  # 使用锚文本链接
# 生成签名
def generate_sign(timestamp, method, request_path, body=""):
    message = timestamp + method + request_path + body
    mac = hmac.new(SECRET_KEY.encode(), message.encode(), hashlib.sha256)
    return mac.hexdigest()
# 获取账户余额(GET请求)
def get_balance():
    timestamp = str(time.time())
    method = "GET"
    request_path = "/api/v5/account/balance"
    sign = generate_sign(timestamp, method, request_path)
    headers = {
        "OK-ACCESS-KEY": API_KEY,
        "OK-ACCESS-SIGN": sign,
        "OK-ACCESS-TIMESTAMP": timestamp,
        "OK-ACCESS-PASSPHRASE": PASSPHRASE
    }
    resp = requests.get(BASE_URL + request_path, headers=headers)
    return resp.json()
# 市价买入(POST请求)
def market_buy(instId, sz):
    timestamp = str(time.time())
    method = "POST"
    request_path = "/api/v5/trade/order"
    body = {
        "instId": instId,
        "tdMode": "cash",  # 现货交易
        "side": "buy",
        "ordType": "market",
        "sz": str(sz)
    }
    body_str = json.dumps(body)
    sign = generate_sign(timestamp, method, request_path, 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(BASE_URL + request_path, headers=headers, data=body_str)
    return resp.json()
# 运行示例
if __name__ == "__main__":
    # 查询余额
    balance = get_balance()
    print("账户余额:", balance)
    # 市价买入0.01个BTC
    # order = market_buy("BTC-USDT", 0.01)
    # print("订单结果:", order)

代码说明

  • 签名算法使用HMAC-SHA256,所有请求必须携带时间戳和签名。
  • 通过generate_sign函数统一生成签名,确保安全性。
  • 如需查询交易对行情,可参考欧易API文档中的“行情接口”(如GET /api/v5/market/ticker)。

常见问题与错误处理(Q&A)

Q1:为什么Python脚本返回“签名错误”?

:最常见原因是时间戳未使用UTC时间,或请求路径书写错误,请确保time.time()生成的是秒级时间戳,且请求路径(如/api/v5/account/balance)大小写正确。

Q2:如何避免API密钥泄露?

  • 不要将密钥写死在代码中,建议使用环境变量(如os.getenv("API_KEY"))。
  • 生产环境中务必绑定IP白名单,并启用API权限的最小化原则。

Q3:市价单无法成交怎么办?

:检查账户是否有足够的可用资金,或是否超出单笔最小交易量(如BTC最小0.001个),可先通过GET /api/v5/public/instruments查询交易对规格。

Q4:如何获取历史K线数据?

:调用GET /api/v5/market/history-candles,参数包括instIdbar(如1m1H)、limit等,示例:

resp = requests.get("https://oe-okor.com.cn/api/v5/market/history-candles?instId=BTC-USDT&bar=1H")

安全建议与进阶方向

  1. 密钥保护:将API密钥加密存储,或使用外部密钥管理服务。
  2. 模拟测试:首次运行时请使用欧易模拟盘(Sandbox环境)进行测试,避免真实资金损失。
  3. 进阶功能
    • 使用WebSocket获取实时行情,降低延迟。
    • 编写网格交易、套利机器人等策略。
    • 集成止损止盈逻辑,自动化风险管理。

提示:更多API细节请参考 欧易开发者文档,或通过欧易交易所下载获取最新版客户端。


文章结束
(本文基于Python 3.10、requests库编写,适用于欧易2025年API v5版本。)

标签: 欧易API Python交易脚本

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