You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Binance API下载1s间隔USD-M期货K线时遇无效间隔错误

Binance USD-M期货1s K线下载问题解决

错误原因

Binance USD-M期货API不支持1秒(1s)级别的K线间隔,而现货API支持该间隔,这就是相同代码在期货场景下触发Invalid interval错误的核心原因。期货API支持的K线间隔最小为1分钟。

解决方案

方案1:使用期货支持的最小间隔获取K线

将间隔参数替换为期货API支持的1m(1分钟),代码修改如下:

from binance.client import Client, HistoricalKlinesType

symbol = 'ETHUSDT'
# 使用期货支持的最小间隔:1分钟
interval = Client.KLINE_INTERVAL_1MINUTE
date_from = "19 Aug 2023"
date_to = "20 Aug 2023"
client = Client()

klines = client.get_historical_klines(symbol, interval, date_from, date_to, klines_type=HistoricalKlinesType.FUTURES)

方案2:获取逐笔成交数据合成1s K线

如果必须获取1秒级别的高频数据,可以通过获取期货的逐笔成交记录,再自行聚合生成1s间隔的K线。示例代码如下:

from binance.client import Client

symbol = 'ETHUSDT'
start_time = Client.parse_time("19 Aug 2023")
end_time = Client.parse_time("20 Aug 2023")
client = Client()

trades = []
last_trade_id = 0

# 分页获取逐笔成交数据(单次请求最多返回1000条)
while True:
    batch_trades = client.futures_trades(symbol=symbol, limit=1000, fromId=last_trade_id)
    if not batch_trades:
        break
    
    # 筛选时间范围内的成交数据
    filtered_trades = [t for t in batch_trades if start_time <= t['time'] <= end_time]
    trades.extend(filtered_trades)
    
    last_trade_id = batch_trades[-1]['id']
    # 若当前批次最后一条数据时间超出范围,停止请求
    if batch_trades[-1]['time'] > end_time:
        break

# 后续可根据trades中的时间、价格、成交量字段,按1秒间隔聚合生成K线

内容的提问来源于stack exchange,提问作者serbazov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 04:35:21