KuCoin API掘金指南:实时行情数据,量化交易的秘密武器!

时间: 分类:知识库 阅读:62

Kucoin API 行情

KuCoin API 提供了一套强大的工具,允许开发者获取实时市场数据、执行交易操作以及管理账户信息。利用这些 API 接口,用户可以构建自动化交易策略、进行量化分析、开发交易机器人,以及创建各种基于 KuCoin 平台的应用程序。本文将深入探讨 KuCoin API 的行情相关功能,包括如何获取不同交易对的实时价格、成交量、深度数据以及历史 K 线数据。

获取实时价格

获取特定交易对的实时价格是加密货币交易和分析的基础。KuCoin API 提供多种途径获取最新的市场价格信息,满足不同需求。其中,使用 GET /api/v1/market/ticker 接口是最便捷且常用的方法之一。此接口能够快速返回指定交易对的最新成交价、最高价、最低价、成交量等关键数据,为用户提供即时的市场概况。除了 /api/v1/market/ticker , KuCoin 还提供了 GET /api/v1/market/allTickers 接口,允许用户一次性获取所有交易对的实时价格信息,适用于需要监控大量交易对的场景。 通过 WebSocket 连接,用户可以订阅实时价格更新,无需轮询 API,即可获取推送的最新价格变动。这对于高频交易和实时监控至关重要。

接口地址: GET /api/v1/market/ticker?symbol={symbol}

参数:

  • symbol (必选): 交易对,指定进行交易或查询的市场。 例如, BTC-USDT 表示比特币与 USDT 的交易对。 交易对的格式通常为 [交易货币]-[计价货币] ,其中“交易货币”是您想要买卖的资产,而“计价货币”是用于衡量其价值的资产。 务必确保提供的交易对存在且在交易所中被支持,否则可能会导致 API 调用失败或返回错误信息。支持的交易对列表通常可以通过交易所的 API 或官方文档获取。

返回值:

返回一个 JSON 对象,详细描述了市场行情,包含以下关键字段:

  • sequence : 消息序列号。这是一个递增的数字,用于跟踪和验证市场数据的连续性,确保消息没有丢失或乱序。
  • bestBid : 最佳买价。当前市场上最高的买入报价,代表了买方愿意支付的最高价格。这对于理解市场买盘力量至关重要。
  • bestAsk : 最佳卖价。当前市场上最低的卖出报价,代表了卖方愿意接受的最低价格。这反映了市场卖盘的意愿。
  • price : 最新成交价。最近一笔交易的成交价格,也称为最新价。这是衡量资产当前价值的关键指标。
  • size : 最新成交量。最近一笔交易的成交数量,通常以基础货币单位计。成交量与价格结合分析,可以更好地理解市场活跃度和趋势强度。
  • time : 时间戳(毫秒)。Unix 时间戳,精确到毫秒,记录了数据产生的准确时间。这对于高频交易和时间序列分析至关重要。

示例: 获取BTC-USDT交易对实时行情

使用GET方法请求 /api/v1/market/ticker 接口,并指定 symbol 参数为 BTC-USDT ,即可获取BTC-USDT交易对的实时行情数据。

请求示例:

GET /api/v1/market/ticker?symbol=BTC-USDT

返回结果示例:


{
  "code": "200000",
  "data": {
    "sequence":  "1570000000000",
    "bestBid": "19000.00",
    "bestAsk": "19001.00",
    "price": "19000.50",
    "size": "0.01",
    "time": 1678886400000
  }
}

字段说明:

  • code : 接口返回状态码, 200000 表示成功。
  • data : 包含实时行情数据的对象。
  • sequence : 消息序列号,可用于确定数据更新顺序。
  • bestBid : 当前最佳买入价。
  • bestAsk : 当前最佳卖出价。
  • price : 最新成交价。
  • size : 最新成交量。
  • time : 最新数据的时间戳,单位为毫秒。

通过此API接口,开发者能够实时获取特定交易对的关键市场数据,包括最佳买卖价格、最新成交价和成交量等信息。这些数据对于构建自动化交易策略、风险管理系统以及市场分析工具至关重要,助力开发者进行更精确的交易决策和市场研判。 此接口返回的数据更新频率高,需要开发者注意数据处理的效率,避免造成数据拥堵。

获取全市场行情快照

为了全面掌握市场动态,投资者和交易者常常需要获取所有交易对的实时行情数据。通过调用 GET /api/v1/market/allTickers 接口,您可以获取当前市场中所有交易对的行情快照,这对于量化分析、风险评估以及制定交易策略至关重要。

此接口返回的数据通常包含以下关键信息:

  • 交易对 (Symbol): 明确标识交易市场的交易代码,例如 BTC/USDT 或 ETH/BTC。
  • 最新成交价 (Last Price): 最近一笔交易的成交价格,是衡量市场活跃度的重要指标。
  • 24小时最高价 (24h High): 过去24小时内的最高成交价格,反映了市场在一段时间内的价格上限。
  • 24小时最低价 (24h Low): 过去24小时内的最低成交价格,反映了市场在一段时间内的价格下限。
  • 24小时成交量 (24h Volume): 过去24小时内的总成交数量,表明了市场的交易活跃程度。
  • 24小时成交额 (24h Quote Volume): 过去24小时内以报价货币计算的总成交金额,提供了市场交易规模的信息。
  • 时间戳 (Timestamp): 行情数据生成的时间,确保数据的时效性。

需要注意的是,由于市场波动频繁,建议高频调用该接口以获取最新的行情信息,尤其是在高波动性市场环境下。同时,合理设置请求频率,避免对服务器造成不必要的压力。

接口地址: GET /api/v1/market/allTickers 参数: 无

返回值:

返回一个 JSON 对象,该对象包含一个数组,其中包含了所有交易对的实时行情数据。数组中的每一个元素都代表一个交易对的行情信息,具体字段解释如下:

  • symbol : 交易对的唯一标识符,通常由两个交易资产的代码组成,例如 "BTCUSDT"。
  • buy : 当前市场上的最佳买入价格,也称为最高买价或 Bid Price。 这是指买方愿意为此交易对支付的最高价格。
  • sell : 当前市场上的最佳卖出价格,也称为最低卖价或 Ask Price。 这是指卖方愿意接受的最低价格。
  • changeRate : 指过去 24 小时内该交易对价格的变化百分比,计算公式为:((当前价格 - 24小时前价格) / 24小时前价格) * 100%。 使用百分比表示能够更直观地反映价格变动幅度。
  • changePrice : 指过去 24 小时内该交易对价格变化的绝对值,计算公式为:当前价格 - 24小时前价格。 以具体数值展示价格变动情况。
  • high : 指过去 24 小时内该交易对达到的最高成交价格。
  • low : 指过去 24 小时内该交易对达到的最低成交价格。
  • vol : 指过去 24 小时内该交易对的成交量,以基础货币 (base currency) 为单位。 例如,对于 BTCUSDT 交易对,成交量将以 BTC 为单位。
  • volValue : 指过去 24 小时内该交易对的成交额,以计价货币 (quote currency) 为单位。 例如,对于 BTCUSDT 交易对,成交额将以 USDT 为单位。
  • last : 指该交易对的最新成交价格,代表了最近一笔交易的成交价格。
  • averagePrice : 指过去 24 小时内该交易对的平均成交价格,通常通过加权平均算法计算得出,可以反映这段时间内市场的整体交易价格水平。
  • takerBaseVol : 指过去 24 小时内,主动买入方(Taker)买入的基础货币 (base currency) 的成交量。 这是衡量市场主动买盘强弱的一个指标。
  • takerQuoteVol : 指过去 24 小时内,主动买入方(Taker)买入的计价货币 (quote currency) 的成交量。 该指标可以辅助分析市场交易行为。

示例: 获取所有交易对的行情数据

使用 GET 方法请求 /api/v1/market/allTickers 接口,可以获取平台所有交易对的实时行情快照。

返回结果:JSON 格式的数据,包含所有交易对的详细信息。

{ "code": "200000", "data": [ { "symbol": "BTC-USDT", "buy": "19000.00", "sell": "19001.00", "changeRate": "0.01", "changePrice": "100.00", "high": "19500.00", "low": "18500.00", "vol": "1000", "volValue": "19000000", "last": "19000.50", "averagePrice": "19000.00", "takerBaseVol": "500", "takerQuoteVol": "9500000" }, { "symbol": "ETH-USDT", "buy": "1300.00", "sell": "1301.00", "changeRate": "0.02", "changePrice": "26.00", "high": "1350.00", "low": "1250.00", "vol": "2000", "volValue": "2600000", "last": "1300.50", "averagePrice": "1300.00", "takerBaseVol": "1000", "takerQuoteVol": "1300000" } ] }

各字段含义:

  • code : 状态码, 200000 表示成功。
  • data : 包含交易对行情数据的数组。
  • symbol : 交易对名称,例如 "BTC-USDT"。
  • buy : 最佳买一价。
  • sell : 最佳卖一价。
  • changeRate : 24 小时价格变动百分比。
  • changePrice : 24 小时价格变动绝对值。
  • high : 24 小时最高价。
  • low : 24 小时最低价。
  • vol : 24 小时成交量(以基础货币计价)。
  • volValue : 24 小时成交额(以计价货币计价)。
  • last : 最新成交价。
  • averagePrice : 24 小时平均成交价。
  • takerBaseVol : 主动买入成交量(以基础货币计价)。
  • takerQuoteVol : 主动买入成交额(以计价货币计价)。

这个接口对于需要监控大量加密货币市场动态的应用场景非常有用。 例如,可以用于构建实时行情看板、程序化交易系统、或者市场分析工具,帮助用户快速了解市场整体趋势和单个交易对的详细信息,从而做出更明智的投资决策。

获取交易对深度信息

深度信息(Order Book)是加密货币交易中至关重要的信息来源,它展示了当前市场中买单(Bid)和卖单(Ask)的价格和数量分布。通过对深度信息的深入分析,交易者能够更全面地了解市场的买卖力量对比,从而辅助预测潜在的价格走势和支撑阻力位。这对于制定交易策略,例如判断市场情绪、评估流动性风险,以及进行套利交易等,都具有重要意义。

KuCoin API 提供了一个专门的接口 GET /api/v1/market/orderbook/level2_100 ,用于获取指定交易对的深度信息快照。 level2_100 表示该接口返回的是 Level 2 级别的深度数据,包含了市场上最佳的 100 个买单和 100 个卖单。Level 2 数据相比 Level 1 数据(仅包含最佳买一价和卖一价)提供了更细粒度的市场深度信息,使得交易者可以更精确地评估市场流动性和潜在的价格冲击。

除了 level2_100 ,KuCoin 还可能提供其他深度的订单簿接口,例如 level2_5 level2_1000 ,分别代表不同深度的订单簿。选择哪个接口取决于你的具体需求和对数据精度的要求。更深度的订单簿(例如 level2_1000 )提供了更全面的市场概览,但也会带来更高的数据处理和网络带宽需求。在使用此接口时,请务必注意频率限制,以避免被 API 限制访问。

接口地址: GET /api/v1/market/orderbook/level2_100?symbol={symbol}

参数:

  • symbol (必选): 交易对,用于指定要进行交易的资产对。它是字符串类型,必须符合交易所支持的格式。常见的例子包括 BTC-USDT (比特币/泰达币), ETH-BTC (以太坊/比特币), LTC-EUR (莱特币/欧元) 等。确保交易对在交易所是有效的,拼写正确,区分大小写。交易所通常会提供其支持的交易对列表,您需要参考这些列表来选择正确的交易对。例如,如果交易所使用分隔符是斜杠`/`,则交易对可能是 BTC/USDT ,务必根据交易所规则使用。如果 `symbol` 参数不正确或不受支持,请求可能会失败并返回错误代码。

返回值:

API调用将返回一个JSON格式的对象,该对象包含当前订单簿的快照信息。该对象主要包含以下关键字段,用于描述市场上的买卖订单情况:

  • sequence : 消息序列号。这是一个递增的整数,用于追踪订单簿更新的顺序。你可以通过比较连续收到的消息的序列号来判断是否有消息丢失,从而确保订单簿数据的完整性。消息序列号越高,代表订单簿状态越新。
  • asks : 卖单数组。该数组代表了市场上当前存在的卖单(也称为要价)。每个元素是一个包含价格和数量的JSON对象,结构通常为 [price, quantity] 。其中, price 代表卖单的价格, quantity 代表在该价格上的可用卖出数量。 卖单数组通常按照价格升序排列,即数组的第一个元素代表市场上最低的卖价。 开发者可以利用此数据来了解市场的卖方意愿和价格阻力位。
  • bids : 买单数组。该数组代表了市场上当前存在的买单(也称为出价)。与卖单数组类似,每个元素也是一个包含价格和数量的JSON对象,结构同样为 [price, quantity] 。其中, price 代表买单的价格, quantity 代表在该价格上的可用买入数量。买单数组通常按照价格降序排列,即数组的第一个元素代表市场上最高的买价。 开发者可以利用此数据来了解市场的买方意愿和价格支撑位。

示例: 获取 Level 2 100 档深度数据

请求方法: GET

请求路径: /api/v1/market/orderbook/level2_100

请求参数:

  • symbol (必选): 交易对,例如 BTC-USDT

请求示例:

GET /api/v1/market/orderbook/level2_100?symbol=BTC-USDT

返回结果:

{
  "code": "200000",
  "data":  {
     "sequence": "1570000000000",
     "asks": [
        [
        "19001.00",
            "0.1"
         ],
       [
        "19002.00",
            "0.2"
       ]
    ],
      "bids":  [
        [
         "19000.00",
         "0.3"
        ],
        [
          "18999.00",
          "0.4"
      ]
     ]
   }
}

返回字段说明:

  • code : 状态码, 200000 表示成功。
  • data : 返回的数据。
    • sequence : 消息序列号,用于确认数据更新的顺序。
    • asks : 卖单列表,按照价格升序排列。
      • 每个卖单包含两个元素:价格和数量。
      • 例如: ["19001.00", "0.1"] 表示价格为 19001.00 USDT,数量为 0.1 BTC 的卖单。
    • bids : 买单列表,按照价格降序排列。
      • 每个买单包含两个元素:价格和数量。
      • 例如: ["19000.00", "0.3"] 表示价格为 19000.00 USDT,数量为 0.3 BTC 的买单。

此接口提供的是订单簿深度数据的快照,仅包含指定数量(例如,100档)的最佳买卖单。 该数据适用于快速获取市场概览。 asks bids 数组都只返回最靠近中间价的挂单数据,减少了数据传输量。

对于需要实时、更详细订单簿数据的应用,建议使用 WebSocket API,该 API 提供持续更新的订单簿数据流。 WebSocket API能够提供全量的订单簿数据,并且推送频率更快,更适合高频交易和做市策略。

获取历史 K 线数据

K 线图,也被称为蜡烛图,是加密货币交易中分析市场价格走势和预测未来趋势的关键工具。它通过图形化的方式展示特定时间段内加密货币的开盘价、收盘价、最高价和最低价,为交易者提供了丰富的市场信息。KuCoin API 提供了强大的 GET /api/v1/market/candles 接口,允许开发者和交易员获取指定交易对的历史 K 线数据,从而进行技术分析、量化交易策略回测和市场趋势研判。

通过调用 GET /api/v1/market/candles 接口,您可以指定以下参数以定制您的数据请求:

  • symbol : 必选参数,指定需要获取 K 线数据的交易对,例如 "BTC-USDT"。
  • type : 必选参数,定义 K 线的时间周期。KuCoin API 支持多种时间周期,例如 "1min" (1 分钟), "5min" (5 分钟), "15min" (15 分钟), "30min" (30 分钟), "1hour" (1 小时), "4hour" (4 小时), "1day" (1 天), "1week" (1 周)。 选择合适的周期取决于您的交易策略和分析目标。
  • startAt : 可选参数,指定 K 线数据的起始时间戳(Unix 时间戳,单位为秒)。 如果不指定,则返回最近的 K 线数据。
  • endAt : 可选参数,指定 K 线数据的结束时间戳(Unix 时间戳,单位为秒)。 如果不指定,则返回直到现在的 K 线数据。

返回的数据将包含一系列 K 线数据点,每个数据点通常包含以下信息:

  • time : 该 K 线的起始时间戳(Unix 时间戳,单位为秒)。
  • open : 该 K 线的开盘价。
  • close : 该 K 线的收盘价。
  • high : 该 K 线的最高价。
  • low : 该 K 线的最低价。
  • volume : 该 K 线的交易量。
  • turnover : 该 K 线的交易额。

合理利用这些数据,您可以构建复杂的量化交易策略,进行技术指标分析,例如移动平均线 (MA)、相对强弱指数 (RSI)、布林带 (Bollinger Bands) 等,从而提高交易决策的准确性和效率。 请注意,获取大量历史数据可能会消耗一定的 API 调用频率,请合理控制您的请求频率,避免触发 API 的限流机制。

接口地址: GET /api/v1/market/candles?symbol={symbol}&type={type}&startAt={startAt}&endAt={endAt}

参数:

  • symbol (必选): 交易对,指定需要查询K线数据的交易市场。例如, BTC-USDT 表示比特币兑USDT的交易对。这个参数必须提供,否则无法确定要获取哪个市场的K线数据。不同的交易所支持的交易对不同,务必参考交易所的API文档确认支持的交易对。
  • type (必选): K线类型,定义了K线的时间周期,也称为时间粒度。例如, 1min 表示1分钟K线, 5min 表示5分钟K线, 15min 表示15分钟K线, 30min 表示30分钟K线, 1hour 表示1小时K线, 4hour 表示4小时K线, 1day 表示日K线, 1week 表示周K线, 1month 表示月K线。选择不同的K线类型,会影响技术分析的精度和时间跨度。较短周期的K线(如1分钟、5分钟)适合短线交易,较长周期的K线(如日线、周线)适合长线分析。这个参数也必须提供。
  • startAt (可选): 起始时间戳(秒),指定查询K线数据的起始时间。时间戳是一个整数,表示自1970年1月1日00:00:00 UTC(Unix纪元)以来的秒数。如果未提供此参数,API通常会返回最近的K线数据。提供起始时间戳可以精确地获取指定时间段内的K线数据。
  • endAt (可选): 结束时间戳(秒),指定查询K线数据的结束时间。与 startAt 类似,时间戳也是一个整数,表示自1970年1月1日00:00:00 UTC以来的秒数。如果未提供此参数,API通常会返回截止到当前时间的K线数据。同时指定 startAt endAt 可以精确地获取指定时间段内的K线数据。如果只想获取最新的K线数据,可以不提供这两个参数。

返回值:

返回一个 JSON 对象,该对象的核心组成部分是一个 K 线数据数组。此数组的每一个元素都代表一段时间内的市场价格变动情况,包含了该时间段内加密货币的关键交易数据。该数组结构旨在提供全面的市场概览,方便用户进行技术分析和趋势预测。

  • [time, open, close, high, low, volume, turnOver]
    • time : 时间戳,精确到秒级别,代表该 K 线对应的时间段的起始时间。例如,如果 K 线周期为 1 分钟,则该时间戳表示该分钟的开始时间,采用 Unix 时间戳格式。
    • open : 开盘价,表示该时间段内第一笔交易的价格。它是衡量市场情绪和趋势的重要指标。
    • close : 收盘价,表示该时间段内最后一笔交易的价格。通常被认为是该时间段内市场力量的最终体现,对于判断后市走向具有重要参考价值。
    • high : 最高价,表示该时间段内达到的最高价格。它反映了买方在该时间段内的最大购买意愿。
    • low : 最低价,表示该时间段内达到的最低价格。它反映了卖方在该时间段内的最大抛售压力。
    • volume : 成交量,表示该时间段内交易的加密货币数量。成交量是衡量市场活跃度的重要指标,高成交量通常意味着更强的趋势信号。
    • turnOver : 成交额,表示该时间段内交易的总金额,通常以计价货币(如美元、人民币等)为单位。成交额反映了市场参与者投入的总资金量,可以更全面地衡量市场的活跃度和资金流动情况。

示例: 获取历史K线数据

请求方式: GET

请求URL: /api/v1/market/candles

请求参数:

  • symbol (必选): 交易对,例如 BTC-USDT 。表示请求比特币与USDT的交易对数据。
  • type (必选): K线类型,指定K线的时间周期。例如 1hour 表示1小时K线。支持的类型包括 1min , 5min , 15min , 30min , 1hour , 4hour , 1day , 1week , 1month
  • startAt (必选): 起始时间戳,Unix时间戳,单位为秒。例如 1678800000 。代表从这个时间点开始获取数据。
  • endAt (必选): 结束时间戳,Unix时间戳,单位为秒。例如 1678886400 。代表到这个时间点结束获取数据。

请求示例:

GET /api/v1/market/candles?symbol=BTC-USDT&type=1hour&startAt=1678800000&endAt=1678886400

返回结果: (JSON格式)


{
  "code": "200000",
  "data": [
    [
      "1678800000",  // 时间戳 (Unix时间戳,单位秒)
      "18900.00",  // 开盘价
      "19000.00",  // 收盘价
      "19050.00",  // 最高价
      "18850.00",  // 最低价
      "100",       // 成交量 (例如,BTC的数量)
      "1900000"    // 成交额 (例如,USDT的总额)
    ],
    [
      "1678803600",
      "19000.00",
      "19100.00",
      "19150.00",
      "18950.00",
      "120",
      "2280000"
    ]
  ]
}

返回数据字段说明:

  • code : 返回码, 200000 表示成功。
  • data : K线数据数组,每个元素代表一个K线。
  • 每个K线数据元素为一个数组,包含以下字段:
    • 时间戳: Unix时间戳,单位秒,表示K线开始时间。
    • 开盘价: 该时间段内的第一个成交价格。
    • 收盘价: 该时间段内的最后一个成交价格。
    • 最高价: 该时间段内的最高成交价格。
    • 最低价: 该时间段内的最低成交价格。
    • 成交量: 该时间段内的成交量,以基础货币(例如 BTC)为单位。
    • 成交额: 该时间段内的成交额,以计价货币(例如 USDT)为单位。

通过此API接口,开发者能够便捷地获取指定交易对的历史K线数据,进而支持各种技术分析,回测交易策略以及构建量化交易模型。注意时间戳的单位是秒,并且需要根据交易所的文档确定可用的K线类型。

实时行情 WebSocket API

KuCoin除了提供 REST API 用于获取历史和静态数据外,还提供强大的 WebSocket API,专门设计用于推送实时市场行情数据。WebSocket API 的优势在于其显著的低延迟和卓越的高效率,使其成为对数据实时性有极高要求的应用程序的理想选择。通过建立 WebSocket 连接,用户可以订阅各种实时数据流,包括但不限于 ticker(最新成交价和交易量等信息)、order book(买卖盘口深度数据)等。

在使用 WebSocket API 之前,必须先通过 API 请求获取一个 public token。该 token 用于验证客户端身份并授权访问 WebSocket 数据流。

获取 public token 的 API 端点如下:

POST /api/v1/bullet/public

成功获取 token 后,即可利用标准的 WebSocket 客户端库,连接到 KuCoin 的 WebSocket 服务器。连接建立后,客户端可以订阅感兴趣的 topic(主题),从而接收相应的实时数据更新。每个 topic 代表一种特定的数据类型或市场,例如特定的交易对的 ticker 数据或 order book 快照。

相关推荐: