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

admin 欧易中心 2

目录导读

  • 欧易API接口概述与申请流程
  • 前置环境准备:Python与依赖库安装
  • 编写第一个交易脚本:获取账户余额
  • 实现限价单委托与订单管理
  • 常见问题与错误处理
  • FAQ问答区

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

在数字货币量化交易领域,欧易交易所(欧易交易所下载)凭借其稳定的API接口和完善的文档体系,成为众多开发者首选,要使用Python编写交易脚本,首先需要完成API密钥的申请。

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

申请步骤:

  1. 登录欧易官网,进入“账户中心” → “API管理”
  2. 点击“创建API”,选择“交易API”权限类型
  3. 设置IP白名单(建议填写本机公网IP或留空)
  4. 完成二次验证后,系统将生成 API KeySecret Key,请务必妥善保存

注意:Secret Key仅在创建时显示一次,建议直接下载备份,由于欧易API采用HMAC SHA256签名机制,密钥泄露可能导致资产风险,因此切勿在公开仓库上传密钥文件。


前置环境准备:Python与依赖库安装

使用Python 3.7及以上版本,建议通过虚拟环境管理依赖:

# 创建项目目录
mkdir okx_trading && cd okx_trading
# 安装核心库
pip install requests hashlib hmac base64 json time

欧易API的REST接口地址分为三类:

  • REST APIhttps://www.okx.com
  • WebSocketwss://ws.okx.com:8443/ws/v5/public
  • 模拟盘https://www.okx.com(测试环境建议使用模拟盘)

由于欧易交易所下载对API频率有限制(如REST接口每秒最多20次请求),脚本中需加入time.sleep()控制节奏。


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

以下示例演示如何通过签名认证获取现货账户余额:

import requests
import hmac
import hashlib
import base64
import json
import time
API_KEY = "你的API_Key"
SECRET_KEY = "你的Secret_Key"
PASSPHRASE = "你的Passphrase"  # 创建API时设置
def get_sign(timestamp, method, request_path, body=""):
    message = timestamp + method + request_path + body
    mac = hmac.new(bytes(SECRET_KEY, encoding='utf-8'), 
                   bytes(message, encoding='utf-8'), 
                   digestmod=hashlib.sha256)
    return base64.b64encode(mac.digest()).decode('utf-8')
def get_balance():
    base_url = "https://www.okx.com"
    request_path = "/api/v5/account/balance"
    timestamp = str(time.time())
    signature = get_sign(timestamp, "GET", request_path)
    headers = {
        "OK-ACCESS-KEY": API_KEY,
        "OK-ACCESS-SIGN": signature,
        "OK-ACCESS-TIMESTAMP": timestamp,
        "OK-ACCESS-PASSPHRASE": PASSPHRASE,
        "Content-Type": "application/json"
    }
    response = requests.get(base_url + request_path, headers=headers)
    return response.json()
# 执行查询
balance_data = get_balance()
print(json.dumps(balance_data, indent=2))

运行成功后,将返回包含所有币种余额的JSON数据,若需排查错误,请检查签名算法中methodrequest_path是否与官方文档一致。


实现限价单委托与订单管理

接下来编写挂单函数,以BTC/USDT交易对为例:

def place_order(side, sz, px):
    base_url = "https://www.okx.com"
    request_path = "/api/v5/trade/order"
    timestamp = str(time.time())
    body = {
        "instId": "BTC-USDT",
        "tdMode": "cash",
        "side": side,        # "buy"或"sell"
        "ordType": "limit",
        "sz": str(sz),       # 数量
        "px": str(px)        # 价格
    }
    body_str = json.dumps(body)
    signature = get_sign(timestamp, "POST", request_path, body_str)
    headers = {
        "OK-ACCESS-KEY": API_KEY,
        "OK-ACCESS-SIGN": signature,
        "OK-ACCESS-TIMESTAMP": timestamp,
        "OK-ACCESS-PASSPHRASE": PASSPHRASE,
        "Content-Type": "application/json"
    }
    response = requests.post(base_url + request_path, headers=headers, data=body_str)
    return response.json()
# 示例:以30000 USDT限价买入0.001 BTC
order_result = place_order("buy", 0.001, 30000)
print(order_result)

关键参数说明

  • tdMode:交易模式,现货用cash,保证金用isolatedcross
  • sz要注意精度,需查询交易对的lotSz
  • 市价单则将ordType改为market

欧易交易所下载的API文档还提供批量撤单、查看持仓等功能,开发者可根据需求扩展。


常见问题与错误处理

  1. 签名错误(Error Code 50100)

    • 检查时间戳是否与服务器同步(时区需使用UTC+0)
    • 确认request_path不包含后的查询参数
  2. 权限不足(Error Code 50101)

    在API管理页确认“交易”和“读取”权限均已勾选

  3. 请求频率超限

    • 在循环调用时加入time.sleep(0.1),且避免同时发起多线程高频请求
  4. WebSocket连接断开

    • 建议使用okx_websocket客户端库,自动处理心跳包重连

FAQ问答区

问:Python脚本中如何安全存储API密钥?
答:建议使用环境变量或加密配置文件,例如在Python中读取os.getenv("OKX_API_KEY"),避免硬编码在代码中。

问:欧易API的测试环境如何接入?
答:模拟盘API地址与主网相同,但需在欧易交易所下载的API管理页面勾选“模拟盘”选项,并使用独立密钥。

问:限价单下单后如何查看订单状态?
答:调用GET /api/v5/trade/order接口,传入ordIdinstId即可查询,返回参数中state字段标识状态(如filledcanceled)。

问:支持Python 2.7吗?
答:欧易API基于HTTPS/WebSocket,理论上兼容,但官方仅测试Python 3.7+,推荐使用新版。


通过以上教程,你已经掌握了使用Python调用欧易API的核心流程,实际交易中建议先使用极小额资金测试,熟悉各接口参数后再部署自动化策略,如需更复杂的量化模型,可进一步学习WebSocket行情推送与多线程框架。

标签: 欧易API Python交易

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