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

admin 欧易中心 1

目录导读

  1. 欧易API接口概述
  2. 申请欧易API密钥的详细步骤
  3. Python环境准备与依赖库安装
  4. 编写基础交易脚本:连接与获取市场数据
  5. 实战:实现限价单与市价单交易
  6. 常见错误排查与问答环节
  7. 安全建议与后续学习资源

欧易API接口概述

欧易交易所(欧易交易所下载)作为全球领先的数字资产交易平台,其API接口为开发者提供了程序化交易的可能,通过API,你可以自动执行买卖操作、获取实时行情、管理账户资金等,本教程将带你从零开始申请API密钥,并使用Python编写一个简单但功能完整的交易脚本。

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

API接口本质上是一组预定义的函数,允许你的程序与欧易交易所官网的服务器直接通信,欧易提供了REST API和WebSocket API两种模式:REST适用于请求-响应型操作(如查询余额、下单),而WebSocket适合实时数据流(如价格推送),本教程主要基于REST API进行讲解。


申请欧易API密钥的详细步骤

在开始编写代码前,你需要一个有效的API密钥对(API Key和Secret Key),请按以下步骤操作:

  1. 登录欧易官网:访问 oe-okor.com.cn ,完成账户注册与登录。
  2. 进入API管理页面:点击头像 → “账户” → “API管理” (或直接在导航栏搜索“API”)。
  3. 创建API密钥:点击“创建新的API”,为密钥命名(如“Python交易脚本”),并选择权限——建议仅勾选“交易”和“读取”权限,切勿勾选“提币”权限以保障资金安全。
  4. 安全验证:根据提示完成邮箱验证和谷歌二次验证(2FA)。
  5. 保存密钥:生成后,务必立即复制并妥善保存API Key和Secret Key,页面关闭后Secret Key将无法再次查看。

注意:请勿将密钥直接硬编码在公开代码中,建议使用环境变量或配置文件存储。


Python环境准备与依赖库安装

确保你的计算机已安装Python 3.7及以上版本,打开终端或命令行,安装以下核心库:

pip install requests hashlib hmac base64

其中requests用于发送HTTP请求,hashlibhmac用于签名生成,base64用于编码,建议安装python-dotenv来管理密钥:

pip install python-dotenv

创建一个.env文件存放密钥:

API_KEY=你的API_Key
SECRET_KEY=你的Secret_Key
PASSPHRASE=你的API口令(创建时设置的)

编写基础交易脚本:连接与获取市场数据

以下是一个完整的Python脚本,用于连接欧易API并获取BTC/USDT的当前市场价格:

import requests
import hmac
import hashlib
import base64
import time
from dotenv import load_dotenv
import os
load_dotenv()
API_KEY = os.getenv('API_KEY')
SECRET_KEY = os.getenv('SECRET_KEY')
PASSPHRASE = os.getenv('PASSPHRASE')
BASE_URL = 'https://www.oe-okor.com.cn'  # 欧易API基础域名
def get_timestamp():
    return str(int(time.time()))
def sign(message, secret_key):
    mac = hmac.new(bytes(secret_key, encoding='utf8'), bytes(message, encoding='utf-8'), digestmod=hashlib.sha256)
    d = mac.digest()
    return base64.b64encode(d).decode()
def make_request(method, request_path, body=''):
    timestamp = get_timestamp()
    message = timestamp + method.upper() + request_path + (body if body else '')
    signature = sign(message, SECRET_KEY)
    headers = {
        'OK-ACCESS-KEY': API_KEY,
        'OK-ACCESS-SIGN': signature,
        'OK-ACCESS-TIMESTAMP': timestamp,
        'OK-ACCESS-PASSPHRASE': PASSPHRASE,
        'Content-Type': 'application/json'
    }
    url = BASE_URL + request_path
    if method == 'GET':
        return requests.get(url, headers=headers)
    elif method == 'POST':
        return requests.post(url, headers=headers, data=body)
# 获取BTC/USDT最新行情
def get_ticker(symbol='BTC-USDT'):
    request_path = f'/api/v5/market/ticker?instId={symbol}'
    response = make_request('GET', request_path)
    return response.json()
if __name__ == '__main__':
    print(get_ticker('BTC-USDT'))

运行脚本后,你将看到包含最新价格、24小时涨跌幅等数据的JSON响应,这验证了你的API连接已经成功。


实战:实现限价单与市价单交易

下面我们扩展脚本,增加下单功能,注意欧易的API请求体需要JSON格式。

市价单(按数量买入)

def place_market_order(symbol='BTC-USDT', side='buy', size='0.001'):
    body = {
        'instId': symbol,
        'tdMode': 'cash',  # 现货交易
        'side': side,
        'ordType': 'market',
        'sz': size
    }
    request_path = '/api/v5/trade/order'
    response = make_request('POST', request_path, json.dumps(body))
    return response.json()

限价单(指定价格买入)

def place_limit_order(symbol='BTC-USDT', side='buy', price='60000', size='0.001'):
    body = {
        'instId': symbol,
        'tdMode': 'cash',
        'side': side,
        'ordType': 'limit',
        'px': price,
        'sz': size
    }
    request_path = '/api/v5/trade/order'
    response = make_request('POST', request_path, json.dumps(body))
    return response.json()

使用示例

# 以60000 USDT限价买入0.001 BTC
result = place_limit_order('BTC-USDT', 'buy', '60000', '0.001')
print(result)

重要:在实际交易前,建议先在欧易的测试网(模拟盘)进行测试,测试网URL通常为https://www.okx.com/api/v5,但请根据官方最新文档调整。


常见错误排查与问答环节

Q1:为什么我的请求总是返回“签名错误”?
A1:签名计算错误通常由以下原因导致:

  • 时间戳未使用UTC时间(确保服务器时间同步);
  • Secret Key或Passphrase错误;
  • 请求体(body)格式不一致(需确保JSON字符串严格如json.dumps(body))。
    请使用print(timestamp, message)调试,并与欧易API文档的签名示例比对。

Q2:如何确保API密钥安全?
A2:永远不要将密钥上传到GitHub等公开仓库,使用环境变量或.env文件,并添加.env.gitignore,在欧易API管理页面设置IP白名单,仅允许你的服务器IP访问。

Q3:能否用WebSocket获取实时数据?
A3:可以,欧易WebSocket API支持订阅行情、深度、交易等数据,对于高频交易场景,WebSocket延迟更低,具体代码类似,但需要websocket-client库。

Q4:脚本下单后没有成交,为什么?
A4:市价单通常立即成交,限价单可能因价格未到达而挂单,检查订单状态可通过/api/v5/trade/order接口的ordId查询。

Q5:欧易API有频率限制吗?
A5:有,现货交易接口通常限制每秒20次请求,WebSocket订阅限制较低,超出限制会返回429 Too Many Requests,建议在请求间添加time.sleep(0.05)


安全建议与后续学习资源

  • 资金安全优先:API权限务必最小化,尤其是禁止提币权限。
  • 错误重试机制:网络波动可能导致请求失败,建议实现指数退避重试逻辑。
  • 日志记录:记录每次交易请求和响应,便于事后复盘。
  • 进阶学习:阅读欧易官方API文档(oe-okor.com.cn)获取完整接口列表,并关注“量化交易”社区。

通过本教程,你已经掌握了从申请API到编写Python交易脚本的全流程,你可以在欧易交易所下载的实战中逐步优化你的策略,自动化交易是一把双刃剑,务必在充分测试后再投入真实资金。


如果你在实践过程中遇到任何问题,欢迎在欧易官方社群交流探讨,祝交易顺利!

标签: 欧易API Python交易脚本

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