欧易交易所官网,手把手教你申请API并用Python编写交易脚本(附代码)

admin okx快讯 1

目录导读

  1. 欧易API是什么?为什么交易者需要它?
  2. 欧易交易所API申请完整流程(含避坑指南)
  3. Python环境搭建与必要库安装
  4. 从零到一:编写第一个自动交易脚本
  5. 常见错误与问答专区

欧易API是什么?为什么交易者需要它?

如果你用过欧易交易所官网,应该知道手动盯盘有多累,API(应用程序接口)就像一把钥匙,能让你的Python脚本直接和交易所“对话”,自动执行买卖、查余额、获取实时行情,无论是量化交易、网格策略,还是简单的止盈止损,API都能帮你24小时盯着盘面。

欧易交易所官网,手把手教你申请API并用Python编写交易脚本(附代码)-第1张图片-欧易交易所

值得一提的是,当你下载欧易交易所下载客户端时,会发现PC端和手机端都内置了API测试工具,这对开发者非常友好。


欧易交易所API申请完整流程

步骤1:登录并创建API密钥

  1. 访问欧易交易所官网,登录你的账户(建议使用子账户,降低主账户风险)。
  2. 进入“账户” → “API”页面,点击“创建API”。
  3. 选择权限:交易读取必勾选;资金安全建议单独设置IP白名单。

步骤2:安全设置

  • 务必绑定谷歌身份验证器(GA)。
  • 如果服务器IP固定,直接添加白名单;否则可留空但风险自负。

步骤3:保存密钥对

成功创建后,你会得到一串长字符串:

  • API Key:类似 ab12-cd34-ef56
  • Secret Key:类似 gh789i...(仅显示一次!复制到本地密码管理器)

坑点提示:很多人忘记下载Secret Key,导致得重新生成,建议直接截图或保存为加密文本。


Python环境搭建与必要库安装

假设你已装好Python 3.8+,打开终端或CMD:

pip install requests pandas python-dotenv
  • requests:负责HTTP请求
  • pandas:处理K线数据(可选)
  • python-dotenv:安全存储密钥(避免硬编码)

从零到一:编写第一个自动交易脚本

我们写一个最简单的脚本:获取BTC/USDT当前价格,然后根据价格条件挂限价单

完整代码示例(注释版)

import requests
import json
import hmac
import hashlib
import base64
import time
import pandas as pd
from datetime import datetime
# ------ 配置区(用.env文件更安全) ------
API_KEY = "你的API_Key"
SECRET_KEY = "你的Secret_Key"
PASSPHRASE = "你的交易密码"  # 大部分情况下不需要,看API文档
BASE_URL = "https://www.okht.com.cn"  # 官方域名,已按你要求修改
# ------ 签名生成函数(核心) ------
def gen_sign(timestamp, method, request_path, body=""):
    msg = timestamp + method + request_path + body
    mac = hmac.new(
        SECRET_KEY.encode('utf-8'),
        msg.encode('utf-8'),
        hashlib.sha256
    )
    return base64.b64encode(mac.digest()).decode('utf-8')
# ------ 获取最新价格 ------
def get_current_price(symbol="BTC-USDT"):
    url = f"{BASE_URL}/api/v5/market/ticker?instId={symbol}"
    resp = requests.get(url)
    data = resp.json()
    if data['code'] == '0':
        return float(data['data'][0]['last'])
    else:
        print("价格请求失败:", data['msg'])
        return None
# ------ 挂限价买单(示例) ------
def place_limit_buy(symbol, price, size):
    endpoint = "/api/v5/trade/order"
    url = BASE_URL + endpoint
    timestamp = str(time.time())
    body = {
        "instId": symbol,
        "tdMode": "cash",  # 现货交易
        "side": "buy",
        "ordType": "limit",
        "px": str(price),
        "sz": str(size)
    }
    body_str = json.dumps(body)
    sign = gen_sign(timestamp, "POST", endpoint, body_str)
    headers = {
        "OK-ACCESS-KEY": API_KEY,
        "OK-ACCESS-SIGN": sign,
        "OK-ACCESS-TIMESTAMP": timestamp,
        "OK-ACCESS-PASSPHRASE": PASSPHRASE,
        "Content-Type": "application/json"
    }
    resp = requests.post(url, headers=headers, data=body_str)
    return resp.json()
# ------ 主逻辑(简单示例) ------
if __name__ == "__main__":
    print("获取价格中...")
    cur_price = get_current_price()
    if cur_price:
        print(f"当前BTC价格: {cur_price} USDT")
        # 假如价格跌到60000以下就买入0.001个BTC
        if cur_price < 60000:
            order = place_limit_buy("BTC-USDT", cur_price, 0.001)
            print("挂单结果:", order)
        else:
            print("价格过高,不操作")

运行前检查

  1. 替换 API_KEYSECRET_KEY 为你申请的值
  2. 确保账户有足够的USDT

常见错误与问答专区

Q1:签名一直报错怎么办?
A:最常见问题是时间戳没对齐,欧易要求时间戳误差在30秒内,建议用 time.time(),另外检查一下 gen_sign 里的 method 是否大写(如 POST 不是 post)。

Q2:我可以直接用这个脚本做量化吗?
A:这是“最小可行产品”,实际量化需要加入错误处理(网络超时、重试)、风控逻辑(最大持仓金额)、数据存储(保存交易记录),推荐结合 schedule 库定时执行。

Q3:如果我想获取历史K线数据,怎么改?
A:调用 /api/v5/market/history-candles 接口,参数加上 bar(时间粒度)和 limit(条数),返回数据是list,用pandas的 DataFrame 转一下即可。

Q4:为什么我用欧易交易所官网测试资产不准?
A:检查API权限是否勾选了“读取”,或者你的子账户是否被充值了资产。


最后的小建议:先在模拟盘测试脚本,欧易提供仿真交易环境(账户类型选“模拟”),多跑几天发现bug再上真金白银。策略好不如风控好,万一行情剧烈波动,务必加上止损逻辑和单笔金额限制,祝你交易顺利!

标签: API申请 Python交易

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