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

admin 欧易中心 2

目录导读

  1. 欧易交易所API接口申请全流程
  2. Python环境搭建与库安装
  3. 编写第一个交易脚本:基础框架
  4. 实战案例:自动获取行情并下单
  5. 常见问题与问答
  6. 安全注意事项与优化建议

欧易交易所API接口申请全流程

在开始编写交易脚本之前,首先需要完成API的申请与配置,请按照以下步骤操作:

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

  1. 登录欧易交易所官网
    访问 https://oe-okor.com.cn/ 并登录您的账户,如果您还没有账户,请先完成注册和身份认证。

  2. 进入API管理页面
    登录后,在导航栏找到“账户”或“安全设置”选项,点击进入“API管理”界面,注意:部分页面可能需要二次验证(如手机或邮箱验证码)。

  3. 创建API密钥

    • 点击“创建API”按钮。
    • 选择权限范围:建议勾选“读取”、“交易”和“提币”(如非必要,请勿开启“提币”权限以增强安全性)。
    • 系统会生成一对密钥:API Key(公钥)和Secret Key(私钥),请务必妥善保管,私钥仅在创建时显示一次,丢失后只能重新生成。
  4. 绑定IP白名单(推荐)
    为了提高安全性,建议绑定您的服务器或本机IP地址,这样即使密钥泄露,攻击者也无法从其他IP发起请求。

  5. 测试连接
    使用Python等编程语言发送一个简单的请求(如获取账户余额),验证密钥是否正常工作。

提示:您也可以先在 欧易交易所下载 的移动端应用中完成基础设置,再切换到PC端进行详细操作。


Python环境搭建与库安装

1 环境要求

  • Python 3.8 及以上版本
  • 确保已安装pip包管理器

2 安装依赖库

在终端或命令提示符中执行以下命令:

pip install requests hashlib hmac base64 json

其中requests用于发送HTTP请求,hashlibhmac用于生成签名,json用于解析返回数据。

3 设置全局变量

创建一个Python脚本文件(如okx_trading.py),并在开头定义API密钥:

import requests
import hmac
import hashlib
import base64
import json
from datetime import datetime
API_KEY = "您的API Key"
SECRET_KEY = "您的Secret Key"
BASE_URL = "https://www.okx.com"  # 请确认接口域名是否与官网一致

编写第一个交易脚本:基础框架

1 签名生成函数

欧易API要求每次请求都必须携带合法签名,以下是一个通用的签名生成函数:

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

2 发送请求函数

def send_request(method, path, params=None):
    timestamp = datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%S.%f')[:-3] + 'Z'
    if params is None:
        body = ''
    else:
        body = json.dumps(params)
    signature = generate_signature(timestamp, method, path, body)
    headers = {
        'OK-ACCESS-KEY': API_KEY,
        'OK-ACCESS-SIGN': signature,
        'OK-ACCESS-TIMESTAMP': timestamp,
        'OK-ACCESS-PASSPHRASE': '您的交易密码'  # 需在API创建时设置
    }
    url = BASE_URL + path
    if method == 'GET':
        response = requests.get(url, headers=headers, params=params)
    elif method == 'POST':
        response = requests.post(url, headers=headers, data=body)
    else:
        return None
    return response.json()

3 获取账户信息

def get_account_info():
    path = '/api/v5/account/balance'
    return send_request('GET', path)

实战案例:自动获取行情并下单

1 获取实时行情

def get_ticker(symbol='BTC-USDT'):
    path = f'/api/v5/market/ticker?instId={symbol}'
    return send_request('GET', path)

2 市价下单

def place_market_order(symbol, side, size):
    path = '/api/v5/trade/order'
    body = {
        'instId': symbol,
        'tdMode': 'cash',       # 保证金模式: cash 为现货
        'side': side,           # buy 或 sell
        'ordType': 'market',    # 市价单
        'sz': str(size)
    }
    return send_request('POST', path, body)

3 完整示例:当价格低于某个阈值时买入

def auto_buy_if_low(symbol='BTC-USDT', target_price=50000, amount=0.01):
    ticker = get_ticker(symbol)
    current_price = float(ticker['data'][0]['last'])
    if current_price < target_price:
        print(f"当前价格 {current_price} 低于目标价 {target_price},执行买入...")
        result = place_market_order(symbol, 'buy', amount)
        print("下单结果:", result)
    else:
        print(f"当前价格 {current_price} 未达到触发条件")
# 运行
auto_buy_if_low()

常见问题与问答

Q1: 为什么我调用API时返回“签名错误”?
A: 常见原因包括:

  • 时间戳未使用UTC时间
  • Secret Key或Passphrase填写有误
  • 请求路径或参数与签名时不一致

请检查generate_signature函数中的时间戳格式是否为"YYYY-MM-DDTHH:MM:SS.fffZ"。

Q2: 如何保证脚本24小时运行?
A: 建议将脚本部署到云服务器或使用Raspberry Pi等小型设备,可结合schedule库设置定时任务,

import schedule
schedule.every(10).minutes.do(auto_buy_if_low)

Q3: 欧易交易所下载的移动端也能管理API吗?
A: 可以,在 欧易交易所下载 应用中,通过“安全中心”或“账户设置”也能查看和管理API密钥,但创建密钥建议在官网完成。

Q4: 脚本交易的风险如何控制?
A:

  • 设置单次交易的最大金额
  • 添加止损逻辑(如价格回撤超过2%自动卖出)
  • 使用模拟盘或极小资金测试

安全注意事项与优化建议

  1. 密钥保护

    • 切勿将API Key和Secret Key硬编码在公开仓库中。
    • 建议使用环境变量存储敏感信息:
      import os
      API_KEY = os.getenv('OKX_API_KEY')
  2. 请求频率限制
    欧易API对每分钟请求次数有限制(通常为60次/秒),建议使用time.sleep()避免触发频率限制。

  3. 错误处理
    增加异常捕获和重试机制,防止网络波动导致脚本中断。

  4. 日志记录
    使用logging模块记录每次交易操作,便于复盘和排查问题。


通过以上教程,您已经掌握了从申请API到编写基础交易脚本的完整流程,建议先在模拟环境中充分测试,再投入真实资金,如需深入开发,可查阅欧易官方API文档中关于止损单、止盈单等高级功能。

标签: 欧易API Python交易脚本

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