欧易API接口申请教程,手把手教你用Python写交易脚本,小白也能秒变量化大神

admin okx快讯 2

📖 目录导读

  1. 欧易API接口的价值 – 为什么量化交易必须掌握它?
  2. API密钥申请全流程 – 5分钟搞定你的第一组密钥
  3. Python环境准备 – 没有这些库,代码跑不动
  4. 基础交易脚本实战 – 从获取行情到挂单卖出的完整代码
  5. 常见问题Q&A – 新手最容易踩的5个坑

为什么说欧易API是量化交易的“入场券”?

很多朋友刚接触加密交易时,都习惯打开欧易交易所下载后在网页上手动买卖,一天盯盘12小时,手指都点酸了,但真正的交易老手早就用机器人自动执行策略了——而这一切的起点,就是欧易API接口

欧易API接口申请教程,手把手教你用Python写交易脚本,小白也能秒变量化大神-第1张图片-欧易交易所

简单说,API就是交易所给你的一把“远程遥控器”,通过它,你可以用Python代码直接读取实时行情、查询账户余额、甚至自动挂单撤单。学会申请和使用API,等于给你的交易系统装上了自动驾驶仪。

举个例子:你可以写一个脚本,当比特币价格跌破某条均线时,自动执行买入;当涨幅超过5%时自动卖出,整个过程不需要你动一根手指,哪怕你在睡觉,代码都在帮你赚钱——这就是API的魅力。


手把手申请欧易API密钥(附避坑要点)

📌 步骤1:登录欧易交易所官网

首先打开浏览器,进入欧易交易所官网(oklj.com.cn),如果你还没有账户,点击右上角“注册”完成手机或邮箱验证。提醒一下:建议使用谷歌邮箱或国内163邮箱,部分QQ邮箱可能被拦截验证码。

📌 步骤2:进入API管理页面

登录后,鼠标放在右上角头像处,在下拉菜单中选择“API管理”,如果你是第一次进入,系统会弹出一个风险提示,直接点击“继续创建”即可。

📌 步骤3:创建API密钥

点击“创建新的API”,你会看到三个关键选项:

  • 权限设置:初学者建议勾选“交易”和“读取”即可,注意:永远不要开启“提现”权限,这是为了防止API被盗后资产被转移。
  • IP绑定:强烈建议绑定你服务器的IP地址或家庭宽带的公网IP,如果你用的是动态IP且不熟悉绑定方法,先留空,但后续要尽快设置。
  • 随便写个名字,量化交易脚本1号”。

点击确认后,你会得到两串字符:Access Key(类似用户名)和 Secret Key(类似密码)。Secret Key只显示一次! 马上复制粘贴到安全的位置(比如一个加密的记事本或密码管理器),一旦关闭页面就再也看不到了。

💡 冷知识:很多人因为没保存Secret Key而被迫删除重创,浪费不少时间,建议同时截图保存到手机相册(但别传给任何人)。


Python脚本环境搭建(只需5分钟)

在写代码之前,你需要确保电脑上安装了以下环境:

  1. Python 3.8及以上版本(推荐3.9或3.10)
  2. pip包管理工具(安装Python时默认自带)
  3. 三个关键库requests(发送网络请求)、hmac + hashlib(API签名加密)、json(处理数据)

打开终端(Windows按Win+R输入cmd,Mac打开“终端”),依次执行:

pip install requests
pip install hashlib

hashlibhmac是Python内置库,无需安装;json也是内置的)


实战:一个能跑起来的Python交易脚本

下面是最核心的部分——一个完整的Python脚本,它可以完成“获取BTC/USDT最新价格 → 查询账户余额 → 如果余额足够就卖出一小部分BTC”这三个动作。

🐍 完整代码(复制后请替换密钥)

import requests
import json
import hmac
import hashlib
import time
import base64
# ====== 这里替换成你自己的密钥 ======
API_KEY = "你的Access Key"
SECRET_KEY = "你的Secret Key"
PASSPHRASE = "你在创建API时设置的密码短语"  # 很多新手漏了导致签名失败
# =====================================
# 基础URL(固定写法)
BASE_URL = "https://www.oklj.com.cn"  # 官方API端点
def get_timestamp():
    return str(int(time.time()))
def sign_message(timestamp, method, request_path, body=""):
    message = timestamp + method + request_path + body
    mac = hmac.new(
        bytes(SECRET_KEY, encoding='utf8'),
        bytes(message, encoding='utf8'),
        digestmod='sha256'
    )
    digest = mac.digest()
    return base64.b64encode(digest).decode()
def get_header(method, request_path, body=""):
    timestamp = get_timestamp()
    sign = sign_message(timestamp, method, request_path, body)
    return {
        "OK-ACCESS-KEY": API_KEY,
        "OK-ACCESS-SIGN": sign,
        "OK-ACCESS-TIMESTAMP": timestamp,
        "OK-ACCESS-PASSPHRASE": PASSPHRASE,
        "Content-Type": "application/json"
    }
# 获取BTC/USDT最新价格
def get_btc_price():
    request_path = "/api/v5/market/ticker?instId=BTC-USDT"
    response = requests.get(BASE_URL + request_path)
    if response.status_code == 200:
        data = response.json()
        return float(data['data'][0]['last'])
    else:
        return None
# 查询账户总权益(USDT本位)
def get_account_info():
    request_path = "/api/v5/account/balance"
    header = get_header("GET", request_path)
    response = requests.get(BASE_URL + request_path, headers=header)
    if response.status_code == 200:
        data = response.json()
        return data['data'][0]
    else:
        return None
# 市价卖出BTC(数量0.001个,只测试用)
def place_sell_order(size=0.001):
    body = {
        "instId": "BTC-USDT",
        "tdMode": "cash",  # 现货交易
        "side": "sell",
        "ordType": "market",
        "sz": str(size)
    }
    request_path = "/api/v5/trade/order"
    header = get_header("POST", request_path, json.dumps(body))
    response = requests.post(BASE_URL + request_path, headers=header, data=json.dumps(body))
    return response.json()
# ====== 主程序 ======
if __name__ == "__main__":
    print("🚀 开始执行欧易API交易脚本...")
    # 1. 获取当前价格
    price = get_btc_price()
    if price:
        print(f"当前BTC价格: ${price:,.2f}")
    else:
        print("❌ 获取价格失败!")
        exit()
    # 2. 查询账户
    account = get_account_info()
    if account:
        print("✅ 账户连接成功,权益信息已获取")
    else:
        print("❌ 账户查询失败,请检查密钥权限")
        exit()
    # 3. 模拟卖出(请先确保账户有足够BTC)
    print("⚠️ 即将执行0.001 BTC市价卖出的测试订单...")
    result = place_sell_order(0.001)
    if result.get('code') == '0':
        print(f"✅ 订单已提交,订单ID: {result['data'][0]['ordId']}")
    else:
        print(f"❌ 下单失败:{result.get('msg')}")

⚡ 运行与调试

  1. 将以上代码保存为 okx_trade.py
  2. 在终端运行:python okx_trade.py
  3. 如果报错签名错误,99%是PASSPHRASE写错了(创建API时设置的密码短语,不是交易所登录密码)

🛠️ 进阶提示:这段代码只是演示框架,你可以将get_btc_price()循环运行,结合均线策略自动买卖——这就是一个量化机器人雏形,有兴趣的同学可以搜索“欧易交易所下载官方SDK”,里面有更专业的WebSocket实时交易接口。


新手必看:5个高频问题Q&A

Q1:API密钥泄露了怎么办? A:立刻登录欧易交易所官网(oklj.com.cn)的API管理页面,点击“删除”该密钥,同时检查账户是否有异常交易,及时修改登录密码。绝对不要把你的密钥上传到GitHub公共仓库,已经有太多人因此被盗。

Q2:为什么我的签名总是报错(invalid signature)? A:三大原因:①PASSPHRASE填错了(不是登录密码);②时间戳和服务器时间差超过30秒,电脑时间要校准(右键系统时间→同步);③请求体body和签名时的body不一致,特别是POST请求必须用json.dumps(body)

Q3:我写了一个双均线策略,如何挂到服务器上24小时运行? A:建议买一台低配的云服务器(比如腾讯云轻量级,年费300元左右),把Python脚本用nohup命令后台运行,或者用supervisor管理进程,但要注意:没写止损逻辑的机器人可能让你爆仓,测试小额资金先跑两周。

Q4:欧易API有频率限制吗? A:有,普通交易接口每秒最多10次请求,行情接口不限但太频繁会临时封IP,你的脚本里加个time.sleep(0.1)就能避免。

Q5:为什么我调用了get_account_info却返回空数据? A:先检查API权限是否勾选了“读取”,再确认你的账户是否开通了对应的币种现货交易对,有些新注册的账户需要完成基础认证才能调用交易接口。


文末一句话

从手动盯盘到代码自动执行,你离专业交易员只差一个欧易API接口的距离,如果刚入门觉得代码逻辑复杂,不妨先把上面的示例跑通,再慢慢加入止盈止损、分批建仓等高级功能。自动化交易的核心不是代码,而是策略——代码只是把你赚钱的想法变成现实的那双手。

动动手指,复制代码,试起来吧!

标签: 欧易API Python交易脚本

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