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 快照。