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

admin 欧易中心 1

目录导读

  1. 欧易API基础认知 – 了解API的作用与申请前提
  2. 欧易API接口申请全流程 – 从注册到权限配置
  3. Python环境搭建与依赖安装 – 快速准备好开发工具
  4. 编写第一个交易脚本 – 获取行情、下单与撤单
  5. 常见问题与问答 – 解决新手最易遇到的坑
  6. 安全与合规注意事项 – 保护API密钥与账户安全

欧易API基础认知

欧易(OKX)作为全球领先的数字资产交易平台,其API接口允许开发者以程序化方式执行交易操作,通过API,您可以实现自动交易、策略回测、市场数据抓取等功能,在开始编写Python交易脚本之前,您需要明确以下几点:

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

  • API类型:欧易提供REST API(查询、下单)和WebSocket API(实时行情推送)。
  • 权限分类:只读权限(查询余额、行情)、交易权限(下单、撤单)、资金权限(提币等)。
  • 申请条件:完成欧易交易所下载并完成身份认证(KYC)后即可申请。

核心优势:API交易速度远快于手动操作,且能24小时全天候执行策略。


欧易API接口申请全流程

步骤1:登录并进入API管理页面

欧易官方网站登录您的账户,点击右上角头像 → “API管理”。

步骤2:创建API Key

  • 点击“创建API Key”,填写名称(如“Python交易脚本”)。
  • 选择权限:建议开始仅勾选“读取”和“交易”,避免开启资金权限。
  • 设置IP白名单(强烈推荐):仅允许您的服务器或本地电脑IP访问。

步骤3:保存密钥信息

创建后,系统将生成:

  • API Key:公钥,用于标识身份。
  • Secret Key:私钥,用于签名认证,请立即妥善保存(不再显示)。
  • Passphrase:交易密码(部分接口需要)。

⚠️ 严禁将Secret Key、Passphrase泄露给他人或上传至公开仓库。


Python环境搭建与依赖安装

1 环境要求

  • Python 3.7+
  • 推荐使用虚拟环境(venv或conda)

2 安装核心库

打开终端,执行以下命令:

pip install requests hashlib hmac time json base64
  • requests:处理HTTP请求。
  • hashlibhmac:用于生成签名。
  • time:生成时间戳。

3 额外工具(可选)

pip install websocket-client  # WebSocket实时行情
ccxt                            # 统一加密货币交易接口库

编写第一个交易脚本:获取行情与下单

1 完整的Python交易脚本模板

以下脚本包含:获取账户余额、查询BTC/USDT最新价格、下单买入。

import requests
import hmac
import hashlib
import time
import json
import base64
# ======= 配置信息 =======
API_KEY = "您的API_Key"
SECRET_KEY = "您的Secret_Key"
PASSPHRASE = "您的Passphrase"
BASE_URL = "https://oe-okor.com.cn"  # 请替换为实际交易所域名
# ======= 签名生成函数 =======
def generate_signature(timestamp, method, request_path, body=""):
    if method == "GET":
        message = timestamp + method + request_path
    else:
        message = timestamp + method + request_path + body
    mac = hmac.new(
        bytes(SECRET_KEY, encoding='utf8'),
        bytes(message, encoding='utf8'),
        digestmod='sha256'
    )
    return base64.b64encode(mac.digest()).decode()
# ======= 发送请求函数 =======
def send_request(method, path, body=""):
    timestamp = str(int(time.time()))
    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)
    else:
        response = requests.post(url, headers=headers, data=body)
    return response.json()
# ======= 1. 查询账户余额 =======
def get_account_balance(currency="BTC"):
    path = "/api/v5/account/balance?ccy=" + currency
    return send_request("GET", path)
# ======= 2. 获取最新行情 =======
def get_ticker(instId="BTC-USDT"):
    path = "/api/v5/market/ticker?instId=" + instId
    return send_request("GET", path)
# ======= 3. 下市价买单 =======
def place_market_order(instId="BTC-USDT", side="buy", sz=0.001):
    body = {
        "instId": instId,
        "tdMode": "cash",      # 现货交易
        "side": side,
        "ordType": "market",   # 市价单
        "sz": str(sz)          # 数量(BTC数量)
    }
    path = "/api/v5/trade/order"
    return send_request("POST", path, json.dumps(body))
# ======= 主程序 =======
if __name__ == "__main__":
    print("=== 账户余额 ===")
    balance = get_account_balance("USDT")
    print(balance)
    print("\n=== BTC/USDT最新价格 ===")
    ticker = get_ticker("BTC-USDT")
    last_price = ticker['data'][0]['last']
    print(f"最新价格: {last_price} USDT")
    print("\n=== 下测试买单 ===")
    # 注意:此处会真实下单,请确保sz为小数量测试
    order_result = place_market_order("BTC-USDT", "buy", 0.001)
    print(order_result)

2 运行说明

  • API_KEYSECRET_KEYPASSPHRASE替换为您自己的密钥。
  • 首次运行时,建议将sz设为极小的测试数量(如0.001 BTC)。
  • 使用欧易交易所下载的测试网(sandbox)进行模拟交易更安全。

常见问题与问答

Q1:返回错误代码“signature error”怎么解决?
A:最常见原因是时间戳未对齐,请检查您的系统时间是否与服务器时间一致(误差需在30秒内),可通过curl https://oe-okor.com.cn/api/v5/public/time校准。

Q2:API Key具有哪些安全的设置?
A:建议:

  • 设置IP白名单,仅限您的服务器IP访问。
  • 仅开启所需的最低权限(只读+交易,不开资金权限)。
  • 定期更换API Key。

Q3:如何处理API请求频率限制?
A:欧易REST API的限频一般为每2秒60次请求,建议在脚本中添加time.sleep(0.1)控制请求间隔,或使用WebSocket获取实时数据。

Q4:为什么下单后没有成交?
A:市价单会以当前市场价格立即成交,但需要账户有足够的对应资产,请检查余额是否足够(包括手续费预留)。

Q5:能否在Python中实现限价单?
A:可以,将ordTypemarket改为limit,并添加px字段指定价格,例:

"ordType": "limit",
"px": "50000"   # 限价50,000 USDT

安全与合规注意事项

  1. 绝对不要硬编码密钥:建议使用环境变量(os.getenv("API_KEY"))或配置文件(.env)存储密钥,并加入.gitignore
  2. 使用HTTPS:确保所有请求均通过HTTPS发送,防止中间人攻击。
  3. 定期审计权限:如果API Key不再使用,立即在官网删除。
  4. 注意KYC合规:您的交易行为需符合所在司法管辖区的法规,特别是涉及自动交易的策略。

通过以上教程,您已经掌握了从申请欧易API到编写Python交易脚本的全流程,如需进一步学习,可查阅欧易官方API文档(需翻墙访问)或加入社区交流,开始打造您的第一个自动交易机器人吧!

标签: 欧易API Python交易脚本

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