欧易交易所API接口申请教程,手把手教你用Python写交易脚本

admin okx快讯 4

📖 目录导读

  1. 欧易交易所API入门须知
  2. API接口申请详细步骤
  3. Python环境与依赖库配置
  4. 编写第一个交易脚本(含问答)
  5. 常见错误与调试技巧
  6. 安全注意事项与优化建议

如果你是刚接触量化交易的新手,可能觉得“API”、“交易脚本”这些词有点唬人,别担心,今天我就用最接地气的方式,带你走一遍欧易交易所下载并完成API申请,再手把手写出一个能跑起来的Python交易脚本,整个过程我已经帮你踩过坑了,跟着做就行。

欧易交易所API接口申请教程,手把手教你用Python写交易脚本-第1张图片-欧易交易所


欧易交易所API入门须知

在动手之前,得先搞明白API是个啥玩意儿,简单说,API就是交易所给你的一把“遥控器”——你不需要打开网页,用代码就能直接操作账户:查余额、看行情、下订单。

欧易交易所的API分为三类:

  • REST API:最常用,用于查询数据和下单
  • WebSocket API:实时推送行情,适合做高频
  • 模拟盘API:测试用,不花真金白银

⚠️ 新手建议先从模拟盘开始,等脚本跑顺了再上实盘。


API接口申请详细步骤

步骤1:注册并登录

访问欧易交易所官网,注册账号并完成基础认证。

步骤2:进入API管理页面

登录后,右上角点“账户”→ 左侧菜单找到“API管理”。

步骤3:创建API Key

点击“创建API”,会弹出三个选项:

  • 读取:只能查数据,不能交易
  • 交易:可以下单、撤单
  • 提现:不建议开启,安全第一

建议配置

  • 如果只是做分析脚本 → 只开“读取”
  • 如果要自动交易 → 开“读取+交易”,但绝对不要开提现

步骤4:设置IP白名单(强烈推荐)

填入你电脑或服务器的公网IP,这样即使API泄露,别人也没法用。

步骤5:保存好Key和Secret

创建成功后,你会得到:

  • API Key(一串字符)
  • Secret Key(另一串字符,只显示一次,务必复制保存到安全的地方)

很多新手在这步翻车:忘记保存Secret Key,一旦关闭页面,就再也看不到了,只能重新创建。


Python环境与依赖库配置

环境要求

  • Python 3.7 或更高版本
  • 推荐用虚拟环境隔离项目

安装依赖库

打开终端,执行:

pip install requests hashlib hmac base64 json time

其中requests用于发送HTTP请求,其他几个用于生成签名(交易所的安全机制)。

代码结构建议

okex_trading/
├── config.py      # 存API Key和Secret
├── okex_api.py    # 封装API调用函数
├── simple_trader.py  # 主交易脚本

编写第一个交易脚本

❓ 问答环节:新手最常问的3个问题

Q1:为什么我发的请求总是报错“签名错误”? A:90%的情况是API Key或Secret Key复制错了,或者时间戳格式不对,代码里确保timestamp是ISO格式,并且使用UTC时间。

Q2:模拟盘和实盘的API地址一样吗? A:不一样,模拟盘的base URL是https://www.okex.com,实盘是https://www.okx.com建议先用模拟盘

Q3:我能直接用这个脚本赚钱吗? A:不能,这只是个演示脚本,真正的交易策略需要考虑滑点、手续费、风控等,但这是很好的起点。


完整脚本示例

import requests
import json
import hmac
import base64
import hashlib
import time
from datetime import datetime
# === 配置部分(用你自己的信息替换)===
API_KEY = "你的API_KEY"
SECRET_KEY = "你的SECRET_KEY"
PASSPHRASE = "你在创建API时设置的密码"
BASE_URL = "https://www.okex.com"  # 模拟盘用这个,实盘改成"https://www.okx.com"
def get_timestamp():
    """生成ISO格式的UTC时间戳"""
    now = datetime.utcnow()
    return now.strftime('%Y-%m-%dT%H:%M:%S.%f')[:-3] + 'Z'
def generate_signature(timestamp, method, request_path, body=''):
    """生成签名(欧易特有的加密方式)"""
    message = timestamp + method.upper() + request_path + (body if body else '')
    mac = hmac.new(bytes(SECRET_KEY, encoding='utf-8'), 
                   bytes(message, encoding='utf-8'), 
                   digestmod=hashlib.sha256)
    d = mac.digest()
    return base64.b64encode(d).decode()
def send_request(method, path, body=''):
    """通用请求发送函数"""
    timestamp = get_timestamp()
    signature = generate_signature(timestamp, method, path, body)
    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 + path
    if method == 'GET':
        response = requests.get(url, headers=headers)
    elif method == 'POST':
        response = requests.post(url, headers=headers, data=body)
    return response.json()
def get_account_info():
    """获取账户信息"""
    path = '/api/v5/account/balance'
    return send_request('GET', path)
def place_order(symbol, side, size, order_type='market'):
    """
    下订单
    symbol: 交易对,如'BTC-USDT'
    side: 'buy' 或 'sell'
    size: 数量
    order_type: 'market' 或 'limit'
    """
    path = '/api/v5/trade/order'
    body = json.dumps({
        'instId': symbol,
        'tdMode': 'cash',
        'side': side,
        'ordType': order_type,
        'sz': str(size)
    })
    return send_request('POST', path, body)
# === 主程序 ===
if __name__ == '__main__':
    # 1. 先查一下账户余额
    print("正在获取账户信息...")
    acct_info = get_account_info()
    print("账户余额:", acct_info)
    # 2. 尝试下单(模拟盘)
    # 注意:模拟盘可以用假数据测试,不会真的成交
    print("尝试下模拟单...")
    order_result = place_order('BTC-USDT', 'buy', 0.001)
    print("下单结果:", order_result)

运行说明

  1. API_KEYSECRET_KEYPASSPHRASE替换成你自己的
  2. 确保网络能访问okwi.com.cn
  3. 运行脚本:python simple_trader.py

如果一切顺利,你会看到返回的JSON数据,里面有账户余额和订单状态。


常见错误与调试技巧

错误提示 原因 解决方法
400 Bad Request 参数格式不对 检查JSON格式,数字不要带引号
401 Unauthorized 签名或Key错误 重新复制API Key和Secret
429 Too Many Requests 请求太频繁 每次请求间隔至少0.1秒
500 Internal Server Error 交易所服务器问题 等几分钟再试

调试小技巧

  • 打印timestampsignature,对比官方文档的示例
  • 用欧易官方的API在线调试工具验证参数
  • 先用模拟盘,别头铁直接上实盘

安全注意事项与优化建议

安全红线

  1. 绝对不要把API Key和Secret提交到GitHub,用.env文件或环境变量
  2. IP白名单一定要开,哪怕动态IP也要绑定
  3. 不要开提现权限,除非你很清楚在做什么
  4. 定期更换API Key,比如每3个月换一次

脚本优化方向

  • 添加异常处理:下单失败时自动重试或报警
  • 实现心跳机制:每隔一段时间检查连接状态
  • 对接数据库:记录每次交易详情
  • 集成WebSocket:获取实时行情,响应速度更快

最后说两句

这个脚本虽然简单,但已经能让你体验到量化交易的基础流程,后续你可以基于这个框架,添加自己的策略逻辑,比如均线交叉、布林带策略等。

如果你在跑通脚本的过程中遇到了问题,先检查API Key是否有权限、网络是否能访问欧易交易所官网,大多数报错都是API配置问题,别慌,慢慢排查。

先跑模拟盘,再上实盘,祝你的交易脚本顺利跑起来!

标签: API接口 Python脚本

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