BigONE API市场数据查询:构建你的加密货币数据分析系统

BigONE API 市场数据查询详解:打造你的加密货币数据分析利器

BigONE 作为一家全球化的数字资产交易平台,提供了丰富的 API 接口,方便开发者获取实时的市场数据,进行量化交易、数据分析等应用。本文将深入探讨 BigONE API 中市场数据查询的相关接口,助你轻松构建自己的加密货币数据分析系统。

1. API 概览

BigONE API 提供了一套全面的市场数据接口,旨在为开发者提供实时、可靠的数字资产市场信息。这些接口主要涵盖以下几个关键领域:

  • 行情数据 (Ticker): 行情数据接口允许开发者获取单个或多个交易对的实时市场信息。这些信息包括但不限于:最新成交价、24 小时价格涨跌幅、24 小时最高价、24 小时最低价、24 小时成交量(以交易对的基础货币计价)、24 小时成交额(以交易对的报价货币计价)、以及最近成交时间等。这些数据对于快速了解市场动态至关重要。开发者可以利用这些数据进行价格监控、风险管理以及算法交易。
  • 深度数据 (Depth/Order Book): 深度数据接口提供指定交易对的实时买卖盘深度信息,也称为订单簿数据。订单簿数据包含多个买单和卖单的价格和数量。通过分析订单簿,开发者可以评估市场的买卖力量分布,判断价格支撑位和阻力位,预测短期价格波动。该接口通常提供不同深度的订单簿数据,例如前 5 档、前 10 档或全部订单。理解订单簿对于高频交易和做市商至关重要。
  • 交易历史 (Trades): 交易历史接口提供指定交易对的历史成交记录。每条成交记录包含成交时间、成交价格、成交数量、以及买卖方向等信息。通过分析历史成交记录,开发者可以了解市场的交易活动,识别交易趋势和成交量分布,进而辅助交易决策。这些数据还可以用于回测交易策略,评估策略的盈利能力和风险。
  • K 线数据 (KLine/Candlesticks): K 线数据接口提供指定交易对的 K 线图数据,也称为蜡烛图数据。K 线图是一种常用的技术分析工具,它以图形化的方式展示了特定时间段内的开盘价、收盘价、最高价和最低价。通过分析 K 线图,开发者可以识别市场趋势、发现潜在的买卖信号,并进行技术分析和趋势预测。该接口通常支持不同时间周期的 K 线数据,例如 1 分钟、5 分钟、15 分钟、30 分钟、1 小时、4 小时、1 天、1 周和 1 月等。

为了确保 API 的安全性和合规性,所有 API 请求都需要进行身份验证。因此,你需要首先在 BigONE 平台注册并申请 API Key 和 Secret Key。API Key 用于标识你的身份,Secret Key 用于生成请求签名。在每个 API 请求的头部,你需要携带包含签名信息的授权字段,以便服务器验证你的身份并授权访问。请务必妥善保管你的 API Key 和 Secret Key,避免泄露,以防止未经授权的访问。

2. 行情数据 (Ticker) 查询

行情数据是最常用的实时市场数据之一,它提供特定交易对在特定时间点的关键市场信息,使你能够快速了解该交易对的当前市场状况。通过行情数据,你可以获得包括最新成交价格、最高价、最低价、成交量、买一价、卖一价等重要指标,从而评估市场的实时动态。

具体来说, Ticker 数据通常包含以下关键字段:

  • 最新成交价 (Last Price): 最近一笔交易的成交价格,反映了当前市场对该交易对的价值评估。
  • 最高价 (High Price): 在过去24小时(或其他指定时间段)内达到的最高成交价格,可用于分析市场的潜在阻力位。
  • 最低价 (Low Price): 在过去24小时(或其他指定时间段)内达到的最低成交价格,可用于分析市场的潜在支撑位。
  • 成交量 (Volume): 在过去24小时(或其他指定时间段)内交易的总数量,是衡量市场活跃度的重要指标。 高成交量通常伴随着价格的剧烈波动。
  • 买一价 (Bid Price): 当前市场上最高的买入报价,代表了买家愿意支付的最高价格。
  • 卖一价 (Ask Price): 当前市场上最低的卖出报价,代表了卖家愿意接受的最低价格。
  • 时间戳 (Timestamp): 行情数据更新的时间,表明了数据的时效性。

通过监控 Ticker 数据,交易者可以迅速掌握市场脉搏,制定相应的交易策略,例如捕捉价格波动、识别趋势变化、评估交易风险等。交易所通常提供API接口,方便开发者和交易者实时获取和分析行情数据。

2.1. 获取单个交易对行情

API 地址: /api/v3/markets/{market_id}/ticker 请求方式: GET

参数:

  • market_id : 交易对 ID,用于指定需要查询或操作的交易市场。例如, ETH-BTC 代表以太坊(ETH)与比特币(BTC)的交易对。务必使用交易所或API文档中指定的准确 ID 格式,因为错误的 ID 会导致请求失败或返回错误数据。不同的交易所可能使用不同的 ID 命名规则,因此需要仔细查阅相关文档。该参数通常是字符串类型,且区分大小写。一些平台可能使用数字 ID 而非字符串。

示例: 获取ETH-BTC市场的交易数据

HTTP 方法: GET

请求路径: /api/v3/markets/ETH-BTC/ticker

描述: 该API端点用于获取以太坊 (ETH) 与比特币 (BTC) 交易对的最新交易信息。它提供诸如最新成交价、最高价、最低价、交易量等关键数据,帮助用户快速了解市场动态。

请求示例:

GET /api/v3/markets/ETH-BTC/ticker

响应示例 (JSON): (实际响应会包含更多字段)


{
  "ticker": {
    "base": "ETH",
    "target": "BTC",
    "price": "0.055",
    "volume": "1500",
    "change": "+0.001",
    "timestamp": "1678886400"
  }
}

参数说明: 该请求不需要任何参数,直接访问指定路径即可获取数据。

错误处理: 如果请求失败,服务器可能会返回错误代码,例如 404 Not Found (如果交易对不存在) 或 500 Internal Server Error (服务器内部错误)。请根据错误代码和错误信息进行相应的处理。

安全考虑: API请求通常需要进行身份验证和授权,请确保您已正确配置API密钥并遵循交易所的安全指南,防止未经授权的访问。

响应示例:

以下JSON响应展示了加密货币市场数据的典型结构,用于提供特定交易对的实时或历史行情信息。


{
  "code": 200,
  "message": "OK",
  "data": {
    "market_id": "ETH-BTC",
    "close": "0.05",
    "open": "0.048",
    "high": "0.052",
    "low": "0.047",
    "volume": "1000",
    "amount": "50",
    "bid": "0.049",
    "bid_size": "10",
    "ask": "0.051",
    "ask_size": "12",
    "timestamp": "1678886400"
  }
}

字段说明:

  • code : HTTP状态码, 200 表示请求成功。
  • message : 状态描述, OK 表示请求顺利完成。
  • data : 包含市场数据的JSON对象。
    • market_id : 交易对标识符,例如 ETH-BTC 代表以太坊与比特币的交易。
    • close : 收盘价,指定时间段内最后一笔交易的价格。
    • open : 开盘价,指定时间段内第一笔交易的价格。
    • high : 最高价,指定时间段内达到的最高交易价格。
    • low : 最低价,指定时间段内达到的最低交易价格。
    • volume : 交易量,指定时间段内交易的加密货币总量 (例如,以ETH计价的交易量)。
    • amount : 交易额,指定时间段内交易的总金额 (例如,以BTC计价的交易总额)。
    • bid : 最高买入价,当前市场上最高的买单价格。
    • bid_size : 最高买入价的挂单量,以加密货币单位计。
    • ask : 最低卖出价,当前市场上最低的卖单价格。
    • ask_size : 最低卖出价的挂单量,以加密货币单位计。
    • timestamp : 时间戳,通常为Unix时间戳,表示数据记录的时间。 例如, 1678886400 代表2023年3月15日。

数据使用者可以利用这些信息进行技术分析、制定交易策略或跟踪市场趋势。 交易所和数据提供商通常会提供类似格式的API接口,以便开发者获取实时市场数据。

字段解释:

  • market_id : 交易对 ID 。它是交易所内唯一标识一个交易对的字符串,例如 BTC_USDT ,表示比特币兑换 USDT 的交易市场。通过此 ID,可以区分不同的交易市场,并获取特定交易对的数据。
  • close : 最新成交价 。指在最近一笔交易中,该交易对最终成交的价格。它是反映市场当前价格水平的关键指标,对交易者判断趋势至关重要。
  • open : 开盘价 。指在指定时间周期(例如,日、小时或分钟)内,该交易对第一笔交易的价格。开盘价常被用于分析价格走势的起始点。
  • high : 最高价 。指在指定时间周期内,该交易对达到的最高价格。最高价反映了市场在该时间段内的多头力量的强度。
  • low : 最低价 。指在指定时间周期内,该交易对达到的最低价格。最低价反映了市场在该时间段内的空头力量的强度。
  • volume : 成交量 。指在指定时间周期内,该交易对完成交易的币的数量总和。成交量是衡量市场活跃程度的重要指标,高成交量通常意味着市场参与者众多。
  • amount : 成交额 。指在指定时间周期内,该交易对完成交易的总价值,通常以计价货币(例如 USDT、USD)表示。成交额是评估市场规模和流动性的重要指标。 计算公式通常为:成交额 = 成交量 * 成交价。
  • bid : 最高买价 。指当前市场上买家愿意出的最高价格。它代表了买方市场的购买意愿和力量。
  • bid_size : 最高买价对应的数量 。指当前市场上以最高买价挂单的币的数量。这个值反映了在该价位上买方的需求量。
  • ask : 最低卖价 。指当前市场上卖家愿意接受的最低价格。它代表了卖方市场的出售意愿和力量。
  • ask_size : 最低卖价对应的数量 。指当前市场上以最低卖价挂单的币的数量。这个值反映了在该价位上卖方的供给量。
  • timestamp : 时间戳 。表示数据产生的时间,通常以 Unix 时间戳的形式表示,即从 1970 年 1 月 1 日 00:00:00 UTC 到现在的秒数。时间戳用于记录和追踪数据的时序性,方便进行时间序列分析。

2.2. 获取多个交易对行情

API 地址: /api/v3/markets/tickers 请求方式: GET

参数:

  • market_ids : 交易对 ID 列表,用于指定您希望查询或操作的特定交易对。多个 ID 之间用逗号分隔,每个 ID 需精确匹配交易所支持的交易对格式。例如: ETH-BTC,LTC-BTC 。 具体来说, ETH-BTC 代表以太坊 (ETH) 兑比特币 (BTC) 的交易对, LTC-BTC 则代表莱特币 (LTC) 兑比特币 (BTC) 的交易对。 请务必确认您提供的交易对 ID 在目标交易所是有效且存在的,否则可能会导致请求失败或返回错误信息。不同交易所对交易对 ID 的命名规范可能存在差异,使用前请仔细查阅交易所的 API 文档。 正确使用 market_ids 参数能够帮助您精确筛选所需数据,提高数据处理效率。

示例:

GET /api/v3/markets/tickers?market_ids=ETH-BTC,LTC-BTC

此API请求用于获取指定交易对的市场行情数据。 GET 方法表明我们是从服务器请求信息,而不是向服务器提交信息。

/api/v3/markets/tickers 是API的端点,指示我们要访问市场行情相关的资源。 /api/v3 通常表示API的版本号,而 /markets/tickers 指定了具体的资源路径,这里是市场行情(tickers)。

?market_ids=ETH-BTC,LTC-BTC 是查询字符串,用于传递参数。 market_ids 参数指定了我们想要获取行情的交易对。多个交易对之间用逗号分隔。在这个例子中,我们请求的是 ETH-BTC (以太坊/比特币) 和 LTC-BTC (莱特币/比特币) 两个交易对的行情数据。

服务器会返回一个JSON格式的响应,包含 ETH-BTC 和 LTC-BTC 交易对的最新成交价、最高价、最低价、成交量等信息。 请注意,API的版本号(v3)可能需要根据实际使用的API版本进行调整。某些API可能需要身份验证才能访问,因此您可能需要在请求头中包含API密钥或令牌。

例如,一个可能的响应结果如下(简化示例):


[
  {
    "market_id": "ETH-BTC",
    "last_price": "0.055",
    "volume": "1200"
  },
  {
    "market_id": "LTC-BTC",
    "last_price": "0.002",
    "volume": "5000"
  }
]

上面的示例展示了两个交易对的简化行情数据,包括 `market_id` (交易对标识符), `last_price` (最新成交价) 和 `volume` (成交量)。实际的API响应可能包含更多字段,例如最高价、最低价、时间戳等。务必查阅相关API文档以了解完整的响应结构。

响应示例:

API响应以JSON格式提供市场数据快照,包含多个交易对的信息。

示例:


{
  "code": 200,
  "message": "OK",
  "data": [
    {
      "market_id": "ETH-BTC",
      "close": "0.05",
      "open": "0.048",
      "high": "0.052",
      "low": "0.047",
      "volume": "1000",
      "amount": "50",
      "bid": "0.049",
      "bid_size": "10",
      "ask": "0.051",
      "ask_size": "12",
      "timestamp": "1678886400"
    },
    {
      "market_id": "LTC-BTC",
      "close": "0.002",
      "open": "0.0019",
      "high": "0.0021",
      "low": "0.0018",
      "volume": "500",
      "amount": "1",
      "bid": "0.00195",
      "bid_size": "5",
      "ask": "0.00205",
      "ask_size": "6",
      "timestamp": "1678886400"
    }
  ]
}

字段解释:

  • code : HTTP状态码, 200 表示成功。
  • message : 状态描述, OK 表示请求成功。
  • data : 包含市场数据的数组,每个元素代表一个交易对。
    • market_id : 交易对标识符,例如 ETH-BTC (以太坊/比特币)。
    • close : 最新成交价。
    • open : 开盘价。
    • high : 最高价。
    • low : 最低价。
    • volume : 成交量 (以基础货币计价)。
    • amount : 成交额 (以计价货币计价)。
    • bid : 最高买入价。
    • bid_size : 最高买入价对应的数量。
    • ask : 最低卖出价。
    • ask_size : 最低卖出价对应的数量。
    • timestamp : Unix时间戳,表示数据更新时间(秒)。

注意, volume 通常是指在给定的时间段内交易的基础货币数量。例如,在 ETH-BTC 交易对中, volume 代表交易的以太坊数量,而 amount 代表等值的比特币数量。时间戳 timestamp 用于记录数据的生成时间,通常以UTC时间表示。 bid_size ask_size 代表在买一价和卖一价可交易的数量,也称为买盘量和卖盘量。

3. 深度数据 (Depth) 查询

深度数据,也称为订单簿数据,展示了特定加密货币交易对在特定交易所的实时买卖盘挂单情况。这种数据对于理解市场微观结构和评估短期市场动态至关重要。

通过观察深度数据,交易者和分析师可以分析市场的供需关系。大量的买单集中在某个价位附近可能表明存在潜在的支撑位,而大量的卖单集中在某个价位附近则可能预示着阻力位。这些支撑位和阻力位可以作为交易决策的参考依据。

更深入地分析深度数据还可以揭示市场情绪和潜在的价格走势。例如,买盘墙(即大量买单堆积)可能表明市场参与者预期价格将上涨,而卖盘墙则可能表明预期价格将下跌。订单簿的流动性和深度也反映了市场对该加密货币的兴趣和参与程度。订单簿越深,意味着更大的交易量可以被执行,而不会对价格产生显著影响。

深度数据通常以图表的形式呈现,称为深度图或订单簿图。这种图表清晰地展示了不同价格水平上的买卖单数量,使分析人员能够快速识别关键的价格区域和潜在的交易机会。

需要注意的是,深度数据只是众多市场分析工具中的一种,应结合其他技术指标和基本面分析进行综合评估,以提高交易决策的准确性。同时,深度数据也可能受到操纵,例如虚假订单,因此在使用时需要谨慎判断。

API 地址: /api/v3/markets/{market_id}/depth 请求方式: GET

参数:

  • market_id : 交易对 ID,用于指定您希望获取深度信息的特定交易市场。例如, ETH-BTC 表示以太坊与比特币的交易对。请确保您提供的交易对 ID 在交易所中是有效且存在的。
  • limit : 返回的深度数量,决定了您希望获取多少档买单和卖单的价格和数量信息。该参数的可选值为 20, 50, 100, 150。默认值为 20,意味着如果您不指定该参数,API 将返回 20 档深度数据。
    较小的 limit 值可以减少数据传输量,适用于对网络带宽有要求的场景;较大的 limit 值可以提供更全面的市场深度视图,有助于更准确地评估市场流动性和潜在的价格波动。选择合适的 limit 值取决于您的具体应用场景和对市场信息的详细程度的需求。

示例:获取ETH-BTC交易对的深度信息

使用HTTP GET方法,您可以向指定的API端点请求ETH-BTC交易对的深度信息。深度信息代表了指定交易对的买单(bid)和卖单(ask)的价格和数量分布情况。通过调整 limit 参数,您可以控制返回的订单簿深度。例如,以下请求会返回订单簿中前50个最佳买入和卖出价格的深度数据。

请求:

GET /api/v3/markets/ETH-BTC/depth?limit=50

参数说明:

  • /api/v3/markets/ETH-BTC/depth : API端点,指示您正在请求ETH-BTC交易对的深度信息。 markets 部分表明这是一个市场数据相关的API调用。 ETH-BTC 指定了要查询的交易对,即以比特币(BTC)计价的以太坊(ETH)。 depth 明确表示获取的是市场深度数据。
  • limit : 可选参数,用于限制返回的订单数量。在本例中, limit=50 表示返回最佳的50个买单和50个卖单。如果不指定此参数,API通常会返回一个默认数量的订单,具体数量取决于API提供商的设置。增大 limit 值可以获得更详细的订单簿信息,但也会增加数据传输量。

预期响应:

API将会返回一个JSON格式的响应,其中包含买单和卖单的价格和数量信息。买单通常按照价格从高到低排列,卖单按照价格从低到高排列。响应的结构可能如下所示:


{
  "asks": [
    [
      "0.075",  // 卖出价格
      "1.2"   // 卖出数量
    ],
    [
      "0.0751",
      "0.8"
    ],
    ...
  ],
  "bids": [
    [
      "0.0749",  // 买入价格
      "2.5"   // 买入数量
    ],
    [
      "0.0748",
      "1.0"
    ],
    ...
  ],
  "timestamp": 1678886400000 // 时间戳,表示数据更新时间(Unix时间戳,毫秒)
}

请注意,实际响应的格式和数据可能因交易所和API提供商而异。 timestamp 字段提供了数据生成的时间,对于分析市场数据至关重要。

响应示例:

该响应示例展示了加密货币交易所API返回的深度数据,它提供了特定交易对的买单(bids)和卖单(asks)信息,以及数据生成的时间戳。

结构解析:

此JSON对象包含三个主要字段:

  • code : HTTP状态码, 200 表示请求成功。
  • message : 响应消息,通常是 "OK" 表示请求正常。
  • data : 包含实际的市场深度数据。

data 字段详解:

data 字段本身是一个JSON对象,包含以下内容:

  • asks : 卖单数组。每一个元素是一个包含两个字符串的数组,分别代表价格和数量。例如 ["0.051", "12"] 表示在价格 0.051 处有 12 个单位的卖单。 asks 数组通常按照价格升序排列,最接近当前市场价格的卖单排在最前面。
  • bids : 买单数组。结构与 asks 类似,每一个元素也是一个包含两个字符串的数组,代表价格和数量。例如 ["0.049", "10"] 表示在价格 0.049 处有 10 个单位的买单。 bids 数组通常按照价格降序排列,最接近当前市场价格的买单排在最前面。
  • timestamp : 数据生成的时间戳,通常是 Unix 时间戳(自 1970 年 1 月 1 日 00:00:00 UTC 起经过的秒数)。例如 "1678886400" 代表某个特定的时间点。

数据应用:

通过分析 asks bids 数据,可以构建订单簿(Order Book),了解市场深度和流动性。交易者可以使用这些信息来制定交易策略,例如确定最佳的买入或卖出价格,或者评估大额交易对市场价格的影响。

注意事项:

  • asks bids 数组的长度可能受到 API 的限制。交易所通常会限制返回的订单簿深度,以减少数据传输量。
  • 时间戳精度可能因交易所而异。一些交易所提供毫秒级的时间戳。
  • 实际应用中,需要考虑网络延迟和数据更新频率,以确保使用最新的市场数据。

字段解释:

  • asks : 卖盘深度列表,代表市场上愿意出售的订单信息。每个元素为一个数组,精确地包含了两个关键信息:价格和数量。价格代表卖家愿意出售加密货币的单价,数量则代表在该价格上可供出售的加密货币总量。 通过分析 asks 列表,可以深入了解市场上的抛售压力和潜在的阻力位。 例如,一个大量的 asks 订单堆积在某个价格附近,可能预示着该价格将成为一个重要的阻力位,价格上涨可能会在该位置遇到强烈的抛售压力。
  • bids : 买盘深度列表,与 asks 相对应,代表市场上愿意购买的订单信息。 同样地,每个元素也是一个数组,包含价格和数量。价格代表买家愿意购买加密货币的单价,数量代表在该价格上买家愿意购买的加密货币总量。 通过分析 bids 列表,可以深入了解市场上的购买意愿和潜在的支撑位。 大量的 bids 订单堆积在某个价格附近,可能预示着该价格将成为一个重要的支撑位,价格下跌可能会在该位置获得强劲的买盘支撑。
  • timestamp : 时间戳,记录了数据产生的时间。它通常以Unix时间戳的形式表示,即自1970年1月1日0时0分0秒(UTC)起至当前时间的总秒数。 时间戳的精度至关重要,尤其是在高频交易和算法交易中,微小的延迟都可能导致交易决策的差异。 通过时间戳,可以对市场数据进行时间序列分析,追踪价格随时间的变化趋势,并进行历史数据的回测和验证。

4. 交易历史 (Trades) 查询

交易历史记录了指定交易对在特定时间范围内的所有成交记录,这些记录包含了每一笔交易的价格、数量、时间戳以及买卖方向等关键信息。通过分析这些历史数据,交易者可以深入了解市场的交易活动,识别潜在的趋势、支撑位和阻力位。

交易历史数据对于技术分析至关重要。它可以帮助交易者评估市场的波动性,判断交易对的流动性,并分析成交量的分布情况。例如,成交量大幅增加可能预示着趋势的改变或价格突破。

更具体地说,交易历史数据可用于:

  • 趋势识别: 通过观察价格和成交量的变化,判断价格是处于上升趋势、下降趋势还是横盘震荡。
  • 支撑位和阻力位识别: 寻找历史上价格多次反弹或受阻的位置,这些位置可能成为未来的支撑位或阻力位。
  • 波动率分析: 衡量价格在一定时期内的波动幅度,帮助交易者评估风险。
  • 流动性评估: 分析成交量的变化,判断市场深度,避免在流动性不足的市场中进行大额交易。
  • 套利机会发现: 比较不同交易所的交易历史,寻找价格差异进行套利。

交易历史API通常会提供多种筛选和排序选项,例如按时间范围、价格范围、成交量大小等进行筛选,以便交易者更精确地获取所需的信息。

API 地址: /api/v3/markets/{market_id}/trades 请求方式: GET

参数:

  • market_id : 交易对 ID,用于指定要查询交易历史的市场。 例如, ETH-BTC 表示以太坊与比特币的交易对。 请确保使用平台支持的有效交易对 ID。
  • limit : 返回的交易记录数量,控制每次 API 调用返回的交易条数。 默认值为 20 条,最大允许值为 200 条。 如果需要获取大量历史数据,建议使用分页参数配合循环调用 API。
  • before : 分页参数,用于获取指定 ID 之前的交易记录。 如果提供了此参数,API 将返回 ID 小于此值的交易记录。 适用于向后翻页浏览历史数据。
  • after : 分页参数,用于获取指定 ID 之后的交易记录。 如果提供了此参数,API 将返回 ID 大于此值的交易记录。 适用于向前翻页浏览历史数据。 注意: before after 参数不能同时使用,必须选择其一。

示例: 获取ETH-BTC交易对的最新交易记录

使用GET方法请求 /api/v3/markets/ETH-BTC/trades 端点,可以获取以太坊 (ETH) 与比特币 (BTC) 交易对的最新交易信息。 ?limit=50 参数用于限制返回的交易记录数量,本例中设置为最多返回50条最近的交易记录。如果省略 limit 参数,服务器可能会返回默认数量的交易记录。此API调用允许开发者实时监控市场动态,分析交易行为,并据此制定交易策略。需要注意的是,API的版本号 (v3) 可能会随着平台升级而改变,因此在使用时应查阅最新的API文档以确保兼容性。不同交易所或平台的API接口可能存在差异,需要根据具体平台提供的API文档进行调整。返回的数据通常包含交易时间、交易价格、交易数量以及买卖方向等信息,采用JSON格式。

响应示例:

此响应示例展示了加密货币交易平台API返回的订单簿信息,采用JSON格式。以下是对各字段的详细解释:


{
   "code": 200,
   "message": "OK",
   "data": [
      {
        "id": "1234567890",
        "price": "0.05",
        "amount": "2",
        "side": "buy",
        "timestamp": "1678886400"
      },
      {
        "id": "1234567891",
        "price": "0.051",
        "amount": "3",
        "side": "sell",
        "timestamp": "1678886401"
      },
      ...
   ]
}

字段解释:

  • code : HTTP状态码,指示请求是否成功。 200 表示请求成功。其他常见的状态码包括 400 (Bad Request), 401 (Unauthorized), 500 (Internal Server Error)等,具体含义需参考API文档。
  • message : 状态码的文字描述,例如 OK 表示请求成功。该字段主要用于辅助理解状态码。
  • data : 包含订单簿数据的数组。每个元素代表一个挂单信息。如果请求失败,该字段可能为空或包含错误信息。

data 数组中的对象字段解释:

  • id : 订单的唯一标识符。这是一个字符串,用于追踪和取消特定订单。不同的交易所可能使用不同的ID生成策略,例如UUID或自增序列。
  • price : 订单的价格。例如, 0.05 表示以0.05个单位的计价货币(例如美元)购买或出售一个单位的标的资产(例如比特币)。精度和单位取决于交易对。
  • amount : 订单的数量。例如, 2 表示订单中包含2个单位的标的资产。该值通常是可分割的,取决于交易所的最小交易单位。
  • side : 订单的方向,即买入或卖出。 buy 表示买单, sell 表示卖单。
  • timestamp : 订单创建的时间戳,通常以Unix时间戳表示(自1970年1月1日以来经过的秒数)。 1678886400 表示一个特定的时间点,可以通过在线工具或编程语言转换为可读的日期和时间。

... 表示数组中可能包含更多订单信息。实际返回的订单数量取决于交易所的设置和请求参数(例如深度)。订单通常按照价格排序,买单按价格降序排列,卖单按价格升序排列。

字段解释:

  • id : 交易 ID,是每笔成功撮合交易的唯一标识符。这个ID用于在区块链网络或交易所内部追踪和审计交易记录。
  • price : 成交价格,指买方和卖方最终达成一致并完成交易的价格。该价格以指定交易对的计价货币表示(例如,ETH/USDT交易对中,价格以USDT计价)。
  • amount : 成交数量,表示买方或卖方成交的资产数量。此数量通常以交易对的基础货币表示(例如,在ETH/USDT交易对中,数量以ETH计价)。
  • side : 交易方向,指示交易是买入还是卖出。 buy 表示买方主动买入, sell 表示卖方主动卖出。这反映了市场参与者的交易意图。
  • timestamp : 时间戳,记录交易发生的精确时间。通常以Unix时间戳(自1970年1月1日以来的秒数)或毫秒数表示,用于按时间顺序排列和分析交易数据。

5. K 线数据 (KLine/Candlesticks) 查询

K 线数据,亦称 Candlesticks 数据,是加密货币技术分析的核心基石。它以图形化的方式呈现指定时间周期内的价格波动信息,是绘制 K 线图,研判价格走势,预测未来市场行为的关键依据。每一个 K 线代表一个时间周期,例如 1 分钟、5 分钟、1 小时、1 天等,并记录该周期内的开盘价、收盘价、最高价和最低价。

通过对 K 线形态、组合以及成交量的分析,交易者可以识别潜在的买入或卖出信号,判断市场趋势的强弱。例如,常见的 K 线形态包括锤头线、倒锤头线、吞没形态、星线等,不同的形态反映了不同的市场情绪和力量对比。结合移动平均线 (MA)、相对强弱指数 (RSI)、移动平均收敛散度 (MACD) 等技术指标,可以更准确地预测价格走势。

通常,交易所或数据提供商会提供 API 接口,允许用户查询历史 K 线数据。这些 API 接口通常需要指定交易对 (例如 BTC/USDT)、时间周期 (例如 1 小时) 和数据范围 (例如最近 30 天) 等参数。返回的数据格式通常为 JSON,包含每个时间周期的开盘价、收盘价、最高价、最低价和成交量等信息。 使用这些数据,开发者可以构建自己的交易策略,量化分析工具或可视化图表应用。

API 地址: /api/v3/markets/{market_id}/kline 请求方式: GET

参数:

  • market_id : 交易对 ID,用于指定需要查询的交易市场。例如, ETH-BTC 表示以太坊与比特币的交易对。务必使用交易所支持的准确 ID。
  • period : K 线周期,定义了每根 K 线代表的时间跨度。 可选值包括:
    • 1m : 1 分钟。 每根 K 线代表 1 分钟内的价格波动。
    • 5m : 5 分钟。 每根 K 线代表 5 分钟内的价格波动。
    • 15m : 15 分钟。 每根 K 线代表 15 分钟内的价格波动。
    • 30m : 30 分钟。 每根 K 线代表 30 分钟内的价格波动。
    • 1h : 1 小时。 每根 K 线代表 1 小时内的价格波动。
    • 4h : 4 小时。 每根 K 线代表 4 小时内的价格波动。
    • 1d : 1 天。 每根 K 线代表 1 天内的价格波动。
    • 1w : 1 周。 每根 K 线代表 1 周内的价格波动。
    • 1M : 1 月。 每根 K 线代表 1 个月内的价格波动。
    选择合适的周期取决于您的交易策略和分析的时间范围。
  • limit : 返回的 K 线数量,决定了 API 调用一次性返回多少根 K 线数据。 默认值为 20,这意味着如果您不指定此参数,API 将返回最近的 20 根 K 线。 最大值为 1000,超过此限制将导致 API 报错或截断结果。
  • timestamp : K 线开始时间的时间戳(Unix 时间戳,单位为秒)。 此参数允许您获取指定时间点之后的 K 线数据。 例如,如果您想获取从 2023 年 10 月 27 日 00:00:00 UTC 开始的 K 线数据,您需要将该时间转换为 Unix 时间戳,并将其作为此参数的值传递。 如果不提供此参数,API 通常会返回最新的 K 线数据。

示例: 获取ETH-BTC交易对的K线数据

使用GET方法请求API接口,获取以太坊(ETH)兑比特币(BTC)交易对的K线(OHLCV)数据。K线数据是加密货币交易分析中的重要工具,它包含了指定时间周期内的开盘价(Open)、最高价(High)、最低价(Low)、收盘价(Close)以及成交量(Volume)信息。

请求URL:

GET /api/v3/markets/ETH-BTC/kline?period=1h&limit=100

参数说明:

  • /api/v3/markets/ETH-BTC/kline : 指定了API的endpoint,表明请求的是ETH-BTC交易对的K线数据。不同的交易所或平台可能有不同的endpoint格式。
  • period=1h : 定义了K线的周期为1小时。这意味着每个K线代表一个小时内的价格波动。常见的周期包括1分钟(1m)、5分钟(5m)、15分钟(15m)、30分钟(30m)、1小时(1h)、4小时(4h)、1天(1d)等。
  • limit=100 : 指定了返回的K线数量。这里设置为100,表示请求最近的100个1小时K线数据点。 交易所通常对limit参数有最大值限制,例如,某些交易所可能限制最大值为1000。

返回数据示例 (JSON格式):


[
  {
    "timestamp": 1678886400000,
    "open": 0.068,
    "high": 0.0685,
    "low": 0.0675,
    "close": 0.0682,
    "volume": 120.5
  },
  {
    "timestamp": 1678890000000,
    "open": 0.0682,
    "high": 0.0688,
    "low": 0.0678,
    "close": 0.0685,
    "volume": 95.2
  },
  // ... 更多K线数据
]

字段解释:

  • timestamp : K线开始的时间戳 (Unix时间戳,毫秒级)。
  • open : 开盘价,即该时间周期开始时的价格。
  • high : 最高价,即该时间周期内的最高成交价格。
  • low : 最低价,即该时间周期内的最低成交价格。
  • close : 收盘价,即该时间周期结束时的价格。
  • volume : 成交量,即该时间周期内的交易量。

注意事项:

  • API接口的可用性和参数可能因交易所而异。请务必参考对应交易所的官方API文档。
  • 时间戳通常是毫秒级的Unix时间戳,需要根据需要进行转换。
  • 频繁请求API可能会受到速率限制,请合理控制请求频率。
  • 在实际应用中,需要处理API返回的错误信息,例如请求失败、参数错误等。

响应示例:

此响应示例展示了加密货币交易平台API可能返回的数据格式,用于获取历史价格数据。 code 字段表示API请求的状态码, 200 通常表示成功。 message 字段提供关于API请求状态的文本描述, OK 意味着请求成功处理。 data 字段是一个数组,包含了时间序列的交易数据。

数组中的每个元素代表一个时间段内的市场数据快照,包含以下关键字段:

  • timestamp : Unix时间戳,表示该时间段的开始时间,精确到秒。例如, 1678886400 对应的时间是2023年3月15日 00:00:00 UTC。
  • open : 开盘价,表示该时间段内第一笔交易的价格。例如, 0.048 表示该时间段的第一笔交易价格为0.048单位的某种计价货币。
  • close : 收盘价,表示该时间段内最后一笔交易的价格。例如, 0.05 表示该时间段的最后一笔交易价格为0.05单位的某种计价货币。
  • high : 最高价,表示该时间段内达到的最高价格。例如, 0.052 表示该时间段内的最高价格为0.052单位的某种计价货币。
  • low : 最低价,表示该时间段内达到的最低价格。例如, 0.047 表示该时间段内的最低价格为0.047单位的某种计价货币。
  • volume : 成交量,表示该时间段内交易的加密货币数量。例如, 1000 表示该时间段内交易了1000单位的加密货币。
  • amount : 成交额,表示该时间段内的总交易额,通常以计价货币表示。例如, 50 表示该时间段内的总交易额为50单位的某种计价货币。成交额通常由每笔交易的价格乘以交易数量计算得出,此处可能为简化后的汇总值。

... 表示 data 数组中可能包含更多的时间段数据。API可能会根据请求参数,例如时间范围、时间粒度(例如,分钟、小时、天)等,返回不同长度的数据。

字段解释:

  • timestamp : K 线起始时间的时间戳,通常以 Unix 时间戳(秒)或毫秒为单位,表示该 K 线所代表时间周期的开始时刻。此时间戳对于时间序列分析和数据同步至关重要。
  • open : 开盘价,指在该 K 线代表的时间周期内,第一笔交易的价格。开盘价是衡量市场起始情绪的重要指标,反映了交易者对该时间周期开始时价值的判断。
  • close : 收盘价,指在该 K 线代表的时间周期内,最后一笔交易的价格。收盘价被广泛认为是该时间周期内最具代表性的价格,常用于技术分析和趋势判断。
  • high : 最高价,指在该 K 线代表的时间周期内,达到的最高成交价格。最高价可以反映市场在该时间周期内的最高活跃程度和潜在阻力位。
  • low : 最低价,指在该 K 线代表的时间周期内,达到的最低成交价格。最低价可以反映市场在该时间周期内的最低活跃程度和潜在支撑位。
  • volume : 成交量,指在该 K 线代表的时间周期内,交易的总量,通常以基础货币单位(例如,比特币/美元交易对中的比特币)衡量。成交量是衡量市场活跃度和趋势强度的重要指标。高成交量通常意味着更强的趋势可靠性。
  • amount : 成交额,指在该 K 线代表的时间周期内,成交的总价值,通常以计价货币单位(例如,比特币/美元交易对中的美元)衡量。成交额可以更全面地反映市场交易活动的规模。计算方式通常为每笔交易的价格乘以交易量,然后对整个时间周期内的所有交易进行加总。

6. 身份验证

所有与 BigONE API 的交互都需要进行身份验证,以确保安全性和授权访问。每个 API 请求都必须包含身份验证信息,这些信息通过自定义 HTTP 请求头传递。

  • X-BIGONE-API-KEY : 您的唯一 API 密钥。此密钥用于标识您的 BigONE 账户,并且必须妥善保管,防止泄露。
  • X-BIGONE-TIMESTAMP : Unix 时间戳,表示请求发送时的秒数。 时间戳的目的是防止重放攻击,BigONE 服务器会验证时间戳的有效性,拒绝时间戳过旧或未来的请求。建议使用服务器时间同步工具,例如 NTP,确保时间准确。
  • X-BIGONE-SIGNATURE : 请求签名,用于验证请求的完整性和真实性。签名是使用您的 Secret Key 对请求的特定部分进行加密后的结果,证明请求确实来自您,且未被篡改。

签名的生成过程涉及多个步骤,需要精确执行以确保签名有效:

  1. 准备请求参数: 确定所有需要包含在签名中的请求参数。这通常包括查询参数(在 GET 请求中)和请求体参数(在 POST、PUT 等请求中)。排除任何不需要签名的参数,例如上传的文件数据。
  2. 参数排序: 将准备好的请求参数按照字母顺序(区分大小写)进行排序。例如,参数 amount 应该排在 currency 之前。 这步很重要,因为签名算法对参数顺序敏感。
  3. 参数拼接: 将排序后的参数名和参数值拼接成一个字符串。每个参数名和参数值之间使用等号 = 连接,多个参数之间使用连接符 & 连接。 确保 URL 编码参数值,特别是包含特殊字符(例如空格、斜杠等)的值。 如果参数值为空字符串,则该参数仍然需要包含在签名字符串中。
  4. HMAC-SHA256 加密: 使用您的 Secret Key 作为密钥,对拼接后的字符串进行 HMAC-SHA256 加密。HMAC-SHA256 是一种消息认证码算法,结合了哈希函数和密钥,能够有效地验证数据的完整性和真实性。大多数编程语言都提供了 HMAC-SHA256 加密库。
  5. Base64 编码: 将 HMAC-SHA256 加密后的二进制结果转换为 Base64 编码字符串。Base64 是一种将二进制数据编码为 ASCII 字符的方案,便于在 HTTP 头部中传输。

为了帮助开发者更好地理解和实现签名过程,BigONE 官方文档提供了详细的示例代码,涵盖多种编程语言。请务必参考官方文档中的代码示例,并根据您的具体编程环境进行调整。 正确实现签名算法是成功调用 BigONE API 的关键。建议仔细阅读 BigONE API 的安全最佳实践,以确保您的 API 密钥和 Secret Key 得到妥善保护,防止未经授权的访问。

7. 错误处理

当 API 请求发生错误时,服务器将返回一个包含错误信息的响应。响应体中的 code 字段包含一个预定义的错误码,而 message 字段则提供更详细的错误描述。开发者应根据这些信息进行适当的错误处理,以确保应用程序的健壮性。常见的错误码及其含义如下:

  • 400 : 客户端发送的请求包含无效参数。这可能包括参数缺失、参数格式错误或参数值超出允许范围。请仔细检查请求参数并确保其符合 API 文档的要求。
  • 401 : 身份验证失败,表明客户端提供的 API 密钥无效或已过期,或者请求缺少必要的身份验证信息。请检查 API 密钥是否正确,并确保在请求头中包含了正确的身份验证信息。必要时,重新生成 API 密钥。
  • 404 : 请求的资源未找到。这可能意味着请求的 URL 地址不正确,或者请求的资源(例如,特定的交易对)不存在。请检查 URL 地址是否正确,并确认请求的资源是否存在。
  • 429 : 请求频率过高,超过了 API 的速率限制。为了保护服务器资源,API 会限制客户端的请求频率。如果收到此错误码,请降低请求频率,或者使用更高级的速率限制策略(如果 API 提供)。实现指数退避算法可以有效地处理此错误。
  • 500 : 服务器内部错误,表示服务器在处理请求时遇到了未预料到的错误。这通常是服务器端的问题,客户端无法直接解决。如果持续出现此错误,请联系 API 提供商寻求帮助。

在编写代码时,务必包含适当的错误处理机制,捕获并处理这些常见的错误码。例如,可以使用 try-except 块来捕获异常,并根据不同的错误码执行相应的操作,例如重试请求、记录错误日志或向用户显示错误信息。良好的错误处理能够显著提高应用程序的稳定性,并为用户提供更好的体验。详细的错误日志对于调试和排查问题至关重要,应将错误码、错误信息以及相关的请求参数记录到日志中。