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

admin 欧易中心 1

目录导读


欧易API接口简介与申请流程

欧易(OKX)作为全球领先的数字资产交易平台,其API接口允许开发者通过程序化方式获取实时行情、执行交易操作及管理账户,申请API接口是自动化交易的第一步。

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

申请步骤:

  1. 登录欧易交易所官网,完成高级实名认证。
  2. 进入“账户” → “API” → “创建API密钥”。
  3. 填写权限:建议仅勾选“交易”与“读取”权限,避免不必要的资产风险。
  4. 保存API Key、Secret Key及Passphrase(密码短语),三者缺一不可。

注意事项:

  • 切勿将密钥明文上传到公开代码仓库或分享给第三方。
  • 建议绑定IP白名单,仅允许指定服务器访问。

Python环境配置与依赖库安装

编写交易脚本前,需要安装Python(推荐3.8+版本)及两个核心库:requests(HTTP请求)和hmac(签名生成)。

安装命令:

pip install requests

hmac为Python标准库,无需额外安装)

环境验证:
打开命令行输入python --version,确认版本号后即可进入代码编写阶段。


获取市场行情数据的实战脚本

以下示例演示如何通过欧易公开API获取BTC/USDT的最新成交价,该接口无需API密钥,适合新手测试。

import requests
import json
url = "https://www.okx.com/api/v5/market/ticker?instId=BTC-USDT"
response = requests.get(url)
data = response.json()
last_price = data['data'][0]['last']
print(f"最新BTC/USDT价格:{last_price} USD")

输出示例:
最新BTC/USDT价格:67500.2 USD

若需要获取其他交易对,只需修改instId参数即可,例如ETH-USDT


编写简单的下单交易函数

有API密钥后,即可实现自动化限价单,以下代码需替换为您的真实密钥(建议从欧易交易所下载处获取最新接口文档)。

import requests
import hmac
import base64
import json
import time
from datetime import datetime
API_KEY = "你的API_Key"
SECRET_KEY = "你的Secret_Key"
PASSPHRASE = "你的密码短语"
def get_timestamp():
    return datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%S.%f')[:-3] + 'Z'
def sign(message, secret):
    mac = hmac.new(bytes(secret, encoding='utf-8'), bytes(message, encoding='utf-8'), digestmod='sha256')
    return base64.b64encode(mac.digest())
def place_order(side, size, price):
    base_url = "https://www.okx.com"
    request_path = "/api/v5/trade/order"
    body = {
        "instId": "BTC-USDT",
        "tdMode": "cash",   # 现货交易
        "side": side,       # "buy" 或 "sell"
        "ordType": "limit", # 限价单
        "sz": str(size),
        "px": str(price)
    }
    timestamp = get_timestamp()
    message = timestamp + 'POST' + request_path + json.dumps(body)
    signature = sign(message, SECRET_KEY)
    headers = {
        "OK-ACCESS-KEY": API_KEY,
        "OK-ACCESS-SIGN": signature,
        "OK-ACCESS-TIMESTAMP": timestamp,
        "OK-ACCESS-PASSPHRASE": PASSPHRASE,
        "Content-Type": "application/json"
    }
    response = requests.post(base_url + request_path, headers=headers, json=body)
    return response.json()
# 示例:以65000 USDT买入0.01 BTC
result = place_order("buy", 0.01, 65000)
print(result)

运行后返回结果:

{"code":"0","data":[{"ordId":"123456789","clOrdId":"abc123","ts":"1712345678000"}]}

code":"0"表示订单提交成功。


安全注意事项与常见问题问答

Q1:申请API时,权限如何设置最安全?
A: 只勾选“读取”和“交易”权限,不勾选“提币”与“资金划转”,同时启用IP白名单限制服务器访问来源,确保即便密钥泄露也无法提取资产。

Q2:脚本中出现签名验证失败(signature invalid)怎么办?
A: 检查以下几点:

  • 时间戳格式是否为UTC且精确到毫秒。
  • Secret Key是否使用准确(区分大小写)。
  • 请求体(body)字符串必须与签名时一致,不能有多余空格或换行。

Q3:如何获取最新API文档和接口列表?
A: 访问欧易交易所官网的“开发者文档”栏目,或下载Python SDK示例代码可快速上手。

Q4:Python脚本能否实现网格交易或定投策略?
A: 完全可以,只需编写循环逻辑,定期检查行情并调用place_order函数,例如每隔5分钟通过API获取欧易交易所下载行情,若涨幅超过2%则自动卖出。

Q5:遇到限频(rate limit)错误如何解决?
A: 欧易API对单IP请求有每秒20次的限制,在脚本中使用time.sleep(0.05)增加间隔,或使用WebSocket接口实现实时推送。


通过以上教程,您已掌握从申请API密钥到编写Python交易脚本的完整链路,建议先用模拟盘测试策略稳定性,再逐步投入实盘资金,如需更高级的量化交易功能,可参考官网的REST API与WebSocket协议。

标签: Python交易脚本

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