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

admin 欧易中心 2

目录导读

  1. 欧易API接口概述:了解欧易交易所API的功能与优势
  2. API接口申请流程:手把手教你在欧易官网完成密钥配置
  3. Python环境搭建:安装必要库与开发工具
  4. 编写交易脚本实战:获取行情、下单与账户管理
  5. 常见问题与问答:解决API调用中的高频疑问

欧易API接口概述

欧易交易所(OKX)是全球领先的数字资产交易平台,其官方API接口允许开发者通过程序化方式实现市场数据查询、自动化交易、资产管理等操作,对于量化交易爱好者而言,掌握欧易API的申请与使用是构建策略的第一步,本文将基于欧易交易所官网的API文档,结合Python语言,从零讲解如何编写一个简单的交易脚本。

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

在使用API前,需明确其核心功能:

  • REST API:获取实时行情、历史数据、账户信息等。
  • WebSocket API:订阅市场深度、成交明细等实时数据。
  • 交易API:下单、撤单、查询订单状态。

小贴士:若您尚未注册欧易账户,建议先通过欧易交易所下载完成开户与身份认证,这是调用API的前提条件。


欧易API接口申请教程

1 登录欧易官网,进入API管理页面

  1. 访问欧易官网,登录您的账户。
  2. 在导航栏中找到“API”入口(通常位于个人中心或开发者板块)。
  3. 点击“新建API”开始申请。

2 配置API密钥权限

申请时需要设置以下参数:

  • API名称:自定义标识,如“Python测试脚本”。
  • 权限范围:勾选“读取”、“交易”、“提币”(建议仅开启“读取”和“交易”以降低风险)。
  • IP白名单:强烈建议绑定服务器或本地IP,防止密钥泄露后被滥用。

完成配置后,系统将生成API KeySecret Key,请务必妥善保存(Screts Key只显示一次)。

安全提示:切勿将密钥明文存储于GitHub等公开仓库中,若密钥泄露,请立即在欧易交易所官网的API管理页面删除并重置。

3 验证API连通性

官方提供测试环境(模拟盘)用于调试,建议新手先在此环境试验,申请时勾选“模拟盘权限”即可。


Python环境搭建

1 安装依赖库

在终端执行以下命令安装Python的HTTP请求库与加密库:

pip install requests hashlib hmac base64 json

2 创建配置文件

新建config.py文件,存储API密钥:

# config.py
API_KEY = 'your_api_key_here'
SECRET_KEY = 'your_secret_key_here'
PASSPHRASE = 'your_passphrase_here'  # 创建API时设置的交易密码
BASE_URL = 'https://www.okx.com'  # 欧易官网API端点

编写交易脚本实战

1 获取账户余额(GET请求)

import requests
import hmac
import hashlib
import base64
import json
from config import API_KEY, SECRET_KEY, PASSPHRASE
def get_timestamp():
    return str(int(requests.get(f'https://oe-okor.com.cn/api/v5/public/time').json()['data'][0]['ts']))
def sign_request(method, request_path, body=''):
    timestamp = get_timestamp()
    message = timestamp + method + request_path + body
    mac = hmac.new(bytes(SECRET_KEY, encoding='utf8'), bytes(message, encoding='utf8'), digestmod=hashlib.sha256)
    d = base64.b64encode(mac.digest())
    return d, timestamp
headers = {
    "OK-ACCESS-KEY": API_KEY,
    "OK-ACCESS-SIGN": "",
    "OK-ACCESS-TIMESTAMP": "",
    "OK-ACCESS-PASSPHRASE": PASSPHRASE,
    "Content-Type": "application/json"
}
request_path = "/api/v5/account/balance"
sign, timestamp = sign_request('GET', request_path)
headers["OK-ACCESS-SIGN"] = sign.decode('utf-8')
headers["OK-ACCESS-TIMESTAMP"] = timestamp
response = requests.get(f'{BASE_URL}{request_path}', headers=headers)
print('账户余额:', response.json())

2 获取实时行情(示例为BTC/USDT)

def get_ticker(symbol='BTC-USDT'):
    request_path = f"/api/v5/market/ticker?instId={symbol}"
    sign, timestamp = sign_request('GET', request_path)
    headers["OK-ACCESS-SIGN"] = sign.decode('utf-8')
    headers["OK-ACCESS-TIMESTAMP"] = timestamp
    response = requests.get(f'{BASE_URL}{request_path}', headers=headers)
    return response.json()
print(get_ticker('ETH-USDT'))

3 下单交易(POST请求)

def place_order(symbol, side, size, price=''):
    body = {
        "instId": symbol,
        "tdMode": "cash",  # 现货交易
        "side": side,      # "buy" 或 "sell"
        "ordType": "limit" if price else "market",
        "sz": str(size),
        "px": str(price) if price else ""
    }
    body_str = json.dumps(body)
    request_path = "/api/v5/trade/order"
    sign, timestamp = sign_request('POST', request_path, body_str)
    headers["OK-ACCESS-SIGN"] = sign.decode('utf-8')
    headers["OK-ACCESS-TIMESTAMP"] = timestamp
    response = requests.post(f'{BASE_URL}{request_path}', data=body_str, headers=headers)
    return response.json()
# 示例:以市价买入0.01 BTC
print(place_order('BTC-USDT', 'buy', 0.01))

4 封装为独立脚本

将上述功能整合到trade_bot.py中,并添加循环执行逻辑:

if __name__ == "__main__":
    # 每30秒输出一次BTC价格
    import time
    while True:
        ticker = get_ticker('BTC-USDT')
        price = ticker['data'][0]['last']
        print(f"BTC当前价格: {price} USD")
        time.sleep(30)

常见问题与问答(FAQ)

Q1:申请API时,IP白名单必须设置吗?

A:强烈建议设置,白名单可限制只有指定IP能调用API,即使密钥泄露,他人也无法通过未绑定的IP操作账户,若您使用固定服务器或本地网络,请务必添加对应IP。

Q2:签名无法通过,返回“sign error”怎么办?

A:常见原因包括:

  • 时间戳与服务器时间差超过5秒(需同步系统时间)。
  • Secret Key复制错误(注意不要有空格)。
  • 请求体(body)签名时未使用JSON字符串格式。

建议通过欧易交易所官网的API接口测试工具调试。

Q3:如何避免频繁请求被限制?

A:欧易API对速率有限制(如REST API每秒最多10次),可在脚本中添加time.sleep(0.1),或使用官方推荐的重试机制,若需高频交易,建议使用WebSocket API。

Q4:脚本可以在欧易交易所下载的模拟盘中测试吗?

A:可以,申请API时勾选“模拟盘权限”,并将请求的base URL改为模拟盘地址(如https://www.okex.com),模拟盘和实盘环境独立,可放心测试。

Q5:部署到云服务器时需要注意什么?

A

  • 将密钥存储为环境变量,不要硬编码。
  • 开启服务器防火墙,仅放行必要端口。
  • 添加异常处理机制,如断线重连、订单失败重试。

通过本文的欧易API接口申请教程,您已掌握使用Python连接欧易交易所的基础流程,从申请密钥到实战脚本,每一步都兼顾安全与效率,未来可在此基础上接入技术指标(如MA、RSI)或机器学习模型,构建更复杂的量化策略,建议持续关注欧易官网的API更新日志,以获取新增功能与优化。

标签: 欧易API Python交易脚本

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