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

admin ok快讯 2

目录导读

  • 欧易API接口申请前提条件
  • 欧易交易所API密钥生成与权限设置
  • Python环境搭建与依赖库安装
  • 基于欧易API的简单交易脚本编写
  • 常见问题与避坑指南
  • 问答环节:欧易交易脚本高频疑问解答

欧易API接口申请前提条件

在正式开始编写交易脚本之前,您需要确认自己已完成以下准备:

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

  1. 注册并登录欧易交易所账户,并完成基础身份认证(KYC一级即可)。
  2. 确保账户内有足够的USDT或其他交易对的基础资产,用于测试或实盘操作。
  3. 电脑已安装Python 3.7及以上版本,并熟悉基础语法。

小贴士:如果你是第一次使用欧易交易所下载功能,建议先在模拟盘或小额资金下测试脚本稳定性。

欧易交易所API密钥生成与权限设置

1 进入API管理页面

登录您的欧易交易所账户,点击右上角头像 → “API” → “创建API”,此时系统会要求进行二次验证(邮箱或手机验证码)。

2 创建API并设置权限

  • 输入API名称(便于区分用途,mytradingbot”)。
  • 权限选择:必须勾选“交易”权限(若仅查询行情,可选“读取”);建议不勾选“提现”权限,防止意外风险。
  • 设置IP白名单(可选但推荐):填写您的服务器或本地电脑公网IP,提升安全性。

生成后,您会得到两串关键信息:API KeySecret Key,请将Secret Key保存在安全的地方,关闭页面后无法再次查看。

3 理解API签名机制

欧易API采用HMAC-SHA256签名,所有请求(除公开行情外)都需携带签名参数,您的Python脚本需要自动生成签名,否则请求会被拒绝。

Python环境搭建与依赖库安装

1 安装必要库

打开终端或命令提示符,执行以下命令:

pip install requests hashlib hmac base64 time json

注意:requests用于HTTP请求,hashlibhmac用于签名计算。

2 导入库并定义基础变量

import requests
import hmac
import hashlib
import base64
import time
import json
API_KEY = "您的API Key"
SECRET_KEY = "您的Secret Key"
BASE_URL = "https://www.ox-okbb.com.cn"   # 请替换为实际的欧易API域名
PASSPHRASE = "您在创建API时设置的 passphrase"

基于欧易API的简单交易脚本编写

1 获取实时行情(公开接口)

def get_ticker(symbol):
    url = f"{BASE_URL}/api/v5/market/ticker?instId={symbol}"
    response = requests.get(url)
    return response.json()

调用示例:print(get_ticker("BTC-USDT")) 可返回比特币当前价格。

2 生成签名函数(核心)

def generate_sign(timestamp, method, request_path, body):
    message = timestamp + method + request_path + (body or "")
    mac = hmac.new(bytes(SECRET_KEY, encoding='utf8'), bytes(message, encoding='utf-8'), digestmod=hashlib.sha256)
    digest = mac.digest()
    return base64.b64encode(digest).decode()

3 设置请求头

def get_header(method, request_path, body):
    timestamp = str(time.time())
    sign = generate_sign(timestamp, method, request_path, body)
    return {
        "OK-ACCESS-KEY": API_KEY,
        "OK-ACCESS-SIGN": sign,
        "OK-ACCESS-TIMESTAMP": timestamp,
        "OK-ACCESS-PASSPHRASE": PASSPHRASE,
        "Content-Type": "application/json"
    }

4 下单交易(限价买入)

def place_order(symbol, side, size, price):
    body = {
        "instId": symbol,
        "tdMode": "cash",  # 现货交易
        "side": side,      # "buy" 或 "sell"
        "ordType": "limit",
        "sz": size,        # 数量
        "px": price        # 价格
    }
    body_json = json.dumps(body)
    request_path = "/api/v5/trade/order"
    header = get_header("POST", request_path, body_json)
    url = f"{BASE_URL}{request_path}"
    response = requests.post(url, headers=header, data=body_json)
    return response.json()

调用示例:print(place_order("ETH-USDT", "buy", 0.01, 1800)) 表示以1800 USDT的价格买入0.01个ETH。

5 查看账户余额

def get_account():
    request_path = "/api/v5/account/balance"
    header = get_header("GET", request_path, None)
    url = f"{BASE_URL}{request_path}"
    response = requests.get(url, headers=header)
    return response.json()

常见问题与避坑指南

1 API权限不足

如果请求返回{"msg":"Operation not allowed","code":"50013"},请检查API权限是否勾选“交易”,且未超出IP白名单限制。

2 签名错误

  • 确认SECRET_KEY与创建时一致。
  • 检查时间戳是否为浮点数毫秒级。
  • 确认request_path包含完整路径(如/api/v5/trade/order),不包含域名部分。

3 交易对不存在

确保instId严格按照“币种-计价币种”大写格式,如BTC-USDT,不是btc-usdt

4 频率限制

欧易API对每秒请求次数有限制(通常每秒10次),高频调用需加入time.sleep(0.1)

问答环节:欧易交易脚本高频疑问解答

Q1:使用欧易API交易需要实盘资金吗?
A:普通API直接操作实盘,建议先用模拟盘测试,如果您需要下载官方客户端,可通过欧易交易所下载获取桌面版或移动版。

Q2:脚本下单后如何获取成交状态?
A:调用/api/v5/trade/order接口时,返回参数中包含ordId,随后可用/api/v5/trade/order?instId=xxx&ordId=xxx查询订单状态。

Q3:签名中的passphrase是API密码吗?
A:不是登录密码,而是您在创建API时额外设置的一个英文或数字短语,用于二次校验。

Q4:Python脚本可以在服务器上24小时运行吗?
A:完全可以,建议部署在云服务器(如阿里云、AWS),并结合错误重试机制和日志记录功能,确保稳定性。

Q5:如何确保私钥安全?
A:绝对不要将代码上传到公开Git仓库,建议使用环境变量或密钥管理工具(如.env文件),尽量为每个脚本创建独立的API,并设置严格的IP白名单。


通过以上步骤,您已经掌握了从欧易API申请到Python交易脚本编写的完整流程,建议从获取行情、查看余额等只读操作起步,熟悉后再尝试下单交易,如果您在实操中遇到任何问题,欢迎参考官方文档或社区讨论,持续优化您的策略,并始终将风险控制放在第一位。

标签: 欧易API Python交易脚本

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