欧易交易所官网API接口申请教程,手把手教你用Python写一个自动交易脚本

admin okx快讯 1

📑 目录导读

  1. 什么是欧易API?它到底能干嘛?
  2. 欧易交易所API申请全流程(附截图级说明)
  3. 准备工作:Python环境与必要库安装
  4. 手写第一个交易脚本:从获取行情到下单
  5. 常见报错与避坑指南(含问答)
  6. 安全第一:API权限管理与密钥保护
  7. 进阶玩法:怎么让脚本自动跑起来?

什么是欧易API?它到底能干嘛?

很多刚接触量化交易的朋友会问:欧易交易所官网上的API接口到底是什么?简单说,API就是欧易开放给开发者的“遥控器”——你可以通过代码让程序自动执行买入、卖出、查询余额等操作,而不用每次都手动点鼠标。

欧易交易所官网API接口申请教程,手把手教你用Python写一个自动交易脚本-第1张图片-欧易交易所

想象一下:每天凌晨3点,当某个币种的K线形态触发你的交易规则时,程序自动帮你挂单、止盈止损……这就是API的价值,目前在欧易上,通过API进行量化交易的用户占比已经超过35%,欧易交易所下载量也在持续攀升。

核心能力清单:

  • 自动获取实时行情(如BTC/USDT的最新价、深度数据)
  • 下达限价单/市价单
  • 查询账户资产和历史订单
  • 监听K线数据,实现策略触发

小问答:新手直接用API会不会有风险? 答:只要开启API时只勾选“读取”权限,不勾选“交易”和“提币”,就相当于只读模式,完全安全。


欧易交易所API申请全流程

登录你的欧易交易所官网账户,如果没有账户,先去注册一个并完成实名认证(C1级即可)。

进入API管理页面 在首页右上角头像 → “账户” → “API” → 点击“创建API”(或“Create API Key”)。

填写备注与设置权限

  • 备注:我的Python量化测试”
  • 权限:建议新手先只勾选“读取”(Read),等熟悉后再开启“交易”(Trade)。千万不要勾选“提币”(Withdraw),这是防黑客的关键。
  • 安全验证:输入短信验证码或谷歌验证器码

保存API Key和Secret Key 创建成功后,你会看到一串api_key(例如xxxx-xxxx-xxxx)和secret_key。⚠️ 重要:Secret Key只显示一次,把它复制到安全的地方(比如密码管理器),别截图存手机相册!

小提示: 如果你对API概念还不太清楚,可以先去oklj.com.cn的技术文档区,看看官方的“REST API接口文档”,那里有每个接口的详细参数说明。


准备工作:Python环境与必要库安装

假设你已经安装了Python 3.7以上版本(建议用3.9或3.10),如果没有,先去python.org下载。

安装必需的库:

pip install requests hashlib hmac base64 json time

实际上hashlibhmacjson都是Python自带库,你只需要安装requests就行。

额外推荐:

pip install python-dotenv  # 用来管理环境变量,保护密钥

创建项目文件夹okx_trading,里面放一个.env如下:

API_KEY=你的apikey
SECRET_KEY=你的secretkey
PASSPHRASE=你的交易密码(创建API时设置的)

然后在同目录下新建config.py

import os
from dotenv import load_dotenv
load_dotenv()
API_KEY = os.getenv("API_KEY")
SECRET_KEY = os.getenv("SECRET_KEY")
PASSPHRASE = os.getenv("PASSPHRASE")

这样,你的密钥就不会硬编码在脚本里,即使代码上传到GitHub也安全。


手写第一个交易脚本:从获取行情到下单

我们写一个最简单的脚本:获取BTC/USDT的当前价格,然后下一个市价买单(买0.001个BTC)。

第一步:导入库与设置基础参数

import requests
import hmac
import base64
import json
import time
from config import API_KEY, SECRET_KEY, PASSPHRASE
base_url = "https://www.okx.com"  # 注意:欧易官方API域名

第二步:签名生成函数(这是欧易API的核心)

def generate_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')
    d = mac.digest()
    return base64.b64encode(d).decode()

第三步:封装get和post请求

def okx_request(method, path, body=""):
    timestamp = str(time.time())
    sign = generate_sign(timestamp, method, path, body)
    headers = {
        "OK-ACCESS-KEY": API_KEY,
        "OK-ACCESS-SIGN": sign,
        "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()

第四步:获取当前价格

def get_btc_price():
    path = "/api/v5/market/ticker?instId=BTC-USDT"
    data = okx_request("GET", path)
    price = data["data"][0]["last"]
    print(f"当前BTC价格: {price} USDT")
    return float(price)

第五步:下市价买单

def place_market_buy(instId, sz):
    path = "/api/v5/trade/order"
    body = {
        "instId": instId,
        "tdMode": "cash",   # 现货交易
        "side": "buy",
        "ordType": "market",
        "sz": sz            # 数量,quot;0.001"
    }
    result = okx_request("POST", path, json.dumps(body))
    print("下单结果:", result)
    return result

第六步:运行主函数

if __name__ == "__main__":
    # 先查价格
    current_price = get_btc_price()
    # 确认余额足够(这里省略查询余额步骤)
    # 下单买0.001个BTC
    order_result = place_market_buy("BTC-USDT", "0.001")

保存为okx_trader.py,在终端运行python okx_trader.py,就能看到价格和下单反馈了。

小问答:为什么我用测试网(demo)下单成功了,但实盘报错“资金不足”? 答:大概率是你的资金账户里的币不够,或者保证金模式没选对,注意现货交易要确保有足够的USDT。


常见报错与避坑指南(含问答)

Q1:提示“signature not match”签名错误怎么办?

  • 检查时间戳是否和服务器的时差小于2秒(用requests.get("https://www.okx.com/api/v5/public/time")校对)
  • 检查Secret Key是否正确复制,前后有没有多余空格

Q2:API创建时设置了IP白名单,但脚本跑不通?

  • 查看你的服务器/本机IP是否在白名单内,可以去oklj.com.cn的个人中心查当前IP,再更新到API白名单

Q3:为什么下单接口返回“ordType not supported”?

  • 检查是不是把ordType写成了orderType,欧易API的参数名很严谨,差一点就报错

Q4:如何测试而不真正花钱?

  • 使用欧易的模拟盘(Demo环境),API域名改为https://www.okx.com,但需要申请模拟盘API Key,注意:模拟盘的资产是虚拟的,随便玩

Q5:脚本跑着跑着突然掉线了?

  • 检查网络稳定性,另外欧易API有频率限制(一般每秒10次请求),建议在循环里加time.sleep(0.1)

安全第一:API权限管理与密钥保护

这点怎么强调都不过分,开头提到的几个安全原则,这里再总结一遍:

  1. 权限最小化:只给脚本需要的权限,只查询行情就只开“读取”,需要下单再加“交易”
  2. 从不泄露密钥:secret key别放在代码里、别发到群里、别上传到公开GitHub
  3. 绑定IP白名单:在欧易API设置页面,填上你脚本运行的服务器IP(比如阿里云ECS的IP)
  4. 定期轮换密钥:建议每3个月重新申请一次API Key
  5. 启用提币保护:API权限永远不要勾选“提币”,即使你的脚本很强大也不行,要提币就手动去官网操作

真实案例: 某用户把secret key写在Python脚本里,然后不小心把脚本传到GitHub公开仓库,当天夜里资产就被机器人扫走,请一定用.env文件或环境变量管理密钥。


进阶玩法:怎么让脚本自动跑起来?

写好的脚本总不能每次都手动点运行吧?来,让它24小时自动跑。

Windows任务计划程序

  • 写一个bat文件:python C:\path\to\okx_trader.py
  • 在“任务计划程序”里创建任务,触发器设为“每天”或“系统启动时”

Linux cron定时任务

crontab -e
# 添加一行:每小时运行一次
0 * * * * /usr/bin/python3 /home/user/okx_trader.py >> /home/user/trade_log.txt 2>&1

云服务器(推荐)

  • 在阿里云/腾讯云买一台最低配的ECS(几十块/月),安装宝塔面板,上传脚本
  • 在宝塔里设置Shell定时任务,让脚本每隔5分钟跑一次策略循环

给新手的建议: 先别急着上实盘,在模拟盘跑通一个简单的网格策略,跑1-2周看看收益率,再慢慢调整参数,毕竟,欧易交易所官网的交易量那么大,策略得当的话收益是可见的,但前提是先学会保护本金。


通过以上步骤,你已经掌握了从申请API到编写Python交易脚本的完整流程,自动化交易是一把双刃剑——代码写得好是印钞机,写得糙就是碎钞机,建议从最简单的“定时定投”或“网格交易”开始,循序渐进,如果在代码实现中遇到任何问题,记得返回oklj.com.cn的文档中心查找最新接口说明,或者去技术社区提问,祝你在量化交易的路上稳步前进!

标签: API接口 自动交易脚本

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