欧易API快速上手:开发者接入指南与数据接口详解!

资讯 2025-03-06 50

欧易平台数据接口开发文档

概述

本文档为开发者提供欧易交易所数据接口的全面且详细信息,旨在帮助开发者能够更快速、更高效地接入欧易平台,进而获取所需的数据,并基于此数据构建稳健、可靠的应用程序和服务。该文档内容涵盖了接口的认证方式,包括API Key的申请和使用流程;详细的请求方法,如GET、POST等,以及各种请求头部的设置;对每个接口的参数进行详尽的说明,包括参数类型、是否必填、取值范围等;对返回的数据格式进行规范,通常采用JSON格式,并对每个字段进行解释;同时,还提供了常见的错误码及其对应的解决方案,方便开发者排查问题。

认证

所有与欧易交易所API的交互都需要进行身份认证,以确保安全和控制访问权限。欧易平台采用API Key和Secret Key相结合的方式进行身份验证。

  • API Key : 这是用于识别您身份的唯一公钥。每个API Key都与特定的账户和权限集相关联,用于跟踪API请求并控制您的访问级别。 可以把它理解为你的用户名。
  • Secret Key : 这是一个高度机密的密钥,用于对您的API请求进行签名。签名过程确保请求的完整性,防止篡改,并验证请求确实来自您。请务必将您的Secret Key视为密码一样妥善保管,切勿与任何人分享。如果泄露,可能导致资产损失或其他安全风险。建议启用二次验证以提高安全性。

生成签名

为了确保API请求的安全性,您需要在请求头中包含 OK-ACCESS-SIGN 字段。该字段的值是根据请求参数和您的Secret Key生成的签名,用于验证请求的完整性和来源。以下是生成签名的详细步骤,务必按照流程操作,以避免请求被拒绝:

  1. 参数排序与拼接: 收集所有的请求参数。这些参数包括URL查询字符串中的参数以及请求体(request body)中的参数,如果请求有body内容。然后,将这些参数按照其参数名(键名)的ASCII码值从小到大进行排序。完成排序后,将这些键值对用 & 符号连接成一个字符串。 例如,如果参数为 {'paramB': 'valueB', 'paramA': 'valueA'} ,排序后的字符串应为 paramA=valueA&paramB=valueB 。请注意,对于数组类型的参数,需按照数组元素在数组中的顺序进行拼接。
  2. 构建签名字符串: 将上一步骤中生成的参数字符串与请求方法(必须是大写形式,如 GET POST PUT DELETE 等)以及请求路径(不包含域名和端口,例如 /api/v5/trade/order )拼接成一个完整的字符串。拼接的顺序为: 时间戳 + 请求方法 + 请求路径 + 参数字符串 (如果存在) 。时间戳也需要包含在签名字符串中。
  3. SHA256哈希计算: 对第二步中构建的完整字符串使用SHA256哈希算法进行哈希计算。SHA256是一种密码学哈希函数,它可以将任意长度的输入转换为固定长度的哈希值,通常为256位(32字节)。
  4. Base64编码: 将SHA256哈希计算的结果(原始字节数据)使用Base64编码进行编码。Base64是一种将二进制数据转换为ASCII字符的编码方式,常用于在HTTP协议中传输二进制数据。编码后的字符串将作为最终的签名值。

重要提示:

  • Secret Key是您在交易所获得的私钥,务必妥善保管,切勿泄露给他人。
  • 签名过程中的任何错误(例如参数排序错误、大小写错误、编码错误)都可能导致签名验证失败。
  • 时间戳的精度非常重要。建议使用服务器的当前时间戳,并确保与交易所服务器的时间同步,避免因时间偏差导致签名失效。
  • 请求体为空时,不需要拼接请求体到message中
  • 不同的编程语言可能在字符串处理、哈希计算和Base64编码方面存在差异,请确保使用正确的函数和方法。

示例 (Python):


import hashlib
import hmac
import base64
import urllib.parse

def generate_signature(timestamp, method, request_path, body, secret_key):
    """
    生成签名
    """
    message = timestamp + method + request_path
    if body:
        message += body
    mac = hmac.new(bytes(secret_key, encoding='utf8'), bytes(message, encoding='utf8'), hashlib.sha256)
    d = mac.digest()
    return base64.b64encode(d)

代码解释:

  • hmac.new(key, message, digestmod) : 使用HMAC(Hash-based Message Authentication Code)算法生成消息认证码。 key 是您的Secret Key, message 是用于生成签名的字符串, digestmod 是哈希算法(这里使用SHA256)。
  • mac.digest() : 返回HMAC消息认证码的原始字节数据。
  • base64.b64encode(d) : 使用Base64编码对原始字节数据进行编码。
  • 请确保安装了必要的Python库,例如 hashlib , hmac , base64 urllib.parse .

示例数据

以下示例数据展示了生成签名的关键要素,并说明了请求头中必须包含的字段。正确设置这些参数对于成功调用加密货币API至关重要。

timestamp = "2023-10-27T10:00:00.000Z":当前UTC时间戳,必须严格遵循ISO 8601格式,例如"YYYY-MM-DDTHH:mm:ss.SSSZ"。时间戳的准确性是签名验证的关键因素,任何偏差都可能导致请求失败。

method = "GET":HTTP请求方法,常见的包括GET、POST、PUT、DELETE等。选择正确的HTTP方法取决于API端点的具体要求。例如,获取账户余额通常使用GET方法,而提交订单则可能使用POST方法。

request_path = "/api/v5/account/balance":API请求路径,指向特定的API端点。请务必核对API文档,确保请求路径的准确性,包括版本号(如v5)和资源路径。

body = "":请求体,对于GET请求通常为空。对于POST、PUT等请求,请求体包含需要发送的数据,通常采用JSON格式。请求体的内容会影响签名的生成。

secret_key = "YOUR_SECRET_KEY":您的API密钥对应的私钥,务必妥善保管,切勿泄露。私钥用于生成签名,验证请求的合法性。

signature = generate_signature(timestamp, method, request_path, body, secret_key) :使用上述参数生成的签名。签名的生成算法通常由API提供方指定,需要根据API文档进行实现。常见的签名算法包括HMAC-SHA256等。生成的签名需要进行URL编码。

print(signature) :此处的签名是示例,实际应用中需要将生成的签名添加到请求头中。

请求头中还需要包含以下字段:

  • OK-ACCESS-KEY :API Key,您的API密钥,用于标识您的身份。
  • OK-ACCESS-SIGN :生成的签名,用于验证请求的完整性和真实性。确保签名与时间戳、请求方法、路径和请求体一致。
  • OK-ACCESS-TIMESTAMP :当前UTC时间戳,格式必须与生成签名时使用的时间戳一致。
  • OK-ACCESS-PASSPHRASE :创建API Key时设置的Passphrase (可选)。如果设置了Passphrase,必须在请求头中包含此字段。Passphrase是API Key的额外安全层。
  • Content-Type :application/ (POST/PUT 请求时)。指示请求体的格式,通常使用application/。

接口列表

以下列出部分常用接口,这些接口在加密货币交易、数据分析和钱包集成等应用中扮演着关键角色:

  • 交易接口: 用于执行买卖加密货币的订单。这些接口通常支持限价单、市价单等多种订单类型,并提供实时订单状态更新和历史交易记录查询功能。它们需要安全地处理用户的身份验证和授权,以防止未经授权的交易。 交易接口的安全性至关重要,通常采用多重身份验证、API密钥管理和速率限制等措施。
  • 市场数据接口: 提供实时的加密货币价格、交易量、深度图和其他市场统计信息。这些接口是交易策略开发、风险管理和市场研究的重要数据来源。 市场数据接口通常提供不同的数据粒度,例如每秒、每分钟或每日数据,并支持不同的数据格式,如JSON或CSV。
  • 钱包接口: 用于管理加密货币钱包,包括生成新的地址、查询余额、发送和接收加密货币。 钱包接口需要高度安全,以保护用户的私钥和资金。 钱包接口通常支持多种加密货币,并提供交易确认和历史记录查询功能。
  • 区块链数据接口: 提供对区块链底层数据的访问,包括区块信息、交易信息和地址信息。这些接口可用于区块链浏览器开发、交易追踪和智能合约审计。 区块链数据接口通常通过节点API提供,并支持不同的查询参数和过滤器。
  • KYC/AML接口: 用于执行了解你的客户 (KYC) 和反洗钱 (AML) 检查。这些接口可以帮助加密货币交易所和其他平台遵守监管要求,防止非法活动。 KYC/AML接口通常与第三方身份验证和风险评估服务集成。

获取账户余额

本接口用于查询账户中各种加密货币的余额信息,包括总余额、可用余额和冻结余额。通过该接口,用户可以实时掌握其资金状况,进行合理的资产配置和交易决策。

  • 接口地址 : /api/v5/account/balance
  • 请求方法 : GET
  • 请求参数 :
    • ccy (可选): 指定需要查询的币种。例如, BTC 表示查询比特币余额, ETH 表示查询以太坊余额。如果不指定该参数,则接口将返回所有币种的余额信息。支持查询多个币种余额,多个币种间用逗号分隔,例如 BTC,ETH,USDT
  • 返回数据 :

    接口以JSON格式返回账户余额信息,包括币种、总余额、可用余额和冻结余额等。返回结果是一个数组,每个元素代表一种币种的余额信息。

[
    {
        "ccy": "BTC",
        "bal": "0.12345678",
        "availBal": "0.12345678",
        "frozenBal": "0"
    },
    {
        "ccy": "USDT",
        "bal": "1000",
        "availBal": "1000",
        "frozenBal": "0"
    }
]
  • 字段说明 :
    • ccy : 币种代码,例如 BTC ETH USDT 等。
    • bal : 总余额,表示该币种在账户中的总数量,包括可用余额和冻结余额。
    • availBal : 可用余额,表示该币种可用于交易或提现的余额数量。
    • frozenBal : 冻结余额,表示该币种因挂单、锁仓等原因被冻结的余额数量。冻结余额无法用于交易或提现。

注意事项

  • 请确保在调用接口前已完成身份验证,并具有相应的API权限。
  • 返回的余额数据均为字符串类型,进行计算时请注意类型转换。
  • 在交易高峰期,接口响应时间可能会受到影响,请合理设置超时时间。
  • availBal 可能会因为不同的风控策略而低于你的预期值。

获取订单薄数据

  • 接口地址 : /api/v5/market/orderbook
  • 请求方法 : GET
  • 接口描述 : 此接口用于获取指定交易对的实时订单薄数据,订单薄数据包含了买单(bids)和卖单(asks)的挂单价格和数量信息。
  • 请求参数 :
    • instId : 交易对标识,指定需要查询的交易品种,例如 BTC-USDT 。不同的交易所支持的交易对有所不同,请参考交易所的官方文档获取支持的交易对列表。
    • sz (可选): 返回的订单薄档位数量,默认为 20。 sz 参数允许用户自定义返回的订单薄深度,最大可以设置为 400。更大的 sz 值会返回更详细的订单薄信息,但也可能增加网络传输的负担。请根据实际需求选择合适的数值。
  • 返回数据 :

以下是一个订单薄数据的示例,展示了买单和卖单的价格、数量和订单数量。


{
  "asks": [
       ["20000", "1.0", "1"],
     ["20001",  "0.5", "2"]
   ],
   "bids": [
     ["19999",  "1.5",  "3"],
     ["19998",  "2.0", "4"]
   ],
   "ts": "1678886400000"
}
  

  • 字段说明 :
    • asks : 卖方挂单数组,按照价格升序排列。每个元素代表一个卖单,包含价格、数量和订单数量。
    • bids : 买方挂单数组,按照价格降序排列。每个元素代表一个买单,包含价格、数量和订单数量。
    • ts : 时间戳,表示订单薄数据的生成时间,为 Unix 时间戳格式(毫秒)。时间戳可以用于判断订单薄数据的时效性。
  • 数据结构详解 :
    • asks bids 数组中的每个元素都是一个包含三个元素的数组:
      • 第一个元素表示价格 (Price),例如 "20000"
      • 第二个元素表示数量 (Size/Quantity),例如 "1.0"
      • 第三个元素表示该价格对应的订单数量 (Order Count),例如 "1"
  • 注意事项 :
    • 订单薄数据是动态变化的,每次请求得到的结果可能不同。
    • 高频交易场景下,需要频繁获取订单薄数据,需要注意接口的调用频率限制。
    • 订单薄数据的精度取决于交易所的设置,可能存在不同的精度等级。

获取K线数据

  • 接口地址 : /api/v5/market/candles
  • 请求方法 : GET
  • 请求参数 :
    • instId : 交易对ID,指定需要查询K线数据的交易品种。例如, BTC-USDT 表示比特币兑USDT的交易对。该参数为必填项。
    • bar (可选): K线周期,定义每根K线的时间跨度。有效值包括分钟级别 ( 1m , 5m , 15m , 30m ),小时级别 ( 1h , 2h , 4h , 6h , 12h ),天级别 ( 1d ),周级别 ( 1w ) 和月级别 ( 1M )。默认值为 1m ,即1分钟K线。
    • limit (可选): 返回K线数据的数量。该参数控制API响应中包含的K线数量。默认值为100,最大允许值为100。超出此范围的请求将被截断或拒绝。
    • before (可选): 请求指定时间戳之前的K线数据。该参数使用Unix时间戳,单位为毫秒。例如, 1678886400000 。使用此参数可以获取历史K线数据。
    • after (可选): 请求指定时间戳之后的K线数据。该参数也使用Unix时间戳,单位为毫秒。与 before 相反,此参数用于获取特定时间点之后的K线数据。
  • 返回数据 :

    返回的数据是一个数组,每个元素代表一根K线,包含以下信息:

    [
      [
        "1678886400000",  // 开盘时间: Unix时间戳,单位毫秒
        "19000",           // 开盘价: 该时间周期内的第一笔成交价
        "20000",           // 最高价: 该时间周期内的最高成交价
        "18000",           // 最低价: 该时间周期内的最低成交价
        "19500",           // 收盘价: 该时间周期内的最后一笔成交价
        "100",             // 成交量: 该时间周期内的成交数量,以基础货币计价 (例如,BTC-USDT交易对中,成交量单位为BTC)
        "0"              // 成交额: 该时间周期内的成交总额,以计价货币计价 (例如,BTC-USDT交易对中,成交额单位为USDT)。部分交易所可能不提供此数据。
      ],
      [
        "1678886460000",
        "19500",
        "20500",
        "19000",
        "20000",
        "120",
        "0"
      ]
    ]
            

    数组中的每个元素都是一个数组,包含了K线的时间、开盘价、最高价、最低价、收盘价、成交量和成交额。时间戳为Unix时间戳,单位为毫秒。

下单

  • 接口地址 : /api/v5/trade/order
  • 请求方法 : POST
  • 请求参数 : 用于创建新的交易订单。

请求示例 (JSON):


{
    "instId": "BTC-USDT",
    "tdMode": "cash",
    "side": "buy",
    "ordType": "market",
    "sz": "0.001",
    "px": "optional"
}

  • 参数说明 :
    • instId : 交易对,指定要交易的资产对。例如: BTC-USDT
    • tdMode : 交易模式。 cash 代表现货交易, cross 代表全仓保证金交易, isolated 代表逐仓保证金交易。不同的交易模式影响保证金计算和风险管理。
    • side : 订单方向。 buy 表示买入操作, sell 表示卖出操作。
    • ordType : 订单类型。 market 表示市价单,会立即以当前市场最优价格成交。 limit 表示限价单,只有当市场价格达到或优于指定价格时才会成交。 post_only 表示只挂单,如果该订单会立即成交,则会被取消。 fok 表示立即全部成交或取消(Fill or Kill), ioc 表示立即成交并取消剩余(Immediate or Cancel)。
    • sz : 交易数量,指定购买或出售的资产数量。
    • px (可选): 订单价格。仅在 ordType limit 时有效。指定期望的交易价格。
    • clOrdId (可选): 客户端自定义订单ID,方便用户跟踪订单。如果未提供,则由系统自动生成。
    • tag (可选): 订单标签,用于自定义订单分类或标记。
    • reduceOnly (可选): 只减仓。仅适用于保证金交易,设置为 true 时,订单只能减少持仓量。
  • 返回数据 : 提交订单请求后,API将返回包含订单信息的JSON响应。

返回示例 (JSON):


{
    "ordId": "1234567890",
    "clOrdId": "YOUR_CLIENT_ORDER_ID",
    "tag": "",
    "sCode": "0",
    "sMsg": "",
    "state": "live",
    "avgPx": "optional",
    "fillSz": "optional"
}

  • 字段说明 :
    • ordId : 订单ID,由系统生成的唯一订单标识符。
    • clOrdId : 客户端订单ID,如果请求中提供了 clOrdId ,则在此处返回。
    • tag : 订单标签,与请求中提供的 tag 值相同。
    • sCode : 状态码。 0 表示订单提交成功。非0表示订单提交失败,具体错误信息请参考 sMsg
    • sMsg : 状态信息。提供关于订单状态的详细描述,例如成功或失败的原因。
    • state : 订单状态。可能的值包括 live (未成交), partially_filled (部分成交), filled (完全成交), canceled (已取消), rejected (已拒绝)。
    • avgPx (可选): 平均成交价格。仅在订单部分成交或完全成交后才会返回。
    • fillSz (可选): 成交数量。仅在订单部分成交或完全成交后才会返回。

获取订单详情

  • 接口地址 : /api/v5/trade/order
  • 请求方法 : GET
  • 请求参数 :
    • instId : 交易对,用于指定您希望查询的订单所属的交易品种,例如 BTC-USDT 。请确保提供的交易对与实际下单时的交易对一致,否则将无法正确检索到订单信息。
    • ordId : 订单ID,由交易所平台生成的唯一订单标识符。此ID用于精确定位需要查询的特定订单。请确保提供的订单ID准确无误。
    • clOrdId (可选): 客户端订单ID,是您在下单时自定义的订单标识符,主要用于方便您在自己的系统中跟踪订单状态。如果提供了此参数,可以更快速地定位到特定订单。未提供时,默认为空。
  • 返回数据 :

    以下是一个返回数据的示例,展示了订单的详细信息。请注意,实际返回的数据可能包含更多字段,具体取决于交易所的API实现。

          
    {
      "instId": "BTC-USDT",
      "ordId": "1234567890",
      "clOrdId": "YOURCLIENTORDER_ID",
      "px": "20000",
      "sz": "0.001",
      "ordType": "limit",
      "side": "buy",
      "state": "filled",
      "avgPx": "19999.5",
      "fillSz": "0.001",
      "fee": "0.0001",
      "feeCcy": "USDT",
      "ts": "1678886400000",
      "fillTime": "1678886405000",
      "feeRate": "0.0005",
      "tpTriggerPx": null,
      "slTriggerPx": null,
      "algoId": null,
      "uly": null,
      "attachAlgoClOrdId": null
    }
          
        

    字段解释 :

    • instId : 交易对,例如 "BTC-USDT"。
    • ordId : 交易所平台生成的订单ID。
    • clOrdId : 客户端自定义的订单ID(如果设置)。
    • px : 订单的委托价格。
    • sz : 订单的委托数量。
    • ordType : 订单类型,例如 "limit" (限价单), "market" (市价单)。
    • side : 订单方向,"buy" (买入) 或 "sell" (卖出)。
    • state : 订单状态,例如 "filled" (已成交), "canceled" (已撤销), "live" (未成交)。
    • avgPx : 平均成交价格。
    • fillSz : 实际成交数量。
    • fee : 交易手续费。
    • feeCcy : 手续费币种。
    • ts : 订单创建时间的时间戳(毫秒)。
    • fillTime : 订单完全成交的时间戳(毫秒)。
    • feeRate : 手续费率.
    • tpTriggerPx : 止盈触发价格。
    • slTriggerPx : 止损触发价格。
    • algoId : 算法订单ID(如果使用)。
    • uly : 标的资产(例如期权交易)。
    • attachAlgoClOrdId : 附加算法订单的客户端ID。

错误码

以下列出一些常见的错误码,用于帮助开发者诊断和解决集成过程中遇到的问题:

  • 60001 : 请求参数错误。通常表示发送到API的请求缺少必要的参数,参数格式不正确,或者参数值超出了允许的范围。请仔细检查请求体、查询参数和Header,确保它们符合API文档的要求。例如,检查必填字段是否为空,数据类型是否正确,以及数值范围是否合理。
  • 60002 : 签名验证失败。这意味着请求的签名与服务器端计算的签名不匹配。这通常是由于使用了错误的密钥、错误的签名算法,或者请求内容在签名后被篡改造成的。请确保使用正确的API密钥和密钥算法,并仔细检查签名过程,包括字符编码、参数排序和连接方式。重新生成签名并再次发送请求。
  • 60003 : 权限不足。表示当前用户或API密钥没有执行该操作所需的权限。这可能是由于API密钥未被授权访问特定资源或功能。请检查API密钥的权限设置,确保它具有执行该操作的权限。如果需要更高的权限,请联系平台管理员。
  • 60004 : 账户余额不足。通常发生在尝试进行交易或提现操作时,账户中的可用余额不足以支付所需金额。请检查账户余额,并确保有足够的资金来完成操作。可以通过充值或减少交易金额来解决此问题。
  • 60005 : 订单不存在。表示请求中指定的订单ID在系统中未找到。请仔细检查订单ID是否正确,并确保订单确实存在。如果订单ID正确,但仍然出现此错误,请联系客服人员进行查询。
  • 58001 : 系统错误。这是一个通用的服务器端错误,表示服务器在处理请求时遇到了未知问题。这可能是由于服务器负载过高、数据库连接问题或其他内部错误造成的。建议稍后重试该操作。如果问题仍然存在,请联系技术支持。
  • 58002 : 网络错误。表示客户端与服务器之间的网络连接存在问题。这可能是由于网络不稳定、防火墙阻止连接或DNS解析失败造成的。请检查网络连接,确保可以访问服务器。可以尝试更换网络环境或使用VPN。
  • 更多错误码请参考官方文档,文档中详细描述了每个错误码的含义、可能的原因和解决方案。

频率限制

为了确保平台的稳定性和所有用户的良好体验,所有应用程序接口(API)都实施了频率限制。 频率限制是指在一定时间内允许客户端(例如您的应用程序)向服务器发送请求的最大数量。 不同的API端点,例如获取市场数据、提交交易订单或查询账户信息,可能具有不同的频率限制策略。因此,务必仔细查阅官方API文档,以了解每个特定接口的具体频率限制详情,包括每分钟、每秒或每日允许的最大请求次数。这些限制旨在防止滥用、恶意攻击以及意外的流量峰值,从而维持平台的稳定性和可用性。

如果您的应用程序超过了为特定API端点设置的频率限制,服务器将会返回一个 429 Too Many Requests HTTP状态码错误。 收到此错误表明您需要在发送更多请求之前等待一段时间。 API文档通常会提供有关如何处理频率限制错误的详细信息,包括建议的重试策略和等待时间。实施适当的错误处理机制和重试逻辑,可以帮助您的应用程序优雅地处理频率限制,避免数据丢失或服务中断。 常见的策略包括指数退避算法,即每次重试时增加等待时间,直到达到最大重试次数或成功发送请求。

WebSockets

欧易平台为了满足用户对于实时数据的高度需求,特别提供了强大的WebSockets接口。该接口允许开发者和交易者以极低的延迟接收最新的市场行情和账户信息更新,而无需频繁地发送请求。通过建立持久的双向连接,WebSockets可以高效地推送包括实时交易价格、深度数据、订单簿变化、以及个人账户余额、订单状态等在内的关键信息,为高频交易和自动化策略提供坚实的数据基础。

与传统的REST API不同,WebSockets接口采用推送模式,服务器主动将数据发送到客户端,避免了客户端轮询带来的延迟和资源消耗。更重要的是,欧易的WebSockets接口设计上简化了认证流程, 不需要进行签名认证 ,降低了接入的复杂性,使得开发者能够更加快速地集成实时数据流,专注于策略的开发和优化。开发者只需要建立WebSocket连接,订阅感兴趣的频道(例如特定交易对的实时价格),即可开始接收数据。

订阅市场数据

订阅实时市场数据,允许用户接收指定交易对的最新价格、成交量和其他关键市场信息。该操作通过发送一个JSON格式的订阅请求来实现。

以下是一个订阅特定交易对(BTC-USDT)ticker数据的JSON请求示例:

{
  "op": "subscribe",
  "args": [
    {
      "channel": "tickers",
      "instId": "BTC-USDT"
    }
  ]
}

字段解释:

  • op : 操作类型,这里是 "subscribe",表示订阅。
  • args : 参数数组,包含了订阅的具体信息。
  • channel : 频道名称,"tickers" 表示订阅ticker数据,即最新成交价、成交量等。其他频道可能包括"depth"(深度数据)、"trades"(成交记录)等。
  • instId : 交易对ID,指定要订阅的交易对。例如,"BTC-USDT" 表示比特币对USDT的交易对。不同的交易所可能使用不同的命名规范。

注意事项:

  • 交易所通常会限制订阅的频道数量和频率,请参考交易所的API文档。
  • 成功订阅后,服务器会持续推送ticker数据更新,直到客户端取消订阅。
  • 可以通过发送包含 op 为 "unsubscribe" 的JSON请求来取消订阅。
  • 确保 instId 存在且有效,如果 instId 不存在,订阅可能失败。
  • 不同的交易所对于频道名称的定义可能有所不同,需要仔细阅读对应交易所的API文档。

订阅账户数据

订阅账户数据对于用户实时监控其加密货币账户的变动至关重要。通过订阅,用户可以及时了解账户余额、交易历史以及其他相关信息,从而更好地管理其数字资产。以下是一个订阅账户数据的JSON请求示例:


{
  "op": "subscribe",
  "args": [
    {
      "channel": "account",
      "ccy": "USDT"
    }
  ]
}

字段解释:

  • op: 操作类型,此处为 "subscribe",表示订阅。
  • args: 参数列表,包含一个或多个订阅的具体信息。

args 数组元素解释:

  • channel: 订阅的频道,此处为 "account",表示订阅账户信息。不同的交易所可能提供不同的频道,例如 "trade" (交易信息), "order" (订单信息) 等。
  • ccy: 订阅的币种,此处为 "USDT",表示订阅 USDT 账户的信息。用户可以根据需要订阅不同的币种,例如 BTC, ETH 等。支持订阅全部币种可能需要特定参数,具体取决于交易所 API 的设计。

该请求示例表示订阅 USDT 账户的账户信息。交易所会实时推送该账户的余额变动、交易记录等数据。用户需要根据交易所提供的 API 文档,正确构建订阅请求,并处理接收到的数据。

需要注意的是,不同的交易所API在订阅格式、数据结构和认证方式上可能存在差异。在实际应用中,请务必参考相应交易所的官方文档,确保订阅请求的正确性和安全性。一些交易所可能会对订阅频率和数量进行限制,需要用户合理控制订阅行为,避免触发限流机制。