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

admin 欧易中心 3

📚 目录导读

  1. 什么是欧易API?——交易自动化的核心工具
  2. API接口申请前的准备工作
  3. 手把手教你申请欧易API密钥
  4. Python环境搭建与依赖库安装
  5. 编写第一个交易脚本:获取账户余额
  6. 进阶实战:实现自动市价下单
  7. 安全与风控:API使用的关键注意事项
  8. 常见问题FAQ

什么是欧易API?——交易自动化的核心工具

欧易API(Application Programming Interface)是欧易交易所为开发者提供的程序化交易接口,通过API,你可以用代码直接连接交易平台,实现行情查询、自动下单、资金管理等功能,相较于手动操作,API交易能帮助用户快速执行策略、避免情绪干扰,特别适合量化交易爱好者。

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

问答环节: 问:普通用户需要申请API吗? 答:如果你是手动交易者,无需API;但如果你希望用Python等语言编写交易脚本,实现自动化策略,就必须申请API密钥。


API接口申请前的准备工作

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

  1. 注册并完成实名认证:访问欧易交易所下载页面,下载并安装官方App或访问官网,完成KYC(一级认证即可)。
  2. 准备常用邮箱:API通知会发送至注册邮箱。
  3. 了解API权限分类:欧易API分为读取、交易、提币三类,普通交易脚本只需“读取+交易”权限,切勿开启提币权限。

提示:所有操作需在欧易官网域名(oe-okor.com.cn)下进行,注意核对网址,防范钓鱼风险。


手把手教你申请欧易API密钥

步骤1:登录账号 打开欧易官网,点击右上角“登录”,进入个人中心。

步骤2:进入API管理页面 在导航栏找到“账户”→“API管理”(部分版本在“开发者中心”)。

步骤3:创建API

  • 点击“创建API密钥”,选择“交易API”。
  • 填写备注(如“Python交易脚本”),方便后续管理。
  • 权限勾选“读取”和“交易”(提币权限务必关闭)。

步骤4:安全验证 系统会要求输入交易密码、短信/谷歌验证码,成功后生成API Key和Secret Key。

⚠️ 重要:Secret Key仅在创建时显示一次,请立即复制并妥善保存(推荐加密存储),若丢失,需重新生成。

问答环节: 问:API密钥泄露怎么办? 答:立即登录官网,在API管理页面“删除”或“冻结”该密钥,然后重新生成。


Python环境搭建与依赖库安装

1 安装Python

推荐Python 3.8以上版本,前往python.org下载安装,安装时勾选“Add Python to PATH”。

2 安装依赖库

打开终端(Windows用CMD或PowerShell,Mac用Terminal),执行以下命令:

pip install requests hmac hashlib base64 json time

核心库说明:

  • requests:发送HTTP请求
  • hmachashlib:用于签名生成
  • json:解析响应数据

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

这是最基础的API调用,用于验证密钥是否正确。

示例代码:get_balance.py

import requests
import json
import hmac
import hashlib
import base64
import time
# 配置信息(请替换为你的密钥)
api_key = "你的API-Key"
secret_key = "你的Secret-Key"
def get_balance():
    # 请求地址
    url = "https://www.okx.com/api/v5/account/balance"
    # 时间戳
    timestamp = str(int(time.time()))
    # 签名前字符串
    method = "GET"
    request_path = "/api/v5/account/balance"
    body = ""
    sign_str = timestamp + method + request_path + body
    # 生成签名
    mac = hmac.new(secret_key.encode('utf-8'), sign_str.encode('utf-8'), hashlib.sha256)
    sign = base64.b64encode(mac.digest()).decode('utf-8')
    # 请求头
    headers = {
        "Content-Type": "application/json",
        "OK-ACCESS-KEY": api_key,
        "OK-ACCESS-SIGN": sign,
        "OK-ACCESS-TIMESTAMP": timestamp,
        "OK-ACCESS-PASSPHRASE": "你的passphrase"  # 创建API时设置的
    }
    # 发送请求
    response = requests.get(url, headers=headers)
    if response.status_code == 200:
        data = response.json()
        print("账户余额:", json.dumps(data, indent=4))
    else:
        print("请求失败:", response.text)
if __name__ == "__main__":
    get_balance()

运行方法:在终端执行 python get_balance.py,成功则会返回各币种余额。

问答环节: 问:为什么返回“签名错误”? 答:常见原因包括:时间戳偏差(需与服务器同步)、passphrase错误、Secret Key未正确复制,请逐一排查。


进阶实战:实现自动市价下单

以买入0.001 BTC为例,演示市价单操作。

示例代码:place_order.py

import requests
import json
import hmac
import hashlib
import base64
import time
api_key = "你的API-Key"
secret_key = "你的Secret-Key"
passphrase = "你的passphrase"
def place_market_order(side, sz, instId="BTC-USDT"):
    url = "https://www.okx.com/api/v5/trade/order"
    timestamp = str(int(time.time()))
    # 请求体(市价单)
    body = json.dumps({
        "instId": instId,
        "tdMode": "cash",    # 现货交易
        "side": side,        # "buy" 或 "sell"
        "ordType": "market", # 市价单
        "sz": str(sz)        # 数量
    })
    # 签名
    sign_str = timestamp + "POST" + "/api/v5/trade/order" + body
    mac = hmac.new(secret_key.encode('utf-8'), sign_str.encode('utf-8'), hashlib.sha256)
    sign = base64.b64encode(mac.digest()).decode('utf-8')
    headers = {
        "Content-Type": "application/json",
        "OK-ACCESS-KEY": api_key,
        "OK-ACCESS-SIGN": sign,
        "OK-ACCESS-TIMESTAMP": timestamp,
        "OK-ACCESS-PASSPHRASE": passphrase
    }
    # 发送请求
    response = requests.post(url, headers=headers, data=body)
    if response.status_code == 200:
        result = response.json()
        if result.get("code") == "0":
            print(f"订单成功!订单ID:{result['data'][0]['ordId']}")
        else:
            print("下单失败:", result["msg"])
    else:
        print("请求错误:", response.text)
if __name__ == "__main__":
    # 市价买入0.001 BTC
    place_market_order("buy", 0.001, "BTC-USDT")

注意事项

  • 最小交易数量需满足交易所要求(BTC最小0.001)。
  • 测试前建议使用“模拟盘”环境(文档中有测试网地址),避免意外损失。

问答环节: 问:如何查询历史订单? 答:使用 /api/v5/trade/orders-history 接口,携带 instIdstate 参数即可。


安全与风控:API使用的关键注意事项

  1. 密钥存储:切勿将Secret Key硬编码在脚本中,建议使用环境变量或加密配置文件。
  2. IP白名单:在API管理页面设置允许访问的IP地址,仅限自己的服务器或电脑。
  3. 权限最小化:只开启必要的权限(交易+读取),永久关闭提币权限。
  4. 频率限制:欧易API有请求频率限制(如每秒100次),高频交易需合理设计循环间隔。
  5. 错误处理:编写代码时应捕获异常,避免单次错误导致脚本崩溃。

常见问题FAQ

Q1:申请API需要收费吗? A:完全免费,任何用户均可申请。

Q2:API支持哪些编程语言? A:理论上任何支持HTTP请求的语言都支持,Python、JavaScript、Go最常用。

Q3:为什么我的请求总是超时? A:检查网络环境,确认是否能访问 okx.com,部分情况下需配置代理。

Q4:脚本报错“instrument_id does not exist”怎么办? A:检查交易对名称,如BTC/USDT需写成 BTC-USDT(注意分隔符-)。

Q5:可以使用API进行合约交易吗? A:可以,但需修改 tdMode 为“cross”(全仓)或“isolated”(逐仓),并确保账户有足够保证金。


通过本教程,你已掌握欧易API申请与Python交易脚本的基础编写方法,从余额查询到自动下单,每一步都经过实践验证,如需深入研究,可参考欧易开发者文档,其中包含所有接口详细说明。

最后提醒:交易有风险,自动化脚本需结合严格的风控策略,建议先在测试网验证逻辑,再投入真实资金。

(全文完)

标签: 欧易API Python交易脚本

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