Kraken交易所API接口详解:认证、签名与Python示例

Kraken 交易所 API 接口文档详解教程

概述

Kraken 交易所提供了一套功能强大的应用程序编程接口(API),赋能开发者通过代码与交易所进行交互。这些API接口覆盖了数据检索、订单管理、资金操作等关键功能,允许自动化交易策略的执行和第三方应用的集成。本文档将深入剖析Kraken API的架构和功能模块,并提供详尽的使用指南,旨在帮助开发者快速掌握API的使用方法,高效地构建基于Kraken平台的应用程序,充分利用其提供的丰富资源和强大功能。

认证与授权

在使用 Kraken API 之前, 认证与授权 是至关重要的步骤。这确保了只有授权用户才能访问您的账户和执行交易。整个过程涉及生成一个 API 密钥对 ,其中包括一个公共密钥(API Key)和一个私有密钥(Secret Key)。公共密钥用于识别您的账户,而私有密钥则用于对您的 API 请求进行签名,以证明请求的真实性和完整性。

为了保障安全性,您需要在 Kraken 网站的账户设置中创建和管理您的 API 密钥对。 创建密钥时,务必设置适当的权限,仅授予 API 密钥执行所需操作的权限。 例如,如果您只需要读取账户余额,则不要授予交易权限。 这样做可以最大限度地降低 API 密钥泄露可能造成的损害。定期轮换您的 API 密钥是最佳实践。

在发送 API 请求时,您需要在请求头中包含必要的 签名信息 。 签名的生成过程通常涉及使用您的私有密钥对请求数据进行哈希处理。 具体的签名算法和所需包含的请求头字段(例如 API-Key API-Sign )会在 Kraken API 的官方文档中详细说明。务必仔细阅读文档并按照说明进行操作,以确保您的请求能够正确认证。

错误的认证和授权配置是 API 使用中常见的错误来源。 请仔细检查您的 API 密钥是否正确,并且您的签名算法是否与 Kraken API 的要求一致。 使用调试工具可以帮助您识别和解决认证问题。 始终注意保护您的私有密钥,切勿将其存储在不安全的位置或与他人分享。 一个安全性高的私有密钥管理方案是安全API访问的关键。

生成 API 密钥对

  1. 登录 Kraken 账户。 使用您的用户名和密码,通过 Kraken 官方网站安全地登录您的账户。请务必验证您访问的是真实的 Kraken 网站,以避免钓鱼攻击。
  2. 导航至 "Settings" -> "API" 页面。 登录后,在用户界面中找到 "Settings"(设置)选项,通常位于账户菜单或用户资料设置中。点击 "Settings" 后,选择 "API" 选项卡或链接,进入 API 管理页面。
  3. 点击 "Generate New Key" 按钮。 在 API 页面,您会找到一个 "Generate New Key"(生成新密钥)或类似的按钮。点击此按钮开始创建新的 API 密钥对。
  4. 为密钥命名,并设置必要的权限(例如,查询账户余额、交易等)。 为您的 API 密钥指定一个易于识别的名称,以便将来管理和识别。然后,根据您的需求,为该密钥分配特定的权限。例如,如果您只需要查询账户余额,则只授予 "查询账户余额" 的权限;如果需要进行交易,则授予 "交易" 权限。仔细选择权限是确保账户安全的关键。
  5. 安全保存生成的 API Key 和 Private Key。Private Key 务必妥善保管,切勿泄露。 生成 API 密钥后,系统会显示 API Key(公钥)和 Private Key(私钥)。API Key 用于标识您的应用程序或服务,而 Private Key 用于对交易进行签名和授权。务必将这两个密钥安全地保存下来,最好是将它们存储在加密的密码管理器中或离线存储。请特别注意,Private Key 绝不能泄露给他人,否则可能导致您的账户被盗用。如果您怀疑 Private Key 已经泄露,请立即撤销该密钥并生成新的密钥对。

请求签名

Kraken API 采用 HMAC-SHA512 算法来保障请求的安全性,通过对每个请求进行签名,服务器可以验证请求的来源和完整性,防止恶意篡改和重放攻击。下面详细介绍签名生成过程:

  1. 创建 Nonce(随机数): Nonce 是一个至关重要的安全参数,它是一个单调递增的整数,主要用于防止重放攻击。重放攻击是指攻击者截获合法的请求并重复发送,从而达到欺骗服务器的目的。为了保证 Nonce 的唯一性和递增性,强烈建议使用 Unix 时间戳(以毫秒为单位)作为 Nonce 的值。例如,当前时间戳为 1678886400000 毫秒,则可以使用该值作为 Nonce。每次发起新的请求,Nonce 的值都必须大于上一次请求的 Nonce 值。
  2. 构建 POST 数据字符串: 在使用 POST 方法发送请求时,需要将所有 POST 参数构建成一个字符串,该字符串将作为签名的一部分。构建过程如下:将所有 POST 参数按照字母顺序进行排序。将排序后的参数名和参数值使用等号(=)连接起来,形成 key=value 的形式。将所有 key=value 对使用 “&” 符号连接成一个完整的字符串。例如,如果 POST 参数包含 pair=ETHUSD type=buy ,则构建的 POST 数据字符串应为 pair=ETHUSD&type=buy 。需要注意的是,参数值必须进行 URL 编码,以确保特殊字符能够正确传输。

计算签名:

  • 使用您的私钥(Private Key)对用于生成签名的字符串进行加密操作。该字符串由两部分组成:一个随机数 Nonce 和您要通过 POST 请求发送的数据字符串。
  • 加密算法采用 HMAC-SHA512,这是一种带密钥的哈希函数,能确保数据的完整性和来源的可靠性。HMAC (Hash-based Message Authentication Code) 结合了哈希算法(SHA512)和密钥,提供更强的安全性,防止消息被篡改或伪造。
  • 对通过 HMAC-SHA512 加密后得到的二进制结果进行 Base64 编码。Base64 是一种将二进制数据转换为 ASCII 字符串的编码方式,便于在网络上传输和存储。编码后的签名将作为请求的一部分发送到服务器。
添加签名到请求头: 在 HTTP 请求头中添加 "API-Key" 和 "API-Sign" 字段。"API-Key" 的值是你的 API Key。"API-Sign" 的值是计算得到的签名。

以下是一个 Python 示例,演示如何生成签名:

import hashlib import hmac import base64 import time import urllib.parse

apikey = 'YOURAPIKEY' apisecret = 'YOURAPISECRET'

def generatesignature(uripath, data, secret): postdata = urllib.parse.urlencode(data) encoded = (str(data['nonce']).encode('utf-8') + postdata.encode('utf-8')) message = uri_path.encode() + hashlib.sha256(encoded).digest() mac = hmac.new(base64.b64decode(secret), message, hashlib.sha512) sigdigest = base64.b64encode(mac.digest()) return sigdigest.decode()

def getheaders(uripath, data, apikey, apisecret): signature = generatesignature(uripath, data, apisecret) return { 'API-Key': apikey, 'API-Sign': signature }

示例用法

此示例展示了如何使用Python向Kraken交易所的私有API端点 /0/private/Balance 发送请求以查询账户余额。

定义API端点的URI路径:

uri_path = '/0/private/Balance'

然后,构造包含nonce值的数据字典。Nonce是一个单调递增的数字,用于防止重放攻击。通常使用当前时间戳的毫秒数:

data = {
    'nonce': str(int(time.time() * 1000))
}

接下来,调用 get_headers 函数,该函数(未在此处给出具体实现)负责生成包含正确签名信息的HTTP头部。此函数需要API路径、数据、API密钥和API私钥作为输入,以生成符合Kraken API要求的签名:

headers = get_headers(uri_path, data, api_key, api_secret)

为了发送HTTP请求,我们需要导入 requests 库:

import requests

构造完整的API URL,它是Kraken API的基本URL与URI路径的组合:

url = 'https://api.kraken.com' + uri_path

使用 requests.post 方法向API端点发送POST请求。将构造的URL、HTTP头部和数据作为参数传递给该方法:

response = requests.post(url, headers=headers, data=data)

打印服务器返回的响应。通常,你会解析JSON响应以获取账户余额等信息:

print(response.text)

注意:此代码片段需要预先定义 api_key api_secret get_headers 函数。 get_headers 函数的正确实现对于成功认证和访问Kraken私有API至关重要。你需要仔细阅读Kraken API文档,了解如何正确生成签名。

公共 API

公共应用程序编程接口 (API) 提供对加密货币市场相关数据的访问权限,并且无需任何形式的身份验证。这意味着开发者和分析师可以自由地查询和获取实时或历史的市场信息,例如交易对的价格、交易量、订单簿深度等,而无需创建账户、申请 API 密钥或进行任何额外的认证步骤。公共 API 设计旨在促进数据共享和应用开发,降低数据获取的门槛,使得更多的用户能够参与到加密货币市场的分析和研究中。开发者可以利用这些数据构建各种应用,如价格追踪器、交易机器人、数据分析工具等。需要注意的是,虽然公共 API 易于访问,但通常会存在速率限制,以防止滥用和确保服务的稳定性。因此,在使用公共 API 时,需要仔细阅读 API 文档,了解速率限制的具体规定,并采取相应的措施,例如合理地安排请求频率、使用缓存机制等。

获取服务器时间 (Time)

  • Endpoint: /0/public/Time
  • Method: GET
  • Description: 返回服务器当前时间,精确到秒级。该接口主要用于客户端时间同步,校验数据包时效性。
  • Response:
    • unixtime : Unix 时间戳,表示自1970年1月1日 00:00:00 UTC到当前时间的秒数。这是一个标准的、跨平台的表示时间的方式,方便程序进行时间计算和比较。
    • rfc1123 : RFC 1123 格式的时间字符串。 遵循 RFC 1123 规范,提供人类可读的时间表示,例如 "Tue, 03 Oct 2023 10:30:00 GMT"。 这种格式常用于HTTP头部,方便不同系统之间的时间信息交换。

获取资产信息 (Assets)

  • Endpoint: /0/public/Assets
  • Method: GET
  • Parameters:
    • asset : (可选) 指定要查询的资产代码。可以一次查询多个资产,通过逗号分隔不同的资产代码。例如, asset=XBT,ETH 将会返回比特币(XBT)和以太坊(ETH)的资产信息。 如果省略此参数,则返回所有可用资产的信息。资产代码通常是交易所使用的标准缩写,需要查阅交易所的文档获取准确的代码。
  • Description: 返回可用资产的详细信息。 此接口用于查询交易所支持的各种加密货币和法币的属性。 这些信息对于理解资产的性质、精度以及如何在交易所进行交易至关重要。
  • Response: 包含每个资产的详细信息,以 JSON 格式返回。 返回的数据结构包含每个资产的键值对,其中键是资产的代码。 具体信息包括:
    • altname : 资产的替代名称,通常是交易所内部使用的名称或者更易于识别的名称。例如,比特币的 altname 可能是 XBT
    • aclass : 资产类别,用于区分不同类型的资产。常见的类别包括 currency (货币) 和其他衍生品类型。
    • decimals : 显示精度,表示该资产可以分割成多少个小数位。 例如, decimals=8 表示该资产可以分割到小数点后8位。 这个参数影响交易和余额显示。
    • display_decimals : 用于显示的精度,通常与 decimals 相同或更小。 该参数决定在用户界面上显示的资产精度,可能小于实际存储的精度,以方便用户阅读。 例如,虽然资产的 decimals 是 8,但 display_decimals 可能是 2,只显示到小数点后两位。

获取交易对信息 (AssetPairs)

  • Endpoint: /0/public/AssetPairs
  • Method: GET
  • Parameters:
    • pair : (可选) 要查询的交易对。可以通过指定一个或多个交易对代码来过滤结果,多个交易对代码之间使用英文逗号分隔。例如: XBTUSD,ETHUSD 。如果不指定此参数,则返回所有可用的交易对信息。
  • Description: 返回可用的交易对信息,包括交易对的详细规格、交易费用、杠杆信息以及保证金要求。此接口允许开发者获取交易所支持的所有交易对的完整列表,以及每个交易对的关键参数,便于程序化交易和风险管理。
  • Response: 包含每个交易对的详细信息。响应数据结构是一个JSON对象,其中每个键是交易对的规范名称(例如: XBTUSD ),对应的值是一个包含以下字段的对象:
    • altname : 交易对的替代名称,通常是一个更易读或更常用的名称,例如: XBTUSD 的替代名称可能是 Bitcoin/US Dollar
    • aclass_base : 基础资产类别,通常为 "currency"。
    • base : 基础资产代码,例如: XBT (比特币)。
    • aclass_quote : 报价资产类别,通常为 "currency"。
    • quote : 报价资产代码,例如: USD (美元)。
    • lot : 最小交易单位,表示交易的最小数量。例如: 1.0 表示最小交易量为 1 个单位的基础资产。
    • pair_decimals : 交易对价格精度,表示价格小数点后的位数。例如: 1 表示价格精确到小数点后 1 位。
    • lot_decimals : 最小交易单位精度,表示交易量小数点后的位数。例如: 0 表示交易量必须是整数。
    • lot_multiplier : 交易单位倍数,用于计算订单的实际交易量。
    • leverage_buy : 可用买入杠杆,是一个数组,包含允许的杠杆倍数。例如: [2, 3, 4, 5] 表示允许的杠杆倍数为 2x, 3x, 4x 和 5x。
    • leverage_sell : 可用卖出杠杆,与 leverage_buy 类似,表示允许的卖出杠杆倍数。
    • fees : 交易手续费等级,是一个二维数组,表示不同的交易量等级对应的手续费率。例如: [[0, 0.0026], [50000, 0.0024], [100000, 0.0022]] 表示交易量小于 50000 时手续费率为 0.26%,交易量在 50000 到 100000 之间时手续费率为 0.24%,交易量大于 100000 时手续费率为 0.22%。
    • fees_maker : 挂单手续费等级,与 fees 类似,但表示挂单(maker)的手续费率。挂单是指在订单簿中挂出的,不会立即成交的订单。
    • fee_volume_currency : 手续费计算的货币,通常与报价资产相同。
    • margin_call : 保证金追缴比例,表示当账户保证金比例低于此值时,会触发保证金追缴通知。通常以百分比表示,例如: 80 表示 80%。
    • margin_stop : 强制平仓比例,表示当账户保证金比例低于此值时,会强制平仓以防止进一步的损失。通常以百分比表示,例如: 40 表示 40%。

获取市场行情 (Ticker)

  • Endpoint: /0/public/Ticker
  • Method: GET
  • Parameters:
    • pair : 必选 。指定要查询的交易对,多个交易对之间使用逗号分隔。例如: XBTUSDT,ETHUSDT 。交易对的代码需要符合交易所的命名规则,错误的交易对代码将导致请求失败。
  • Description: 返回指定交易对的实时市场行情数据。通过此接口,可以获取包括买一价、卖一价、最新成交价、成交量、平均价格、交易笔数、最高价、最低价和开盘价等关键的市场指标。这些数据对于进行技术分析、制定交易策略以及评估市场风险至关重要。
  • Response: 包含每个交易对的详细行情数据。返回值是一个JSON对象,其中每个交易对的代码对应一个包含以下数据的对象:
    • a : Ask (卖出) 价格数组。包含以下元素:
      • price : 当前最佳卖出价格。
      • whole lot volume : 以完整交易单位计价的卖出量。
      • lot volume : 以小数交易单位计价的卖出量。
    • b : Bid (买入) 价格数组。包含以下元素:
      • price : 当前最佳买入价格。
      • whole lot volume : 以完整交易单位计价的买入量。
      • lot volume : 以小数交易单位计价的买入量。
    • c : 最后一笔成交价格数组。包含以下元素:
      • price : 最新成交的价格。
      • lot volume : 最新成交的交易量。
    • v : 过去 24 小时交易量数组。包含以下元素:
      • today : 今日(从UTC午夜开始)的交易量。
      • last 24 hours : 过去 24 小时的交易量。
    • p : 过去 24 小时平均价格数组。包含以下元素:
      • today : 今日(从UTC午夜开始)的平均价格。
      • last 24 hours : 过去 24 小时的平均价格。
    • t : 交易笔数数组。包含以下元素:
      • today : 今日(从UTC午夜开始)的交易笔数。
      • last 24 hours : 过去 24 小时的交易笔数。
    • l : 过去 24 小时最低价格数组。包含以下元素:
      • today : 今日(从UTC午夜开始)的最低价格。
      • last 24 hours : 过去 24 小时的最低价格。
    • h : 过去 24 小时最高价格数组。包含以下元素:
      • today : 今日(从UTC午夜开始)的最高价格。
      • last 24 hours : 过去 24 小时的最高价格。
    • o : 今日开盘价。通常指UTC午夜时的价格。

获取 K 线图数据 (OHLC)

  • Endpoint: /0/public/OHLC
  • Method: GET
  • Parameters:
    • pair : 必选 。指定要查询的交易对,例如 "XXBTZUSD" (比特币/美元)。该参数区分大小写,请确保输入正确的交易对代码。
    • interval : 可选 。K 线图的时间间隔,单位为分钟。支持的时间间隔包括 1, 5, 15, 30, 60 (1小时), 240 (4小时), 1440 (1天), 10080 (1周), 和 21600 (15天)。如果未指定,服务器将使用默认的时间间隔。
    • since : 可选 。Unix 时间戳,用于指定返回数据的起始时间。例如, 1678886400 代表 2023年3月15日 00:00:00 UTC。如果省略此参数,将返回最近的 K 线数据。
  • Description: 该接口用于检索指定交易对的历史 K 线图 (OHLC) 数据。K 线图是技术分析中常用的工具,可以帮助交易者识别价格趋势和潜在的交易机会。 通过指定交易对和时间间隔,您可以获得不同时间粒度的价格走势信息。
  • Response: 成功请求后,服务器将返回一个包含 K 线数据的数组。每个元素代表一个 K 线,包含以下字段:
    • time : K 线开始的 Unix 时间戳(秒)。例如, 1678886400
    • open : 该时间段内的开盘价。
    • high : 该时间段内的最高价。
    • low : 该时间段内的最低价。
    • close : 该时间段内的收盘价。
    • vwap : 成交量加权平均价,反映了该时间段内的平均交易价格。计算方法是将每笔交易的价格乘以其交易量,然后将所有这些乘积加起来,再除以总交易量。
    • volume : 该时间段内的总成交量。
    • count : 该时间段内的交易次数。

获取市场深度 (Depth)

  • Endpoint: /0/public/Depth
  • Method: GET
  • Parameters:
    • pair : 必选 ,指定要查询的交易对。例如, XXBTZEUR 代表比特币/欧元交易对。交易对的格式通常由两个资产代码组成,分别代表基础货币和报价货币。
    • count : (可选) 返回的订单簿深度条数。这是一个整数值,用于限制返回的买单和卖单的数量,默认情况下,服务器可能会返回一定数量的深度数据。如果未提供此参数,则服务器将返回默认数量的条目。指定较小的数值可以减少响应时间和数据传输量,而较大的数值可以提供更全面的市场深度视图。
  • Description: 返回指定交易对的市场深度数据,即订单簿信息。订单簿是当前市场上所有未成交买单(买入报价)和卖单(卖出报价)的集合。通过分析市场深度数据,用户可以了解市场上买方和卖方的力量对比,以及不同价格水平的流动性情况,从而辅助交易决策。
  • Response: 包含买单和卖单的列表,每个订单包含 price volume 字段。
    • price : 表示订单的委托价格。买单的 price 代表买家愿意购买资产的最高价格,而卖单的 price 代表卖家愿意出售资产的最低价格。
    • volume : 表示该价格上的订单数量,通常以基础货币为单位。例如,如果交易对是 XXBTZEUR volume 则表示比特币的数量。 volume 也被称为订单大小或数量。
    • 返回的数据通常按照价格排序,买单按照价格从高到低排列,卖单按照价格从低到高排列。
    • 该接口返回的数据通常是二维数组或列表的形式,例如 [[price1, volume1], [price2, volume2], ...] ,需要根据具体API文档进行解析。

获取最新交易 (Trades)

  • Endpoint: /0/public/Trades
  • Method: GET
  • Parameters:
    • pair : 必选 ,用于指定要查询的交易对。例如: XBT/USD ETH/EUR 。该参数区分大小写,必须与交易所支持的交易对代码完全匹配。
    • since : (可选) ,一个Unix时间戳,用于筛选从该时间点之后的交易记录。如果未提供此参数,则返回最新的交易记录。提供此参数可以用于获取历史交易数据,进行时间序列分析或回测交易策略。
  • Description: 返回指定交易对的最新交易记录。该接口提供实时的市场交易数据,是进行量化分析、价格监控和交易决策的重要数据来源。务必注意交易所的API调用频率限制,避免因频繁请求而被限制访问。
  • Response: 返回一个包含交易记录的数组,每条交易记录代表一笔已完成的交易,包含以下关键字段:
    • price : 交易价格 ,指该笔交易的成交价格,通常以报价货币(例如USD、EUR)计价。
    • volume : 交易数量 ,指该笔交易成交的标的资产的数量,通常以基础货币(例如XBT、ETH)计价。
    • time : 交易时间戳 ,以Unix时间戳格式表示的交易发生时间,精确到秒级或毫秒级,取决于交易所的实现。
    • buy/sell : 交易类型 ,指示交易的方向, b 代表买入(buy), s 代表卖出(sell)。
    • market/limit : 订单类型 ,指示订单的类型, m 代表市价单(market order), l 代表限价单(limit order)。 市价单会立即以当前市场最优价格成交,而限价单只有在市场价格达到指定价格时才会成交。
    • miscellaneous : 其他信息 ,这个字段可能包含交易所提供的与该交易相关的其他信息,例如交易ID、手续费等。具体内容取决于交易所的API文档。

获取价差 (Spread)

  • Endpoint: /0/public/Spread
  • Method: GET
  • Parameters:
    • pair : 必选,要查询的交易对。例如: XBTUSD (比特币/美元), ETHUSD (以太坊/美元)。交易对的命名规则可能因交易所而异,请参考交易所的API文档。
    • since : (可选) 起始时间戳。Unix时间戳格式,用于指定从哪个时间点开始获取价差数据。如果未提供,则返回最近的价差数据。 单位为秒。
  • Description: 返回指定交易对的价差数据。 价差是指最高买价 (Bid) 和最低卖价 (Ask) 之间的差额,是衡量市场流动性的一个重要指标。 较大的价差可能意味着流动性较低,交易成本较高。
  • Response: 返回一个包含价差数据的数组,数组中的每个元素代表一个时间点的价差信息,数据按照时间顺序排列。每个元素包含以下字段:
    • time : 时间戳。Unix时间戳,表示该价差数据对应的时间点。 单位为秒。
    • bid : 最高买价。 在该时间点,市场上最高的买入价格。
    • ask : 最低卖价。 在该时间点,市场上最低的卖出价格。

私有 API

私有 API 是专为特定用户或应用程序设计的接口,用于安全地访问敏感数据和执行授权操作。与公共 API 不同,私有 API 通常需要严格的身份验证和授权机制,以确保只有经过授权的实体才能访问用户的账户信息和执行交易操作。这包括验证用户的身份,以及确认用户是否拥有执行特定操作的权限。常见的认证方式包括 API 密钥、OAuth 2.0 等。授权通常涉及到基于角色的访问控制 (RBAC) 或其他精细化的权限管理策略,以确保数据安全和用户隐私得到充分保护。不正确的 API 密钥管理或者薄弱的授权机制可能会导致严重的安全漏洞,例如未经授权的数据泄露或账户被盗。

获取账户余额 (Balance)

  • Endpoint: /0/private/Balance
  • Method: POST
  • Description: 返回账户余额信息。此接口允许用户查询其在交易所持有的各种加密货币及法定货币的余额。余额信息对于追踪资产配置、监控盈亏情况至关重要。
  • Request Parameters:

    此接口通常不需要显式的请求参数。身份验证信息(API Key 和 Secret Key)需要在请求头中提供,用于验证用户身份和授权访问权限。

  • Response: 返回一个包含每个资产及其余额的字典。字典的键代表资产代码(例如: BTC , ETH , USD ),值代表该资产对应的可用余额。返回值通常会包括可用余额、冻结余额以及总余额。冻结余额是指由于未完成的订单或其他原因而暂时不可用的资金。
  • Example Response:
          
          {
            "result": {
              "XXBT": "1.2345678900", // 比特币余额
              "ZUSD": "1000.0000",      // 美元余额
              "XETH": "5.0000000000"       // 以太坊余额
            },
            "error": []
          }
          
        
  • Error Handling:

    如果请求失败,API 将返回一个包含错误代码和错误消息的数组。常见的错误包括无效的 API 密钥、无效的签名、权限不足等。请务必检查 error 字段以了解请求是否成功。

  • Security Considerations:

    由于此接口涉及敏感的账户余额信息,务必通过 HTTPS 安全地发送请求,并妥善保管您的 API 密钥和 Secret Key。避免在客户端代码中硬编码 API 密钥,并定期轮换密钥以提高安全性。

获取交易历史 (TradesHistory)

  • Endpoint: /0/private/TradesHistory
  • Method: POST
  • Parameters:
    • type : (可选) 指定要查询的交易类型。这允许用户根据不同的交易类别过滤历史记录。 例如,可以指定只查询现货交易、杠杆交易或特定类型的合约交易。 如果未提供此参数,则默认返回所有交易类型的历史记录。
    • trades : (可选) 布尔值,用于确定是否返回单个交易的详细信息。 如果设置为 true ,则返回每笔交易的更详细信息,包括交易量、价格、手续费以及其他相关数据。 如果设置为 false 或省略,则返回更简洁的历史记录,可能只包含交易的汇总信息。
    • start : (可选) 起始时间戳,用于指定要查询的交易历史记录的起始时间。 时间戳通常以 Unix 时间格式表示(自 Epoch 以来的秒数)。 此参数允许用户仅检索指定时间范围内的交易数据。如果未提供,则从最早的交易记录开始。
    • end : (可选) 结束时间戳,用于指定要查询的交易历史记录的结束时间。 与 start 参数类似,时间戳也应以 Unix 时间格式表示。 此参数允许用户定义交易历史记录的查询范围。如果未提供,则查询到最新的交易记录。
    • ofs : (可选) 偏移量,用于分页显示交易历史记录。 当交易历史记录的数量很大时,可以使用偏移量来分批检索数据。 偏移量指定从哪个位置开始返回交易记录。 例如,如果 ofs 设置为 100,则将从第 101 条交易记录开始返回。
    • closetime : (可选) 平仓时间,可以指定特定平仓时间的交易记录。 用于筛选特定时间段内平仓的交易。时间戳的格式应与 start end 参数一致。如果未提供,则返回所有平仓时间的交易记录。
  • Description: 返回用户的交易历史记录。 这包括所有已执行的交易,并且可以通过参数进行过滤,以检索特定类型的交易、指定时间范围内的交易或分页显示大量交易记录。 返回的数据通常包括交易的时间戳、交易对、交易类型(买/卖)、价格、数量、手续费等详细信息。 此接口对于审计交易活动、分析交易策略和生成交易报告非常有用。

获取挂单列表 (OpenOrders)

  • Endpoint: /0/private/OpenOrders
  • Method: POST
  • Authentication: 需要API密钥和签名认证。
  • Parameters:
    • trades : (可选) 是否返回单个交易信息。默认为 false 。设置为 true 时,将在返回的挂单数据中包含与该挂单关联的交易信息。这会增加响应的数据量。
    • userref : (可选) 用户自定义ID,用于关联挂单。 这是一个32位无符号整数。
    • start : (可选) 返回挂单的起始时间戳(Unix时间戳)。
    • end : (可选) 返回挂单的结束时间戳(Unix时间戳)。
    • ofs : (可选) 结果偏移量,用于分页。
    • closetime : (可选) 指定挂单关闭的时间范围。 可能的值包括 "any"(默认),"open"(仅限未平仓挂单),"close"(仅限已平仓挂单)。
  • Description: 返回当前挂单列表。 该接口允许用户检索所有未成交和部分成交的挂单信息。返回的信息包括挂单的交易对、挂单类型(买入或卖出)、价格、数量、挂单时间以及其他相关信息。通过设置不同的参数,可以筛选和排序返回的挂单数据。
  • Response: 返回一个JSON对象,包含挂单的详细信息。每个挂单都由一个唯一的ID标识,并包含订单的状态、创建时间、交易对、类型(限价单、市价单等)、价格和交易量等信息。
  • Error Handling: 如果请求失败,接口将返回一个包含错误代码和错误消息的JSON对象。常见的错误包括无效的API密钥、签名错误、参数错误等。开发者应该根据错误代码和消息进行相应的处理。

下单 (AddOrder)

  • Endpoint: /0/private/AddOrder
  • Method: POST
  • Parameters:
    • pair : 必选 ,交易对。指定进行交易的货币对,例如 "XBTUSDT" 代表比特币/美元稳定币交易对。 务必确认平台支持该交易对。
    • type : 必选 ,订单类型。 只能是 buy (买入) 或 sell (卖出)。 代表希望进行的操作方向。
    • ordertype : 必选 ,订单类型。 可选值包括:
      • market : 市价单,以当前市场最优价格立即成交。
      • limit : 限价单,只有当市场价格达到或超过指定价格时才成交。
      • stop-loss : 止损单,当市场价格达到指定止损价时,订单会被触发并以市价单执行。
      • take-profit : 止盈单,当市场价格达到指定止盈价时,订单会被触发并以市价单执行。
      • stop-loss-limit : 限价止损单,当市场价格达到指定止损价时,订单会被触发,但会以限价单的形式挂出,只有当市场价格达到或超过止损触发后的指定价格时才成交。
      • take-profit-limit : 限价止盈单,当市场价格达到指定止盈价时,订单会被触发,但会以限价单的形式挂出,只有当市场价格达到或超过止盈触发后的指定价格时才成交。
      • trailing-stop : 追踪止损单,止损价格会跟随市场价格上涨而自动调整,始终保持与市场价格的一定距离。
      • trailing-stop-limit : 限价追踪止损单,结合了追踪止损单和限价单的特性。
      • stop-loss-and-take-profit : 止损止盈单,同时设置止损价和止盈价,当任一价格达到时,另一订单自动取消。
      • stop-loss-and-take-profit-limit : 限价止损止盈单,与 stop-loss-and-take-profit 类似,但触发后以限价单形式挂出。
    • price : 价格。 仅限价单需要 ,指定希望成交的价格。该价格必须在合理的市场价格范围内,否则订单可能无法成交。
    • volume : 必选 ,交易数量。 指定买入或卖出的货币数量。 数量单位取决于交易对。
    • leverage : (可选) 杠杆倍数。 仅适用于保证金交易,允许放大交易规模。 请谨慎使用高杠杆,因为它会放大盈利和亏损。 需要是平台允许的杠杆倍数。
    • orderflags : (可选) 订单标志。 用于指定订单的额外属性,例如 "post only" (只挂单,不吃单)。 不同的平台支持不同的订单标志。
    • starttm : (可选) 订单开始时间。 允许指定订单生效的起始时间,可以用于设置计划订单。 格式通常为 Unix 时间戳或 ISO 8601 格式。
    • expiretm : (可选) 订单过期时间。 指定订单的有效期限,超过该时间订单自动取消。 格式通常为 Unix 时间戳或 ISO 8601 格式。
    • userref : (可选) 用户自定义 ID。 允许用户自定义订单 ID,方便跟踪和管理订单。
  • Description: 下单。 用于在交易所创建新的交易订单。 在调用此接口前,请务必仔细核对所有参数,并了解交易所的交易规则。

取消订单 (CancelOrder)

  • Endpoint: /0/private/CancelOrder
  • Method: POST
  • Parameters:
    • txid : 必选 。要取消的订单 ID (交易ID)。该ID是由服务器在创建订单时返回的唯一标识符,用于精确指定需要取消的具体订单。如果提供了错误的 txid ,则可能无法取消订单,或者取消了错误的订单。务必仔细核对。
  • Description: 取消挂单或未成交的订单。此接口允许用户撤销之前提交的、尚未完全成交的订单请求。取消订单后,相应的资金或数字资产将被释放回用户的账户余额,可以用于新的交易。如果订单已经完全成交,则无法取消。在网络拥堵或系统维护期间,取消订单请求可能会延迟执行。
上一篇: Bitget交易所快速加密货币买卖指南
下一篇: Binance历史数据分析:洞察加密货币市场趋势