Kraken API使用详解:密钥设置与交易指南

日期: 栏目:交易 浏览:101

Kraken API 设置指南:从入门到精通

Kraken 作为全球领先的加密货币交易所之一,为用户提供了强大的 API (应用程序编程接口),允许开发者和交易者通过编程方式访问和管理他们的 Kraken 账户,进行交易、获取市场数据等操作。本文将详细介绍如何在 Kraken 上设置和使用 API,帮助你充分利用 Kraken 的 API 功能。

1. API 密钥的创建与管理

要开始使用 Kraken 的 API,第一步也是至关重要的一步是创建 API 密钥。API 密钥是访问 Kraken 交易平台数据和功能的凭证,类似于用户名和密码,但专为程序化访问设计。创建 API 密钥的过程涉及登录您的 Kraken 账户,导航至 API 管理页面,并生成新的密钥对。这一密钥对包含一个公共密钥(API Key)和一个私有密钥(API Secret)。

密钥的创建过程至关重要,务必仔细配置密钥的权限。Kraken 允许您为每个 API 密钥分配特定的权限,例如交易、查询账户余额、获取市场数据等。最小权限原则是最佳实践,即只授予密钥完成特定任务所需的最低权限,以此降低潜在的安全风险。请务必妥善保管你的密钥信息,尤其是私有密钥(API Secret)。切勿在公开场合(如代码仓库、论坛等)分享或提交您的密钥。可以将密钥存储在安全的环境变量或加密的配置文件中。

除了创建,API 密钥的管理也同样重要。定期审查和更新您的 API 密钥是维护安全的重要措施。您可以根据需要随时撤销或重新生成密钥。同时,Kraken 提供了 API 使用情况监控,您可以利用这些工具跟踪 API 密钥的使用情况,及时发现异常活动。启用两因素认证(2FA)可以为您的 Kraken 账户增加额外的安全保障,防止未经授权的 API 密钥创建。

1.1 登录 Kraken 账户

访问 Kraken 官方网站( https://www.kraken.com ),确保访问的是官方域名,谨防钓鱼网站。 在登录页面,输入您注册时设置的用户名(或邮箱地址)以及对应的密码。请务必使用安全的网络环境,避免在公共 Wi-Fi 等不安全网络下进行登录操作,以防账户信息泄露。 如果您启用了双重验证(2FA),系统会要求您输入由身份验证器应用程序(如 Google Authenticator、Authy 等)生成的动态验证码,或通过短信接收的验证码,以增强账户的安全性。 如果尚未拥有 Kraken 账户,您需要点击注册链接,按照页面提示填写您的个人信息,例如姓名、邮箱地址、居住国家/地区等。 注册完成后,您可能需要进行邮箱验证,并设置高强度的密码。 为了提高账户安全性,强烈建议您完成身份验证(KYC)流程,这通常需要您提供身份证明文件(如护照、身份证)和地址证明文件。 身份验证级别越高,您的账户交易限额也会相应提高。

1.2 导航至 API 管理页面

成功登录您的账户后,请注意页面右上角显示的个人资料图标。此图标通常代表您的账户设置和相关选项。点击此个人资料图标将展开一个下拉菜单,其中包含多个账户管理选项。

在下拉菜单中,寻找并选择 “Security”(安全)选项。此选项通常用于访问与账户安全相关的设置,例如密码更改、双因素认证以及 API 密钥管理。

进入 “Security”(安全)页面后,您会看到多个安全设置选项卡或链接。请在此页面上找到并选择 “API” 或 “API 密钥” 选项。选择此选项将引导您进入专门的 API 密钥管理页面,您可以在此页面生成、查看、编辑和删除您的 API 密钥。

1.3 创建新的 API 密钥

为了开始使用我们的API,你需要创建一个API密钥。访问API密钥管理页面,找到并点击“Generate New Key”(生成新的密钥)按钮。点击后,系统将引导你进入一个配置页面,在这里你可以详细设置你的API密钥的各项权限,精确控制密钥的使用范围和能力。

在配置页面,你通常可以设置以下选项:

  • 密钥名称: 为你的API密钥指定一个易于识别的名称,方便日后管理和区分不同的应用或服务。
  • 权限范围: 选择该密钥可以访问的API端点和数据范围。这通常包括读取、写入或执行特定操作的权限。务必遵循最小权限原则,只授予密钥所需的最低权限,以增强安全性。
  • IP地址限制: 将密钥的使用限制在特定的IP地址或IP地址段内。这可以防止未经授权的访问,即使密钥泄露,也只有来自授权IP地址的请求才能成功。
  • 有效期: 设置密钥的有效期限。定期轮换密钥是最佳安全实践,可以降低长期密钥泄露的风险。
  • 速率限制: 控制密钥的请求频率,防止滥用或恶意攻击。你可以设置每分钟、每小时或每天的最大请求次数。

完成配置后,仔细检查所有设置,确保它们符合你的需求和安全策略。然后,点击“Submit”(提交)或类似的按钮来创建API密钥。系统将生成一个唯一的密钥字符串,请务必妥善保管,避免泄露。有些系统可能只显示密钥一次,所以立即复制并安全存储它。

注意:API密钥是访问你账户和数据的凭证,类似于密码。不要将API密钥泄露给他人,不要将其存储在公共代码库中,也不要将其硬编码到客户端应用程序中。如果密钥泄露,立即撤销该密钥并生成新的密钥。

1.4 配置 API 密钥权限

配置 API 密钥的权限是确保账户安全和功能正常运行的关键步骤。创建 API 密钥后,务必审慎地根据实际应用场景,精确配置并限制 API 密钥所拥有的权限。Kraken 交易所提供细粒度的权限控制选项,以便用户能够最大限度地降低潜在风险,同时满足交易和数据访问的需求。

  • Query Funds(查询资金): 允许 API 访问并查询您的 Kraken 账户中的总资产余额。 此权限适用于监控账户资金状况,但不会授予任何交易或提现权限。
  • Trade Balance(交易余额): 允许 API 查询可用于交易的可用余额。与 "Query Funds" 不同,此权限仅限于可用于交易的资金,排除已锁定或用于其他目的的资金。
  • Query Ledger Entries(查询账本条目): 允许 API 查询您的 Kraken 账户的完整账本记录,包括所有交易、充值、提现和费用等历史记录。 适合用于审计和财务分析。
  • Query Orders(查询订单): 允许 API 检索您的订单信息,包括未成交的挂单、已成交的订单以及历史订单记录。 此权限是追踪订单执行情况和分析交易策略的基础。
  • Create & Cancel Orders(创建和取消订单): 允许 API 代表您在 Kraken 交易所创建新的订单和取消现有的订单。 请务必谨慎授予此权限,因为它允许程序化交易,若配置不当可能导致意外交易或损失。强烈建议进行充分的测试和风险评估。
  • Withdraw Funds(提取资金): 允许 API 从您的 Kraken 账户提取资金到预先配置的提现地址。 强烈建议不要轻易授予此权限。如果必须授予,请务必限制提现地址白名单,并启用双重验证等安全措施,以最大程度地保护您的资金安全。此权限风险极高,应谨慎使用。
  • Query Open Positions(查询未平仓头寸): 允许 API 查询您当前持有的未平仓头寸信息,包括数量、入场价格、盈亏等。 此权限用于监控当前交易状态。
  • Query Closed Positions(查询已平仓头寸): 允许 API 查询您已平仓的头寸信息,包括平仓价格、盈亏、交易时间等。 此权限用于分析历史交易表现。
  • Query Deposits(查询充值记录): 允许 API 查询您的 Kraken 账户的充值记录,包括充值时间、金额、交易哈希等信息。 用于验证充值是否成功到账。
  • Query Withdrawals(查询提现记录): 允许 API 查询您的 Kraken 账户的提现记录,包括提现时间、金额、交易哈希等信息。 用于追踪提现状态。
重要提示: 遵循最小权限原则,只授予 API 密钥所需的最低权限。例如,如果你的 API 密钥仅用于获取市场数据,则只需要授予 “Query Funds” 或 “Query Ledger Entries” 权限。

1.5 输入密钥描述信息

为了更有效地管理您的 API 密钥,强烈建议为每一个密钥设置清晰且具描述性的信息。这些描述信息如同标签,能够辅助您迅速辨识每个密钥的用途和权限范围,避免混淆和误用,提高安全性。例如,您可以添加如下描述:

  • "量化交易专用 API 密钥" :明确标识该密钥仅用于执行量化交易策略,限制其在其他场景下的使用,降低潜在风险。
  • "数据分析 API 密钥 - 只读权限" :清晰表明该密钥用于数据分析,并且仅具备读取数据的权限,不允许进行任何修改或写入操作,保障数据安全。
  • "风控系统 API 密钥 - 高频调用" : 特别指出该密钥服务于风控系统,并被设计为高频率调用,以便监控和应对潜在风险事件。

一个良好且有意义的密钥描述应包含密钥的用途、权限范围和任何其他重要的使用限制等信息。这将极大地简化密钥的管理和维护工作,提高API使用的安全性,并且有助于团队协作,确保每个成员都清楚了解各个密钥的功能和约束。

1.6 生成 API 密钥

在成功完成API密钥的权限配置和描述信息填写之后,找到并点击页面上的 “Generate Key”(生成密钥)按钮。 Kraken交易所的服务器将随即生成一对用于API访问的密钥,其中包括:

  • API Key(API 密钥) : 此密钥作为你的公共标识符,在每次API请求时都需要提供,用于识别你的身份和账户。请务必妥善保管,避免泄露。
  • Private Key(私钥) : 私钥是用于对API请求进行签名的密钥,确保请求的完整性和安全性。 绝对 不要 与任何人分享你的私钥。 私钥的泄露可能会导致你的账户被盗用或资金损失。 Kraken不会存储你的私钥,一旦丢失将无法恢复。

请注意,生成的API Key和Private Key通常会以文本形式显示,你需要立即复制并安全地存储它们。 推荐使用密码管理器或离线存储等方式,以确保密钥的安全。 API Key和Private Key是访问Kraken API的凭证,丢失或泄露会导致安全风险。

一些额外的注意事项:

  • 权限控制 :请仔细检查你授予API密钥的权限,仅授予API密钥所需的最小权限集,降低潜在风险。
  • 监控API使用 :定期监控你的API密钥的使用情况,检测是否有异常活动,及时采取措施。
  • 定期轮换密钥 :为了进一步提高安全性,建议定期更换你的API密钥。

1.7 保存 API 密钥信息

务必妥善保存你的 API Key 和 Private Key。 Private Key 是非常敏感的信息,泄露后可能会导致你的账户资金损失。 Kraken 只会显示一次 Private Key,之后将无法再次查看。你可以将 API Key 和 Private Key 保存在安全的地方,例如加密的密码管理器或硬件钱包。

2. 使用 API 密钥进行身份验证

为了安全地访问和使用 Kraken 交易所的 API,你必须先进行身份验证。 身份验证过程依赖于 API 密钥(API Key)和私钥(Private Key)的组合。 API 密钥用于标识你的账户,而私钥则用于对你的 API 请求进行数字签名,从而验证请求的真实性和完整性。

Kraken 采用 HMAC-SHA512(基于哈希的消息认证码,使用 SHA512 算法)作为其 API 请求的签名算法。 这种算法能够有效地防止请求被篡改,保障你的交易安全。 使用 HMAC-SHA512 算法,你需要结合你的私钥和请求参数生成一个唯一的签名,并将此签名包含在你的 API 请求头中。 Kraken 服务器会使用相同的算法和你的私钥重新计算签名,并与你提供的签名进行比较,如果两者匹配,则表明请求有效。

API 密钥和私钥的管理至关重要。 你应该将你的私钥视为高度敏感的信息,妥善保管,切勿泄露给任何第三方。 Kraken 建议启用双因素认证(2FA)来增加账户的安全性。 定期更换你的 API 密钥也是一个良好的安全实践。 如果你怀疑你的 API 密钥可能已被泄露,应立即撤销该密钥并生成新的密钥。

2.1 构建 API 请求

构建有效的 API 请求是与交易所服务器通信的关键步骤。API 请求的构造通常涉及以下几个核心组成部分,确保数据准确传输和请求安全验证:

  • API Endpoint (API 端点): 这是你请求访问的特定 API 接口的 URL 地址。它定义了你希望从服务器获取或者向服务器提交哪种类型的数据。例如, /0/public/Ticker 通常用于获取指定交易对的市场行情数据快照,如最新成交价、最高价、最低价和交易量等。完整的 API 端点通常需要拼接基础 URL 和此相对路径。
  • Parameters (请求参数): 参数用于向 API 端点传递额外的指令或筛选条件,以便服务器能够返回你所需要的数据。参数通常以键值对的形式传递,例如 pair=XBTUSD 指明你感兴趣的交易对是比特币/美元。不同的 API 端点支持的参数各不相同,需要参考 API 文档了解每个端点的可用参数及其含义。常见的参数包括交易对、时间范围、数量、价格、订单类型等。
  • Nonce (随机数): Nonce 是一个唯一的、通常是递增的数字或字符串,用于增强 API 请求的安全性,防止重放攻击。重放攻击是指攻击者截获并重新发送一个有效的 API 请求,从而可能导致未经授权的操作。通过引入 Nonce,服务器可以验证每个请求的新鲜度,拒绝重复的请求。Nonce 的值必须是单调递增的,每次请求都使用一个比上次请求更大的 Nonce 值。通常使用 Unix 时间戳(毫秒级)作为 Nonce 的基础,并根据需要进行调整。

2.2 计算 API 签名

为了确保 API 请求的安全性和完整性,需要使用 Private Key 对每个 API 请求进行签名。签名过程涉及多个步骤,具体算法如下:

  1. 构造签名字符串: 将随机数 Nonce(一个唯一的、单次使用的随机值,用于防止重放攻击)与目标 API 端点路径(例如: /0/private/Balance )连接成一个单一的字符串。Nonce 必须是唯一的,对于每个请求都应该生成一个新的 Nonce 值。连接顺序为 Nonce 在前,API 端点路径在后。
  2. 生成 SHA256 摘要: 对上一步生成的字符串使用 SHA256 哈希算法进行运算,生成一个摘要(Digest)。SHA256 是一种广泛使用的密码学哈希函数,它将任意长度的输入转换为固定长度的哈希值。
  3. HMAC-SHA512 签名: 使用您的 Private Key 作为密钥,并结合 HMAC-SHA512 算法对上一步生成的 SHA256 摘要进行签名。HMAC(Hash-based Message Authentication Code)是一种消息认证码算法,它使用哈希函数和密钥来生成消息的认证码。SHA512 是 HMAC 中使用的哈希函数。签名结果将作为请求头中的 API-Sign 字段的值发送给服务器。

由于不同的编程语言和密码学库提供了不同的 HMAC-SHA512 算法实现,因此在实际开发中,你需要选择适合你所用语言和平台的库。可以参考 Kraken 官方文档中提供的示例代码,或者使用其他经过良好测试和信誉良好的第三方库来计算 API 签名。务必仔细阅读相关文档,确保正确使用相关函数和参数,避免因签名错误导致请求失败或安全问题。

2.3 构建安全的API请求:API密钥与数字签名

为了确保API请求的安全性和真实性,必须在HTTP请求头中包含API密钥和数字签名。API密钥用于标识发送请求的用户或应用程序,而数字签名则用于验证请求的完整性,防止数据在传输过程中被篡改。

具体操作如下:将您的API密钥添加到名为 API-Key 的自定义HTTP请求头中。例如,如果您的API密钥是 your_api_key_here ,则请求头应包含 API-Key: your_api_key_here

同时,计算并添加数字签名到名为 API-Sign 的自定义HTTP请求头中。数字签名的生成过程通常涉及以下步骤:

  1. 构建签名字符串: 根据API提供商的要求,将请求的各个参数(例如,时间戳、请求路径、请求体等)按照特定的规则进行排序和连接,形成一个字符串。
  2. 使用密钥进行哈希: 使用您的API密钥和一个安全的哈希算法(例如,SHA256)对构建的字符串进行哈希运算。API密钥通常用作哈希算法的密钥,以确保只有拥有密钥的人才能生成有效的签名。
  3. 编码签名: 将哈希运算的结果进行Base64编码,以便在HTTP请求头中传输。

例如,如果生成的数字签名是 encoded_signature_string ,则请求头应包含 API-Sign: encoded_signature_string 。 请务必参考API提供商的官方文档,了解签名生成的具体算法和参数要求,以确保生成的签名能够被正确验证。

3. 常用 API 端点及使用示例

Kraken 交易所提供了一套全面的 API(应用程序编程接口),允许开发者和交易者以编程方式访问其平台功能。这些 API 端点覆盖了广泛的用途,包括但不限于实时市场数据检索、执行交易订单、管理账户信息、以及监控交易活动。 下文将详细介绍一些常用的 API 端点,并提供实际的使用示例,以帮助您快速上手 Kraken API 的使用。

  • 获取市场数据:
  • 通过 /public/Ticker 端点,您可以获取指定交易对(例如: XBT/USD ETH/EUR )的实时市场行情数据。这些数据包括但不限于:最新成交价、最高价、最低价、成交量、以及买卖盘口信息。该端点返回的数据对于进行技术分析、制定交易策略至关重要。

    示例: 使用 GET 请求访问 https://api.kraken.com/0/public/Ticker?pair=XBTUSD 将返回比特币 (XBT) 兑美元 (USD) 的实时行情数据。

  • 查询账户余额:
  • 使用 /private/Balance 端点可以查询您的 Kraken 账户中各种加密货币和法币的可用余额和总余额。 此端点需要进行身份验证,确保只有授权用户才能访问其账户信息。

    示例: 在通过 API 密钥进行身份验证后,向 https://api.kraken.com/0/private/Balance 发送 POST 请求将返回您的账户余额信息。 注意,需要在请求头中包含 API 密钥和签名。

  • 下单交易:
  • /private/AddOrder 端点允许您在 Kraken 交易所提交买入或卖出订单。 您可以指定交易对、订单类型(例如:市价单、限价单)、交易数量和价格。 下单交易同样需要进行身份验证。

    示例: 在完成身份验证后,通过 POST 请求向 https://api.kraken.com/0/private/AddOrder 发送包含订单详细信息的 payload,即可提交订单。 例如,您可以创建一个限价买单,以指定的价格购买一定数量的 ETH/USD。

  • 查询订单状态:
  • 通过 /private/QueryOrders 端点,您可以查询特定订单的当前状态,例如:已成交、部分成交、已取消或挂单中。 了解订单状态对于监控交易执行情况至关重要。

    示例: 在身份验证后,使用 POST 请求访问 https://api.kraken.com/0/private/QueryOrders 并提供订单 ID,即可获取该订单的详细状态信息。

  • 取消订单:
  • /private/CancelOrder 端点允许您取消尚未成交的挂单。 取消订单可以帮助您在市场条件不利时避免不必要的损失。

    示例: 身份验证后,通过 POST 请求向 https://api.kraken.com/0/private/CancelOrder 发送订单 ID,即可取消该订单。

重要提示: 在使用 Kraken API 之前,请务必仔细阅读 Kraken 官方 API 文档,了解各个端点的详细参数、请求方式、返回格式和速率限制。 正确处理 API 密钥和签名,确保账户安全。 遵守 Kraken 的 API 使用条款,避免滥用 API 资源。

3.1 获取市场行情数据 ( /0/public/Ticker )

该API端点用于检索特定交易对的实时市场行情数据,例如指定时间段内的最高成交价格、最低成交价格、交易量、加权平均价格(VWAP)以及当前买卖盘口信息。通过此接口,用户可以获取加密货币交易对的最新市场动态,从而进行有效的交易决策和风险评估。

此端点提供的数据通常包括:

  • 最高价(High): 在指定时间段内达到的最高成交价格。
  • 最低价(Low): 在指定时间段内达到的最低成交价格。
  • 成交量(Volume): 在指定时间段内特定交易对的交易总量。
  • 加权平均价(VWAP): 按交易量加权的平均价格,反映了更准确的市场价格水平。
  • 买一价(Bid): 当前市场上最高的买入报价。
  • 卖一价(Ask): 当前市场上最低的卖出报价。
  • 最后成交价(Last Trade Price): 最近一笔交易的成交价格。

利用这些数据,交易者可以分析市场趋势、评估价格波动性、并制定相应的交易策略。例如,通过比较最高价和最低价,可以了解价格波动范围;通过观察成交量,可以判断市场活跃程度;通过分析买卖盘口,可以预测价格走势。

示例:获取 Kraken 交易所比特币/美元交易对行情

通过发送 HTTP POST 请求至 Kraken 交易所的公共 API 端点,可以获取特定交易对的实时行情数据。以下展示了如何获取比特币/美元 (XBTUSD) 交易对的 Ticker 信息:

请求方法: POST

API 端点: https://api.kraken.com/0/public/Ticker

请求参数:

  • pair :指定需要查询的交易对。对于比特币/美元交易对,其值为 XBTUSD 。 请注意,Kraken 使用 XBT 代指比特币。

请求示例:

POST https://api.kraken.com/0/public/Ticker
pair=XBTUSD

预期响应:

服务器将返回包含 XBTUSD 交易对相关信息的 JSON 格式数据,其中包括但不限于:

  • ask : 卖方报价,即最佳卖出价格。
  • bid : 买方报价,即最佳买入价格。
  • last : 最新成交价格。
  • volume : 交易量。
  • vwap : 加权平均价格。
  • 其他与市场深度和交易活动相关的统计信息。

注意事项:

  • 此 API 端点为公共端点,无需身份验证即可访问。
  • 请参考 Kraken 官方 API 文档以获取完整的参数列表和响应格式的详细说明,以确保正确解析返回的数据。
  • Kraken 的交易代码可能与其他交易所不同,务必查阅官方文档。

响应:

以下JSON格式的数据结构展示了Kraken交易所提供的XXBTZUSD交易对(比特币/美元)的实时市场深度和交易统计信息:


{
  "error": [],
  "result": {
    "XXBTZUSD": {
      "a": [
        "27000.00",  // 最佳卖价(Ask):当前市场上最优的卖出价格。
        "1",         // 卖单数量:以该价格挂单的卖单数量。
        "1.000"      // 总量:以该价格挂单的总数量。
      ],
      "b": [
        "26999.00",  // 最佳买价(Bid):当前市场上最优的买入价格。
        "1",         // 买单数量:以该价格挂单的买单数量。
        "1.000"      // 总量:以该价格挂单的总数量。
      ],
      "c": [
        "27000.00",  // 最新成交价(Last Trade Closed):最近一笔成交的价格。
        "1"          // 成交量:最近一笔成交的交易量。
      ],
      "v": [
        "1234.5678",  // 成交量(Volume):今天的累计成交量。
        "12345.6789" // 滚动成交量:过去24小时的累计成交量,具体时间窗口可能因交易所而异。
      ],
      "p": [
        "26500.00",  // 加权平均价(Weighted Average Price):今天的加权平均价格。
        "27000.00"  // 滚动加权平均价:过去24小时的加权平均价格。
      ],
      "t": [
        10,         // 成交笔数(Number of Trades):今天的成交笔数。
        20          // 滚动成交笔数:过去24小时的成交笔数。
      ],
      "l": [
        "26000.00",  // 最低价(Low):今天的最低价格。
        "26500.00"  // 滚动最低价:过去24小时的最低价格。
      ],
      "h": [
        "27500.00",  // 最高价(High):今天的最高价格。
        "27000.00"  // 滚动最高价:过去24小时的最高价格。
      ],
      "o": [
        "26500.00",  // 开盘价(Opening Price):今天的开盘价格。
        "26700.00"  // 昨日收盘价:可能代表前一日收盘价或其他参考开盘价。
      ]
    }
  }
}

字段解释: error 数组用于指示API请求中是否发生错误。如果数组为空,则表示没有错误。 result 对象包含实际的市场数据,以交易对(例如XXBTZUSD)作为键。

3.2 获取账户余额 ( /0/private/Balance )

该 API 端点 /0/private/Balance 允许用户查询其在交易所或平台上的账户余额信息。通过调用此接口,你可以实时获取可用资金、已用保证金以及各种加密货币资产的持有量等详细信息。

访问此端点需要进行身份验证,以确保只有授权用户才能获取敏感的账户数据。身份验证过程通常涉及提供有效的 API 密钥(API Key)和私钥(Private Key)。API 密钥用于标识用户,而私钥则用于对请求进行签名,以防止篡改。

请务必妥善保管你的 API 密钥和私钥,切勿泄露给任何第三方。密钥泄露可能导致账户资金被盗或遭受其他安全风险。建议启用双因素认证(2FA)等额外的安全措施,以增强账户的安全性。

示例:获取 Kraken 账户余额(Balance)

此示例演示了如何使用 HTTP POST 请求来调用 Kraken 交易所的私有 API 接口,以获取账户余额信息。私有 API 需要身份验证,因此请求中必须包含必要的签名和时间戳。

请求方法: POST

API 端点 (Endpoint): https://api.kraken.com/0/private/Balance

请求参数:

  • nonce :一个唯一的、递增的整数,用于防止重放攻击。每次请求都应该使用不同的 nonce 值。 通常使用Unix时间戳(秒)或者毫秒级时间戳。例如: 1234567890

请求示例:

POST https://api.kraken.com/0/private/Balance
nonce=1234567890

注意事项:

  • 除了 nonce ,通常还需要 API-Key Authentification (API 签名)。 API 签名是使用您的私钥对请求数据进行加密哈希的结果。具体签名方法请参考 Kraken 官方 API 文档。
  • 请求头 (Header) 中必须包含正确的 API-Key Authentification 信息。
  • 为了安全,请务必妥善保管您的 API 密钥。
  • 请仔细阅读 Kraken 官方 API 文档,了解所有必需的参数和签名方法。

响应:

成功响应示例:

以下 JSON 对象展示了一个成功的 API 响应,其中包含账户余额信息。 error 数组为空,表明没有发生错误。 result 对象包含了不同资产的余额。


{
  "error": [],
  "result": {
    "XXBT": "1.234567890123456789",
    "ZUSD": "12345.6789"
  }
}

字段解释:

  • error : 一个字符串数组,用于报告 API 调用期间发生的任何错误。如果调用成功,则此数组为空。如果发生错误,数组将包含错误代码和/或错误消息。
  • result : 一个包含响应数据的 JSON 对象。其结构和内容取决于所调用的 API 方法。在上面的例子中, result 包含了账户余额信息。

result 对象中的余额信息:

  • XXBT : 账户中持有的比特币(Bitcoin)余额。 这里的 XXBT 是 Kraken 交易所使用的比特币交易代码。该值是一个字符串,精确到小数点后 18 位,代表了用户持有的比特币数量。
  • ZUSD : 账户中持有的美元(US Dollar)余额。 这里的 ZUSD 是 Kraken 交易所使用的美元交易代码。 该值是一个字符串,精确到小数点后 4 位,代表了用户持有的美元数量。

重要提示:

  • 余额数值以字符串形式返回,以确保高精度,避免浮点数精度问题。
  • 实际的资产代码可能会因交易所或 API 提供商而异。在使用时请务必参考相应的 API 文档。
  • result 对象中可能包含更多其他资产的余额,具体取决于用户的账户持有情况。

3.3 创建订单 ( /0/private/AddOrder )

/0/private/AddOrder API端点用于提交新的交易订单到交易所。要成功使用此端点,必须通过API Key和Private Key进行身份验证,证明请求的合法性与身份。

权限要求至关重要。API Key必须被明确授予 "Create & Cancel Orders"(创建和取消订单)的权限。未授权的API Key将无法成功创建订单,并会返回相应的错误信息。

此端点支持多种订单类型和参数配置,允许用户根据自己的交易策略定制订单。例如,可以设置订单类型(市价单、限价单等)、交易方向(买入、卖出)、交易数量、价格以及其他高级选项,如止损、止盈等。详细的参数说明请参考API文档中 /0/private/AddOrder 端点的具体描述。

在调用此API端点时,务必仔细检查所有参数的正确性,包括交易对、订单类型、价格、数量等。错误的参数可能导致订单无法执行或以错误的价格成交,造成不必要的损失。同时,需要注意交易所对订单数量和价格的限制,确保订单参数符合交易所的规范。

示例:

发起POST请求: 向 Kraken 交易所的私有 API 端点 https://api.kraken.com/0/private/AddOrder 发送 POST 请求,用于提交新的订单。

请求参数:

  • nonce 随机数(Nonce) :一个单调递增的整数值,用于防止重放攻击。示例中 nonce 的值为 1234567890 。每次 API 调用都应使用一个新的、更大的 nonce 值。
  • pair 交易对 :指定要交易的资产对。示例中 pair=XBTUSD 表示比特币 (XBT) 兑美元 (USD) 的交易对。 不同的交易所可能使用不同的交易对代码。
  • type 订单类型 :指定订单的方向,即买入或卖出。示例中 type=buy 表示买入订单。 相反, type=sell 则表示卖出订单。
  • ordertype 订单类型(详细) :指定订单的具体类型,例如市价单、限价单等。示例中 ordertype=market 表示市价单,将以当前市场最优价格立即执行。 其他常见的订单类型包括 limit (限价单), stop-loss (止损单) 等。
  • volume 交易量 :指定要交易的资产数量。示例中 volume=0.1 表示交易 0.1 个比特币。 请注意,不同的交易对可能有最小交易量的限制。

安全性注意事项: 这是一个私有 API 调用,需要使用您的 API 密钥和私钥进行签名认证,以确保请求的安全性。 请务必妥善保管您的 API 密钥和私钥,切勿泄露给他人。

错误处理: API 调用可能会因各种原因失败,例如参数错误、余额不足等。 请务必实现适当的错误处理机制,以便在出现错误时能够及时发现并处理。

响应:

该响应信息表示一个成功的交易执行,具体包含以下关键部分:

错误信息(error):

"error": [] 这表明在执行交易的过程中没有出现任何错误。空的数组 [] 是成功执行的标志,如果出现问题,此数组将包含相应的错误代码和描述信息。

结果(result):

"result": { ... } 该部分包含了交易执行的详细结果信息。

订单描述(descr):

"descr": { "order": "buy 0.10000000 XBTUSD market" } 详细描述了执行的订单。在此示例中, "order": "buy 0.10000000 XBTUSD market" 表示以市价购买 0.1 个单位的 XBTUSD 交易对。XBT 通常代表比特币,而 XBTUSD 表示比特币兑美元的交易对。 "market" 指的是市价单,意味着订单会立即以当前市场上最佳可用价格执行。精度为小数点后8位,表明了交易平台支持的最小交易单位。

交易ID(txid):

"txid": ["OU2XGC-XLCX2-D3KDJ4"] 这是交易的唯一标识符。 "txid": ["OU2XGC-XLCX2-D3KDJ4"] 表示交易ID为 "OU2XGC-XLCX2-D3KDJ4"。 在区块链或交易所的内部系统中,可以使用此ID来追踪和验证交易。 数组形式 [] 允许在一次操作中包含多个交易ID,尽管在此示例中只有一个ID。

4. API 使用注意事项

  • 速率限制: Kraken 交易所对 API 请求的频率设置了严格的限制,以确保系统的稳定性和公平性。开发者必须深入理解并遵守这些速率限制规则。超出限制可能导致 IP 地址或 API 密钥被暂时或永久封禁。建议在代码中实现重试机制和速率限制监控,根据 Kraken 提供的 `Retry-After` 响应头进行智能重试,避免不必要的请求失败。同时,关注 Kraken 官方公告,及时了解速率限制策略的更新。
  • 错误处理: API 请求并非总是成功,可能会因多种原因返回错误,例如参数错误、权限不足、服务器内部错误等。你的应用程序必须具备健壮的错误处理机制,能够准确解析 API 返回的错误代码和错误信息。针对不同的错误类型,采取相应的处理策略,例如,重试请求、记录错误日志、通知用户等。Kraken 的 API 文档详细描述了各种可能的错误代码及其含义,请务必参考。
  • 安全性: API 密钥(API Key)和私钥(Private Key)是访问 Kraken API 的身份凭证,务必妥善保管,如同保护你的银行账户密码一样。切勿将 API 密钥硬编码到应用程序代码中,更不要将其泄露到公共代码仓库(如 GitHub)或任何不安全的地方。推荐使用环境变量、配置文件或专门的密钥管理服务来存储 API 密钥。定期轮换 API 密钥是增强安全性的有效手段。同时,启用 Kraken 提供的双因素认证(2FA)可以进一步提升账户安全性。
  • API 文档: Kraken 提供了详尽的官方 API 文档,其中包含了 API 的所有可用端点、请求参数、响应格式、错误代码以及示例代码。仔细阅读并理解 API 文档是正确使用 Kraken API 的前提。请特别关注 API 的版本更新,并及时升级你的代码以适应最新的 API 版本。API 文档通常会详细说明每个端点的功能和使用方法,以及相关的安全注意事项。
  • 测试环境: Kraken 提供了一个独立的测试环境(Sandbox),允许开发者在不影响真实资金的情况下测试其 API 集成。强烈建议在将代码部署到生产环境之前,先在测试环境中进行充分的测试。测试环境的数据和交易都是模拟的,与真实市场无关。通过测试环境,可以验证 API 请求的正确性、错误处理的有效性以及速率限制的处理逻辑。使用测试环境可以有效降低因代码错误导致的潜在风险。

5. 利用第三方库简化开发

为显著降低 Kraken API 开发的复杂性,开发者可充分利用各类第三方库,它们能够有效处理 API 请求的构建与发送、安全签名生成、以及异常错误管理。 在多种编程语言生态系统中,均存在专门为 Kraken API 设计的第三方库。例如,在 Python 编程环境中, krakenex 库便是一个广泛使用的选择。 这些库通常封装了底层 API 交互的复杂细节,提供更为简洁、易用的接口,显著提高开发效率并降低出错概率。

第三方库通常提供以下功能:

  • 请求构建: 自动构建符合 Kraken API 规范的 HTTP 请求,包括设置必要的请求头、参数和数据体。
  • 签名计算: 依据 Kraken 的安全要求,自动生成用于身份验证的 HMAC-SHA512 签名。
  • 数据序列化与反序列化: 将数据转换为 API 所需的格式(如 JSON),并将 API 响应解析为易于处理的数据结构。
  • 错误处理: 统一处理 API 返回的错误信息,并提供友好的错误提示,方便开发者进行调试和排错。

选择合适的第三方库时,应关注以下几个方面:

  • 社区活跃度: 活跃的社区意味着库能够得到及时的维护和更新,能够更好地应对 API 的变化。
  • 文档完善程度: 详细、清晰的文档能够帮助开发者快速上手并解决使用过程中遇到的问题。
  • 代码质量: 检查库的代码是否规范、是否存在安全漏洞等,以确保应用的稳定性和安全性。

通过使用第三方库,开发者可以将更多精力集中在业务逻辑的实现上,而无需过多关注底层 API 细节,从而加速开发进程并提升代码质量。