为何Binance K线指定时间间隔下最新收盘价存在差异?
问题:Binance API获取K线时同一时间戳的收盘价为何不断变化?
我通过Binance API获取K线(蜡烛图)数据,使用以下代码循环打印:
for i in range(0, 10): service = BinanceSpotService() klines = service.get_klines(symbol='BTCUSDT', interval=Client.KLINE_INTERVAL_15MINUTE) print(klines[["date", "close"]].tail(2))
每次循环打印的最后两条数据如下:
date close 498 2022-11-13 07:45:00 16774.99 499 2022-11-13 08:00:00 16769.12 date close 498 2022-11-13 07:45:00 16774.99 499 2022-11-13 08:00:00 16769.10 date close 498 2022-11-13 07:45:00 16774.99 499 2022-11-13 08:00:00 16772.34 date close 498 2022-11-13 07:45:00 16774.99 499 2022-11-13 08:00:00 16770.48
最后一条数据的日期未发生变化,但收盘价却各不相同,请问这是什么原因?
解答
这是因为你请求的15分钟K线(时间戳08:00:00对应的K线)还处于未闭合状态。
Binance的K线数据遵循以下规则:
- 已闭合的K线(比如07:45:00的15分钟线)数据完全固定,不会再发生变化
- 正在运行中的K线(当前时间段尚未结束的),其收盘价会随着市场实时成交不断更新,直到该时间段结束、K线正式闭合后,数据才会固定下来
你的循环请求时,08:00:00开始的15分钟周期还没到结束时间(要到08:15:00才会闭合),所以每次请求返回的都是当前最新的成交价格作为临时收盘价,因此数值会不一样。
如果要获取完全固定的K线数据,只需要过滤掉最后一条未闭合的K线,或者等该时间段结束后再发起请求。
内容的提问来源于stack exchange,提问作者barteloma
相关产品推荐
相关产品推荐

