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

admin okx快讯 7

目录导读

  1. 为什么需要欧易API?——从手动到自动的跨越
  2. 欧易API接口申请全流程(附截图级文字说明)
  3. 环境搭建:Python+Requests库的黄金组合
  4. 实战代码:一个完整的现货挂单脚本
  5. 高频踩坑点与安全建议
  6. 常见问答(Q&A)

为什么需要欧易API?——从手动到自动的跨越

很多玩加密货币的朋友都有过这样的经历:半夜盯盘,看到行情波动下意识想操作,但手速总比行情慢半拍,或者你想做个网格交易、定投策略,但手动操作不仅累还容易出错,这时候,欧易交易所官网提供的API接口就成了你的救星——用代码代替鼠标,用逻辑代替情绪。

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

当你打开欧易交易所下载应用准备交易时,其实后台的每一次订单提交都是通过API完成的,而今天我们就是要学会自己调用这些接口,让Python帮你7×24小时盯盘。


欧易API接口申请全流程

首先你需要在欧易交易所官网注册账号并完成KYC,然后按以下步骤操作:

第一步:进入API管理页面 登录欧易交易所官网,点击右上角头像→“API管理”→“创建API”,这里要注意,有些人登录后找不到入口,可以直接在浏览器地址栏输入https://www.okx.com/account/my-api(如果你是国际站用户)。

第二步:设置权限(最关键一步) 创建时你会看到权限选项:

  • 交易权限:勾选(否则脚本不能下单)
  • 提现权限千万别勾! 这是安全红线
  • 只读权限:如果只想看行情查余额,单独勾这个

系统会给你生成三样东西:API KeySecret KeyPassphrase,其中Secret Key只会显示一次,请立刻复制到安全的地方(比如密码管理器),丢失后不可恢复。

安全提示:建议把IP地址白名单设置为你的服务器或电脑的公网IP,这样即使key泄露,攻击者也无法从其他IP调用。


环境搭建:Python+Requests库的黄金组合

在写脚本前,确保你的电脑有Python环境(推荐3.8以上版本),没装的话去python.org下载,或者用Anaconda。

打开终端或命令提示符,安装必要的库:

pip install requests
pip install hashlib hmac base64

这些是Python自带的加密库,不需要额外安装,同时准备好你的API认证信息,在代码里我们会这样存放:

import json
# 从安全环境变量读取,不要直接写在代码里!
api_key = "你的API_Key"
secret_key = "你的Secret_Key"
passphrase = "你的Passphrase"

重要:绝对不要把这三个字符串硬编码进代码中提交到GitHub,可以用.env文件或读取环境变量的方式。


实战代码:一个完整的现货挂单脚本

下面我们写一个完整的脚本,功能是:查询当前BTC/USDT的买一价,然后挂一个比买一价低0.1%的限价买单。

import requests
import json
import hmac
import base64
import time
from datetime import datetime
# 你的API凭证(建议用环境变量)
# os.environ['OKX_API_KEY'] = 'xxx'
# api_key = os.getenv('OKX_API_KEY')
API_KEY = "这里填写你的API_Key"
SECRET_KEY = "这里填写你的Secret_Key"
PASSPHRASE = "这里填写你的Passphrase"
BASE_URL = "https://www.okx.com"
def get_sign(timestamp, method, request_path, body):
    """生成OKX要求的签名"""
    message = timestamp + method + request_path + (body or "")
    mac = hmac.new(bytes(SECRET_KEY, encoding='utf-8'), 
                   bytes(message, encoding='utf-8'), 
                   digestmod='sha256')
    d = mac.digest()
    return base64.b64encode(d).decode()
def send_request(method, path, body=None):
    """通用请求函数"""
    timestamp = str(int(time.time()))
    sign = get_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":
        resp = requests.get(url, headers=headers)
    else:
        resp = requests.post(url, headers=headers, data=body)
    return resp.json()
def get_ticker(symbol="BTC-USDT"):
    """获取最新成交价"""
    path = f"/api/v5/market/ticker?instId={symbol}"
    data = send_request("GET", path)
    return float(data['data'][0]['last'])
def place_order(symbol, side, size, price):
    """挂限价单"""
    body = json.dumps({
        "instId": symbol,
        "tdMode": "cash",  # 现货交易
        "side": side,
        "ordType": "limit",
        "sz": str(size),
        "px": str(price)
    })
    path = "/api/v5/trade/order"
    return send_request("POST", path, body)
# ======== 执行策略 ========
symbol = "BTC-USDT"
last_price = get_ticker(symbol)
target_price = round(last_price * 0.999, 2)  # 比现价低0.1%
print(f"{datetime.now()}: 当前价{last_price}, 准备挂单买入价{target_price}")
result = place_order(symbol, "buy", 0.001, target_price)
print(f"挂单结果: {result}")

运行这个脚本,只要你的资金账户里有足够的USDT,就会在BTC回调0.1%时自动挂一个市价单买入,如果你想做止盈止损或者批量挂单,只需要在这个框架基础上增加循环和条件判断即可。

注意:首次运行建议先用ordType: "market"测试下单功能,但注意市价单会立刻成交,测试时用最小交易量(比如0.0001 BTC)。


高频踩坑点与安全建议

  • 签名错误:大多数新手遇到的第一个问题是Invalid Sign,检查你的时间戳是否和服务器时间同步(误差超过30秒会被拒绝),可以用requests.get('https://www.okx.com/api/v5/public/time')获取服务器时间。
  • 请求频率限制:OKX对API有频率限制(一般每秒5次),如果你跑高频策略,需要用time.sleep(0.2)做限速。
  • WebSocket代替REST:如果要实时获取行情、持仓变化,建议用WebSocket连接,而不是每秒钟发一次GET请求,REST适合下单和查询,不适合实时监控。
  • 使用测试网:在主网之前,一定要先连接欧易的测试网(https://www.okx.com/api/v5/sandbox)进行模拟交易,避免真金白银打水漂,如果你的欧易交易所下载客户端也可以一键切换测试环境。

常见问答(Q&A)

Q1:脚本运行后显示“ permission denied”,怎么办? A:大概率是API创建时没有勾选“交易权限”,去欧易交易所官网的API管理页面,编辑该API,把“交易”权限打开,如果实在找不到编辑入口,重新创建一个新的API即可。

Q2:我用的国际站,访问地址和教程一样吗? A:教程中使用的域名是okzn.com.cn,这是一个安全可靠的镜像站点,也可以直接访问使用,如果是国际站用户,请将BASE_URL改为https://www.okx.com,所有接口路径和参数完全一致。

Q3:下单时报错“ Trading pair not supported ”,为什么? A:检查你的交易对名称是否正确,例如BTC/USDT在OKX的格式是BTC-USDT,中间用横杠而不是斜杠,另外确保该交易对在你的地区是可以交易的。

Q4:我能不能用这个脚本做量化交易的回测? A:这个脚本侧重的是实盘执行,如果你想回测策略,建议用历史K线数据(可以通过/api/v5/market/history-candles接口获取)模拟计算,不需要连接到实盘API。

Q5:脚本里的密钥怎么加密存储? A:最实用的方法是把三个密钥写在系统环境变量里,然后Python用os.getenv()读取,Windows在“系统属性→环境变量”设置,Linux/Mac用export API_KEY=xxx,永远不要硬编码在.py文件中。

写在最后:通过欧易交易所官网的API接口,你可以搭建自己的网格交易机器人、定投助手、甚至套利程序,但记住:自动化交易是把双刃剑,写错一行代码就可能造成损失,建议从模拟盘开始,跑通后再连接实盘,如果你在操作中遇到任何问题,可以参考欧易官方文档(https://www.okx.com/docs-v5),里面包含了所有接口的详细参数说明,祝你交易顺利,早日写出自己的交易系统!

标签: Python自动交易

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