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

如何使用python-binance获取多个加密货币的历史数据

Binance API多币种历史数据批量获取方案

现有代码每次循环会覆盖klines变量,最终仅保留最后一个币种的数据,可通过以下方案实现多币种数据批量获取:

方案1:合并为统一DataFrame(适合百级币种、中等时间跨度场景)

该方案会将所有币种数据整合到同一个表中,通过新增的币种标识字段区分不同标的,适合后续批量分析:

import pandas as pd
import time
from binance.client import Client

# 替换为你自己的API密钥
client = Client(api_key="YOUR_API_KEY", api_secret="YOUR_API_SECRET")

binance_symbols = ['BTCUSDT', 'ETHUSDT', 'XRPUSDT', 'SOLUSDT']
all_kline_data = []

for symbol in binance_symbols:
    # 获取单个币种K线数据
    raw_klines = client.get_historical_klines(
        symbol, 
        Client.KLINE_INTERVAL_1HOUR, 
        "1 Aug, 2021", 
        "24 Sep, 2021"
    )
    klines_df = pd.DataFrame(raw_klines)
    # 新增币种标识列
    klines_df["symbol"] = symbol
    # 标准化列名(Binance K线返回字段顺序固定)
    klines_df.columns = [
        "open_time", "open", "high", "low", "close", "volume",
        "close_time", "quote_volume", "trade_count", "taker_buy_base",
        "taker_buy_quote", "ignore", "symbol"
    ]
    all_kline_data.append(klines_df)
    # 增加延迟避免触发API频率限制
    time.sleep(0.5)

# 合并所有数据
final_df = pd.concat(all_kline_data, ignore_index=True)

方案2:分币种独立存储(适合大量币种、长时间跨度场景)

如果请求的时间跨度超过1年、币种数量超过200个,合并为单个文件会占用过高内存,可每个币种单独存储为本地文件:

for symbol in binance_symbols:
    raw_klines = client.get_historical_klines(
        symbol, 
        Client.KLINE_INTERVAL_1HOUR, 
        "1 Aug, 2021", 
        "24 Sep, 2021"
    )
    klines_df = pd.DataFrame(raw_klines)
    klines_df.columns = [
        "open_time", "open", "high", "low", "close", "volume",
        "close_time", "quote_volume", "trade_count", "taker_buy_base",
        "taker_buy_quote", "ignore"
    ]
    # 单独保存为csv文件
    klines_df.to_csv(f"{symbol}_1h_202108_202109.csv", index=False)
    time.sleep(0.5)

优化建议

  • 无需手动维护币种列表,可通过接口自动获取当前所有可交易的USDT本位交易对:
exchange_info = client.get_exchange_info()
binance_symbols = [
    item["symbol"] for item in exchange_info["symbols"] 
    if item["quoteAsset"] == "USDT" and item["status"] == "TRADING"
]
  • 批量请求前可先读取本地已下载的文件列表,跳过已完成的币种,避免重复消耗API请求额度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 05:54:03