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

admin ok快讯 1

目录导读

  1. 欧易API接口概述
  2. API接口申请前置条件
  3. 获取API Key与Secret Key的详细步骤
  4. Python环境搭建与依赖库安装
  5. 使用Python调用欧易API实现行情查询
  6. 编写简单交易脚本:自动下单与撤单
  7. 交易脚本安全注意事项
  8. 常见问题与问答(FAQ)

欧易API接口概述

欧易交易所下载作为全球领先的加密资产交易平台,提供了完善的API接口,允许开发者通过程序化方式进行市场数据获取、交易执行、账户管理等功能,其API遵循RESTful架构,支持HTTP/HTTPS协议,返回JSON格式数据,适合使用Python、JavaScript等语言快速开发交易机器人。

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

通过欧易官方API,你可以实现:

  • 实时行情数据(K线、深度、最新价)
  • 订单管理(限价单、市价单、止损单)
  • 账户资产查询
  • 交易对信息获取

在开始编写脚本前,你需要先完成API的申请与配置。


API接口申请前置条件

在申请API之前,请确保你已完成以下步骤:

  1. 注册并完成实名认证:访问欧易交易所官网注册账号,并完成KYC(身份认证)二级或以上等级。
  2. 开启二次验证(2FA):为了账户安全,欧易要求所有API申请必须绑定谷歌验证器或手机验证码。
  3. 了解API权限分类:欧易API分为“读取”“交易”“提币”等权限,建议按需申请,不要开放不必要的权限。

获取API Key与Secret Key的详细步骤

登录欧易官网

打开欧易交易所下载页面,登录你的账户。

进入API管理页面

在账户菜单中选择“API”或“API管理”选项,如果你使用的是新版UI,可以在“账户设置”中找到“API”入口。

创建新API

点击“创建API”按钮,系统会提示输入名称(如“Python交易机器人”),并选择权限:

  • 读取权限:用于获取行情、账户余额。
  • 交易权限:用于下单、撤单。
  • 提币权限:建议不勾选,除非必要。

绑定二次验证

输入谷歌验证码或短信验证码完成身份确认。

保存API Key与Secret Key

生成后,你会得到一对密钥:

  • api_key7e3a1c9b-...
  • secret_keyF2D4A0C8...

重要提示:Secret Key只显示一次,请立即复制并保存在安全位置,如果泄露,请立即在后台删除并重新生成。


Python环境搭建与依赖库安装

环境要求

  • Python 3.8 及以上版本
  • 操作系统:Windows/macOS/Linux 均可

安装依赖库

在终端执行以下命令:

pip install requests hashlib hmac base64 json time

其中requests用于发送HTTP请求,hashlibhmac用于签名生成,json处理数据格式。

基础代码结构

创建一个okx_api.py文件,导入必要模块:

import requests
import json
import hmac
import hashlib
import base64
import time

使用Python调用欧易API实现行情查询

1 构建签名函数

欧易API要求每个请求携带签名,以确保数据完整性,以下是签名生成函数:

def generate_signature(secret_key, method, request_path, body, timestamp):
    # 构建待签名字符串
    sign_str = timestamp + method.upper() + request_path + (body if body else '')
    # HMAC-SHA256签名
    mac = hmac.new(secret_key.encode('utf-8'), sign_str.encode('utf-8'), hashlib.sha256)
    return base64.b64encode(mac.digest()).decode('utf-8')

2 获取最新行情数据

以下代码查询BTC/USDT的最新交易价格:

def get_ticker(symbol="BTC-USDT"):
    url = "https://www.okx.com/api/v5/market/ticker"
    params = {"instId": symbol}
    response = requests.get(url, params=params)
    if response.status_code == 200:
        data = response.json()
        price = data['data'][0]['last']
        print(f"当前{ symbol }价格: {price} USDT")
        return price
    else:
        print("请求失败:", response.text)
        return None
get_ticker("ETH-USDT")

示例输出

当前ETH-USDT价格: 2745.32 USDT

编写简单交易脚本:自动下单与撤单

1 下单函数(限价单)

需要传入API Key和Secret Key进行身份验证:

def place_order(api_key, secret_key, symbol, side, size, price, order_type="limit"):
    timestamp = str(int(time.time() * 1000))
    body = json.dumps({
        "instId": symbol,
        "tdMode": "cash",   # 保证金模式
        "side": side,       # buy or sell
        "ordType": order_type,
        "sz": size,
        "px": price
    })
    request_path = "/api/v5/trade/order"
    signature = generate_signature(secret_key, "POST", request_path, body, timestamp)
    headers = {
        "OK-ACCESS-KEY": api_key,
        "OK-ACCESS-SIGN": signature,
        "OK-ACCESS-TIMESTAMP": timestamp,
        "OK-ACCESS-PASSPHRASE": "your_passphrase",  # 申请API时设置的口令
        "Content-Type": "application/json"
    }
    url = "https://www.okx.com" + request_path
    response = requests.post(url, headers=headers, data=body)
    return response.json()

2 撤单函数

def cancel_order(api_key, secret_key, order_id):
    timestamp = str(int(time.time() * 1000))
    body = json.dumps({"ordId": order_id})
    request_path = "/api/v5/trade/cancel-order"
    signature = generate_signature(secret_key, "POST", request_path, body, timestamp)
    headers = {
        "OK-ACCESS-KEY": api_key,
        "OK-ACCESS-SIGN": signature,
        "OK-ACCESS-TIMESTAMP": timestamp,
        "OK-ACCESS-PASSPHRASE": "your_passphrase",
        "Content-Type": "application/json"
    }
    url = "https://www.okx.com" + request_path
    response = requests.post(url, headers=headers, data=body)
    return response.json()

3 完整交易脚本示例

以下脚本实现:当BTC价格低于26000时,自动买入0.01个BTC。

def trade_bot(api_key, secret_key, threshold=26000):
    price = get_ticker("BTC-USDT")
    if price and float(price) < threshold:
        print("触发买入条件,执行下单...")
        result = place_order(api_key, secret_key, "BTC-USDT", "buy", "0.01", str(threshold))
        print("下单结果:", result)
    else:
        print("价格未达到阈值,等待中...")
# 使用示例(请替换为真实密钥)
if __name__ == "__main__":
    my_api_key = "your_api_key_here"
    my_secret_key = "your_secret_key_here"
    trade_bot(my_api_key, my_secret_key)

交易脚本安全注意事项

  1. 密钥保护:永远不要将API Key或Secret Key硬编码在公共仓库中,建议使用环境变量或配置文件。
  2. IP白名单:在欧易API设置中,限制只有你的服务器IP才能访问API,能有效防止密钥被滥用。
  3. 权限最小化:仅开启必要权限,例如只做交易就不要开放提币权限。
  4. 错误处理:生产环境中需添加重试机制和错误日志,避免因网络波动导致订单失败。
  5. 测试网先行:欧易提供了沙箱测试环境,建议先在模拟资金中验证脚本无误后再投入真实资金,更多信息可参考欧易交易所下载文档中心。

常见问题与问答(FAQ)

Q1:为什么我生成的签名总是验证失败?
A:最常见原因是时间戳相差过大,请确保服务器时间与NTP同步,差异不应超过30秒,另外检查账户API中的“口令(passphrase)”是否与代码中一致。

Q2:交易脚本返回错误“Order size too small”?
A:每个交易对都有最小下单数量限制,例如BTC的最小交易单位为0.0001,你可以在欧易官网的交易规则页面查询具体最小交易量。

Q3:通过API下单后,多久能成交?
A:限价单的成交速度取决于市场深度,如果在最优买/卖价范围内通常很快;如果价格偏离市场,则可能无法成交,你也可以使用市价单(ordType="market")确保即时成交。

Q4:API的请求频率有限制吗?
A:有的,欧易API对REST接口限制为每秒20次请求,如果被限流,请添加适当的time.sleep()延迟,WebSocket接口则无限流,但连接数量有限。

Q5:如何获取历史K线数据?
A:使用/api/v5/market/candles接口,支持1m、5m、15m、30m、1H等周期,注意历史数据最多可获取最近300根K线。


通过以上教程,你已经掌握了从欧易API申请到Python交易脚本编写的完整流程,建议新手先从查询行情和模拟订单开始,逐步过渡到真实交易,如需更深入的功能如止盈止损、量化策略,可查阅欧易交易所官网开发者文档获取更多API端点与示例代码。

标签: 交易脚本

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