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

admin ok快讯 2

目录导读

  1. 欧易API概述与基础准备

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

    • 什么是欧易API?为何需要申请?
    • 申请前必备工具与账户要求
  2. 欧易API接口申请全流程

    • 登录欧易官网并进入API管理
    • 创建API密钥(Key & Secret)
    • 设置权限与IP白名单
  3. Python交易脚本编写实战

    • 安装依赖库(requests、hashlib、hmac等)
    • 构建签名与请求头(重点:时间戳与签名算法)
    • 编写查询账户余额与下单函数
  4. 完整交易脚本示例

    • 代码解析:从连接API到执行限价单
    • 运行测试与常见错误处理
  5. 安全与优化建议

    • 密钥管理:切勿硬编码到公开仓库
    • 频率控制与日志记录
  6. 常见问答(FAQ)

    • Q1:API申请后多久生效?
    • Q2:Python脚本报错“无效签名”怎么办?
    • Q3:能否用API实现网格交易或定投?

欧易API概述与基础准备

欧易交易所(OKX)作为全球领先的数字资产交易平台,提供了丰富的API接口,允许开发者通过程序化方式执行行情查询、账户管理、下单交易等操作,对于量化交易者或自动化需求者而言,掌握欧易API是必备技能。

申请前你需要准备:

  • 一个已完成高级认证的欧易账户。
  • 稳定的网络环境(建议使用代理避免IP变动)。
  • Python 3.7+环境及基础编程知识。
  • 一个用于存放API密钥的安全文件(切勿直接暴露在代码中)。

提示:若你尚未注册欧易账户,可访问欧易交易所下载完成注册与认证,然后按照本文教程申请API。


欧易API接口申请全流程

登录欧易官网并进入API管理

登录你的欧易账户,在导航栏找到“账户” → “API”选项(或直接访问API管理页面),首次创建时需进行二次验证(短信+谷歌验证器)。

创建API密钥

点击“创建新API”,系统会生成两段关键信息:

  • API Key:相当于用户名,用于标识身份。
  • Secret Key:相当于密码,用于签名验证。请立即复制并妥善保存,关闭页面后无法再次查看。

设置权限与IP白名单

根据需求勾选权限:

  • 查看权限:允许查询账户余额、持仓。
  • 交易权限:允许下单、撤单。
  • 提现权限:建议不勾选,除非必要。

建议绑定IP白名单,限制仅可从你的服务器IP访问,降低密钥泄露风险,完成后点击“确认”,API即刻生效。


Python交易脚本编写实战

安装依赖库

打开终端,执行以下命令安装HTTP请求与加密签名所需的库:

pip install requests hashlib hmac base64 json

构建签名与请求头

欧易API要求每个请求携带合法签名,下面是一个Python函数,用于生成签名并组装请求头:

import requests
import hmac
import hashlib
import base64
import json
import time
def get_okx_sign(secret_key, request_path, body='', method='GET'):
    timestamp = str(time.time()).split('.')[0]
    message = timestamp + method.upper() + request_path + (body if body else '')
    mac = hmac.new(secret_key.encode('utf-8'), message.encode('utf-8'), hashlib.sha256)
    sign = base64.b64encode(mac.digest()).decode('utf-8')
    return timestamp, sign
def get_okx_headers(api_key, secret_key, passphrase, request_path, body='', method='GET'):
    timestamp, sign = get_okx_sign(secret_key, request_path, body, method)
    headers = {
        'OK-ACCESS-KEY': api_key,
        'OK-ACCESS-SIGN': sign,
        'OK-ACCESS-TIMESTAMP': timestamp,
        'OK-ACCESS-PASSPHRASE': passphrase,
        'Content-Type': 'application/json'
    }
    return headers

编写查询账户余额函数

以欧易的/api/v5/account/balance接口为例,查询USDT余额:

def get_account_balance(api_key, secret_key, passphrase, ccy='USDT'):
    base_url = 'https://www.okx.com'
    request_path = '/api/v5/account/balance'
    headers = get_okx_headers(api_key, secret_key, passphrase, request_path, body='', method='GET')
    response = requests.get(base_url + request_path, headers=headers)
    if response.status_code == 200:
        data = response.json()
        for item in data['data'][0]['details']:
            if item['ccy'] == ccy:
                return item['availBal']
    else:
        print(f"Error: {response.status_code}, {response.text}")
        return None

编写下单函数(限价单)

以下代码演示如何提交一个BTC/USDT的限价买入单:

def place_limit_order(api_key, secret_key, passphrase, inst_id='BTC-USDT', side='buy', price='30000', sz='0.001'):
    base_url = 'https://www.okx.com'
    request_path = '/api/v5/trade/order'
    body = {
        'instId': inst_id,
        'tdMode': 'cash',  # 保证金模式,现货选cash
        'side': side,
        'ordType': 'limit',
        'price': price,
        'sz': sz
    }
    headers = get_okx_headers(api_key, secret_key, passphrase, request_path, json.dumps(body), method='POST')
    response = requests.post(base_url + request_path, headers=headers, data=json.dumps(body))
    return response.json()

完整交易脚本示例

将以上函数整合为一个完整的Python脚本,用于查询余额并执行一笔测试下单:

# 请替换以下变量为你的真实API信息
API_KEY = 'your_api_key'
SECRET_KEY = 'your_secret_key'
PASSPHRASE = 'your_passphrase'
if __name__ == '__main__':
    # 1. 查询USDT余额
    balance = get_account_balance(API_KEY, SECRET_KEY, PASSPHRASE, ccy='USDT')
    print(f"USDT余额: {balance}")
    # 2. 挂一个限价买入单(注:这里价格远低于市价,仅用于测试)
    order_result = place_limit_order(API_KEY, SECRET_KEY, PASSPHRASE, 
                                     inst_id='BTC-USDT', side='buy', 
                                     price='20000', sz='0.001')
    print(f"订单结果: {order_result}")

常见错误处理:

  • 如果返回"code":"50013",说明签名错误,请检查Secret Key是否复制正确。
  • 如果返回"code":"51119",表示IP白名单限制,请在欧易交易所下载后台添加你的公网IP。
  • 如果返回"code":"51020",说明余额不足或最小下单量不符合要求。

安全与优化建议

  • 绝对不要将API Key和Secret Key直接写入代码或推送到GitHub,建议使用环境变量或.env文件加载。
  • 为API设置交易限额,比如每日最大转账量,减少被盗损失。
  • 脚本中加入速率限制,欧易API对普通用户的频率限制为每秒20次请求,超出会返回429错误。
  • 记录日志并使用重试机制:当网络波动导致请求失败时,自动重试2-3次。

如需更高级功能(如WebSocket订阅实时行情、多账户资金归集),可参考欧易官方文档,若你尚未拥有API密钥,请先访问欧易交易所下载完成注册。


常见问答(FAQ)

Q1:API申请后多久生效?
A:在欧易官网创建API并设置权限后,立即生效,但如果启用了IP白名单,需确保你的请求IP在白名单内,否则会拒绝连接。

Q2:Python脚本报错“无效签名”怎么办?
A:检查两点:

  1. Secret Key是否复制了开头或结尾的空格。
  2. 请求的request_path是否与签名时一致(注意大小写)。
    可参考本文的签名函数逐行验证。

Q3:能否用API实现网格交易或定投?
A:当然可以,欧易API支持限价单和市价单,通过编写循环策略即可实现定期买入或价格区间挂单,但请注意:现货交易需确保账户有足够资金,合约交易需注意爆仓风险,建议先在测试网模拟运行。

Q4:如何获取API文档?
A:欧易官方提供了完整的REST API文档,包含所有接口参数与错误码说明,建议按需查阅。


通过以上教程,你已掌握了欧易API的申请方法与Python交易脚本的基础写法,从认证签名到实际下单,每一步都需谨慎,你可以开始搭建自己的量化交易系统了,祝交易顺利!

标签: 欧易API Python交易脚本

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