如何通过币安API批量获取多个以USDT为基准的交易对历史K线数据
币安多交易对历史K线批量获取实现方法
你可以通过遍历交易对列表循环调用接口的方式实现批量获取,具体实现步骤如下:
- 第一步先定义公共配置参数和目标交易对列表
# 配置参数 TARGET_PAIRS = ["AVAXUSDT", "LUNAUSDT", "ADAUSDT"] # 可按需求自行增减交易对 TIME_INTERVAL = Client.KLINE_INTERVAL_12HOUR START_DATE = "1 Jan, 2019" END_DATE = "18 Sep, 2021" # 存储所有交易对数据的容器 all_candlesticks = {}
- 第二步遍历交易对列表调用接口,建议加异常捕获避免单个交易对请求失败导致整个脚本中断
import time for pair in TARGET_PAIRS: try: print(f"正在获取{pair}的K线数据...") kline_data = client.get_historical_klines(pair, TIME_INTERVAL, START_DATE, END_DATE) all_candlesticks[pair] = kline_data # 拉取单交易对完成后可直接写入本地文件,避免内存占用过高 # import pandas as pd # pd.DataFrame(kline_data).to_csv(f"{pair}_{TIME_INTERVAL}.csv", index=False) # 增加请求间隔避免触发币安API频率限制 time.sleep(1) except Exception as e: print(f"获取{pair}数据失败,错误信息:{str(e)}") continue
- 如果你需要拉取所有USDT计价的交易对,不需要手动拼接列表,可以调用币安交易所信息接口自动筛选
# 自动获取所有处于交易状态的USDT计价现货交易对 exchange_info = client.get_exchange_info() usdt_pairs = [s['symbol'] for s in exchange_info['symbols'] if s['quoteAsset'] == 'USDT' and s['status'] == 'TRADING'] # 将上文的TARGET_PAIRS替换为usdt_pairs即可批量拉取全量USDT交易对数据
注意事项
- 币安API有请求频率限制,短时间内大量请求会被临时封禁,可根据拉取数量调整
time.sleep的等待时长 - 接口返回的K线数据默认顺序为:开盘时间、开盘价、最高价、最低价、收盘价、成交量、收盘时间、成交额、成交笔数、主动买入成交量、主动买入成交额、预留字段,可按需提取对应字段存储
- 如果拉取的时间跨度大、交易对数量多,建议每完成一个交易对的拉取就写入本地文件,不要全部存储在内存中避免程序崩溃丢失数据
内容的提问来源于stack exchange,提问作者Swashbuckler75
相关产品推荐
相关产品推荐

