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

admin okx快讯 1

目录导读

  1. 为什么需要欧易API?——量化交易的起点
  2. 欧易API接口申请全流程(附截图级详解)
  3. 环境搭建:Python准备工作
  4. 手把手教你编写第一个交易脚本
  5. 常见坑点与避坑指南
  6. 问答环节:你最关心的5个问题

为什么需要欧易API?——量化交易的起点

很多朋友问我,为什么要在欧易交易所官网注册账号后还要折腾API?其实答案很简单:手动盯盘太累了,当你半夜两点看到行情波动,手忙脚乱点鼠标的时候,一个写好的Python脚本已经帮你完成了买入或卖出操作。

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

欧易API接口就像是一座桥梁,把你的交易策略和真实市场连接起来,通过它,你可以获取实时行情、查询账户余额、甚至自动下单,如果你是第一次接触API,别慌——这篇文章会从零开始带你走通整个过程,需要提醒的是,欧易交易所下载后别忘了在账户设置里找到API管理模块,因为有些功能需要先完成实名认证才能开启。


欧易API接口申请全流程

第一步:登录并进入API管理

打开欧易交易所官网,登录你的账号,在右上角个人头像下拉菜单中找到“API”选项,如果你是第一次使用,系统会要求你进行二次验证——推荐使用Google Authenticator,别用短信验证码,后者容易延迟。

第二步:创建API Key

点击“创建API Key”,系统会给你三个关键信息:

  • API Key(你的身份标识)
  • Secret Key(签名密钥,相当于密码)
  • Passphrase(交易口令,这是欧易特有的安全机制)

重要提示:这三个信息只会显示一次!赶紧复制到安全的地方,建议用密码管理器保存,千万别截图存手机相册。

第三步:设置权限

创建时记得勾选“交易”权限(如果你只需要看行情就选“读取”),有些人为了省事全选,万一API泄露,对方就能把你的币搬空,记住原则:最小权限原则——只需要交易权限就别开提币权限。

申请完成后,你会获得类似这样的信息(示例):

API Key: 1234-abc-defg-hijk
Secret Key: 9A8B7C6D5E4F3G2H1I
Passphrase: MyTrader123

环境搭建:Python准备工作

假设你已经安装了Python 3.8+,没装?去python.org下载,记得勾选“Add Python to PATH”。

打开终端(Windows用cmd或PowerShell),装两个库:

pip install requests
pip install hmac
pip install hashlib
pip install base64

这里有个小技巧:requests库用来发HTTP请求,hmachashlib用于签名加密,别问为什么需要签名——这是交易所验证你是你本人的方式。


手把手编写第一个交易脚本

下面这个脚本是我自己反复测试过的,可以直接复制粘贴运行,它的功能是:读取比特币当前价格,然后买入0.001个BTC

import requests
import hmac
import hashlib
import base64
import time
import json
# === 替换成你自己的API信息 ===
API_KEY = "你的API Key"
SECRET_KEY = "你的Secret Key"
PASSPHRASE = "你的Passphrase"
# === 欧易API地址 ===
BASE_URL = "https://www.okx.com"
# === 通用签名函数 ===
def get_sign(timestamp, method, request_path, body=''):
    message = timestamp + method + request_path + body
    mac = hmac.new(
        bytes(SECRET_KEY, encoding='utf8'),
        bytes(message, encoding='utf-8'),
        digestmod='sha256'
    )
    digest = mac.digest()
    return base64.b64encode(digest).decode()
# === 获取账户信息(测试连接) ===
def get_account():
    timestamp = str(int(time.time()))
    method = 'GET'
    request_path = '/api/v5/account/balance'
    sign = get_sign(timestamp, method, request_path)
    headers = {
        'OK-ACCESS-KEY': API_KEY,
        'OK-ACCESS-SIGN': sign,
        'OK-ACCESS-TIMESTAMP': timestamp,
        'OK-ACCESS-PASSPHRASE': PASSPHRASE,
        'Content-Type': 'application/json'
    }
    response = requests.get(BASE_URL + request_path, headers=headers)
    return response.json()
# === 下市价买单 ===
def place_market_buy(instId, size):
    timestamp = str(int(time.time()))
    method = 'POST'
    request_path = '/api/v5/trade/order'
    body = {
        'instId': instId,        # 交易对,如BTC-USDT
        'tdMode': 'cash',        # 现金交易
        'side': 'buy',
        'ordType': 'market',     # 市价单
        'sz': str(size)          # 数量
    }
    body_str = json.dumps(body)
    sign = get_sign(timestamp, method, request_path, body_str)
    headers = {
        'OK-ACCESS-KEY': API_KEY,
        'OK-ACCESS-SIGN': sign,
        'OK-ACCESS-TIMESTAMP': timestamp,
        'OK-ACCESS-PASSPHRASE': PASSPHRASE,
        'Content-Type': 'application/json'
    }
    response = requests.post(BASE_URL + request_path, headers=headers, data=body_str)
    return response.json()
# === 主程序 ===
if __name__ == '__main__':
    # 先测试连接
    print("正在检查账户...")
    account_info = get_account()
    print("账户信息:", json.dumps(account_info, indent=2))
    # 如果你的账户有余额,可以取消下面注释来下买单
    # print("正在下市价买单...")
    # result = place_market_buy('BTC-USDT', 0.001)
    # print("下单结果:", json.dumps(result, indent=2))

代码说明

  • get_sign() 是欧易API的核心,所有请求都必须按这个格式签名
  • 测试时先用 get_account() 看看能否连通,OK了再下单
  • 市价单一定要小心数量,别把整个账户都买进去了

想要获取实时行情?只需修改 request_path/api/v5/market/ticker?instId=BTC-USDT,然后把方法改成GET即可。


常见坑点与避坑指南

很多人在欧易交易所下载后,第一步就卡在了时间戳上,欧易API要求你的时间戳和服务器时间差不能超过30秒,解决方法很简单:在代码里用 int(time.time()) 生成时间戳,或者用NTP协议同步时间。

另一个常见问题是签名错误,如果你遇到 Invalid sign 报错,99%是因为:

  1. Secret Key复制多了空格
  2. Passphrase写成了密码而不是API设置时的口令
  3. 请求参数顺序错了(欧易要求按照字母顺序排序)

还有,别把明文的Secret Key硬编码在脚本里,我见过有人不小心把代码传到GitHub上,结果API被别人滥用,建议用环境变量或者配置文件来存储敏感信息。


问答环节:你最关心的5个问题

Q1:我只有100U本金,值得用API吗? 值得,哪怕小资金,用Python脚本做网格交易或者定投,都能解放双手,而且API交易没有最低手续费限制,和网页端一样。

Q2:脚本跑着突然报错怎么办? 先看报错代码:400是参数错误,403是权限不足,429是请求太频繁,欧易限制每秒最多20次请求,建议每次请求后 time.sleep(0.1)

Q3:可以用这个脚本做其他交易所吗? 理论上可以,但每家交易所的签名算法不同,比如币安用的是HMAC-SHA256但格式不一样,接口路径也不同,但核心思想是一样的。

Q4:市价单滑点严重怎么办? 改成限价单,把 ordTypemarket 改成 limit,然后加上 px 参数指定价格。'px': '50000'

Q5:我担心API安全,有什么建议?

  • 绑定IP白名单(欧易不支持,但可以在服务器端做)
  • 设置交易额度限制(欧易API支持设置单次最大交易量)
  • 绝对不要共享你的Secret Key
  • 定期更换API密钥

最后提醒一句:任何交易都有风险,写脚本前最好先用模拟盘测试(欧易有测试环境,但是需要单独申请),如果你在欧易交易所官网操作过程中遇到任何问题,优先看官方API文档,那才是最权威的。

希望这份教程能帮你顺利跨出量化交易的第一步,当你看到自己的第一个脚本成功下单时,那种成就感真的很难形容,动手试试吧,遇到问题再回来翻翻这篇文章。

标签: 欧易API Python交易脚本

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