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

如何用Python从币安抓取多交易对K线数据并提取OHLCV对接TA-Lib

多交易对Binance K线批量抓取及TA-Lib对接解决方案

问题根源

原代码直接将Binance接口返回的整条K线列表作为值存入DataFrame单列,每个单元格存储完整的OHLCV及附属信息数组,无法直接提取单个字段做计算。

修正后可运行代码

import pandas as pd                                                                                                     
import numpy as np                                                                                                
import talib as ta                                                                                                  
from binance.client import Client

# 初始化Binance客户端,需填入自己的API密钥
api_key = '你的API_KEY'
api_secret = '你的API_SECRET'
client = Client(api_key, api_secret)

# 要抓取的交易对列表
symbols = ['XRPBTC','NEOBTC']
time_interval = Client.KLINE_INTERVAL_15MINUTE
start_time = "1 Jul, 2021"

# 存储全量数据的列表
all_kline_data = []
# K线接口返回字段对应名称
kline_columns = [
    'open_time', 'open', 'high', 'low', 'close', 'volume',
    'close_time', 'quote_asset_volume', 'trade_count',
    'taker_buy_base_volume', 'taker_buy_quote_volume', 'ignore'
]

for symbol in symbols:
    # 拉取单交易对K线
    klines = client.get_historical_klines(symbol, time_interval, start_time)
    # 转DataFrame并指定列名
    df = pd.DataFrame(klines, columns=kline_columns)
    # 新增交易对标识列
    df['symbol'] = symbol
    # 数值类字段转换为浮点/整数类型
    numeric_cols = ['open', 'high', 'low', 'close', 'volume', 'quote_asset_volume', 'taker_buy_base_volume', 'taker_buy_quote_volume']
    df[numeric_cols] = df[numeric_cols].astype(float)
    df[['open_time', 'close_time', 'trade_count']] = df[['open_time', 'close_time', 'trade_count']].astype(int)
    # 加入总数据列表
    all_kline_data.append(df)

# 合并所有交易对数据
total_df = pd.concat(all_kline_data, ignore_index=True)
# 写入CSV
total_df.to_csv("multi_symbol_15m_kline.csv", index=False)

关键逻辑说明

  • 无需手动拆分列表,pandas可直接将接口返回的二维K线列表转换为结构化DataFrame,自动拆分每一列对应OHLCV等字段
  • 新增symbol字段标识不同交易对,后续可通过该字段筛选任意交易对的数据
  • 数值类型转换是必要操作,Binance接口返回的价格、成交量字段均为字符串格式,无法直接用于TA-Lib计算

对接TA-Lib计算示例

以下代码可批量计算所有交易对的常用技术指标:

# 按交易对分组计算指标
def calculate_ta_indicators(group_df):
    # 计算5周期、10周期均线
    group_df['ma5'] = ta.MA(group_df['close'], timeperiod=5)
    group_df['ma10'] = ta.MA(group_df['close'], timeperiod=10)
    # 计算14周期RSI
    group_df['rsi14'] = ta.RSI(group_df['close'], timeperiod=14)
    # 计算MACD
    group_df['macd'], group_df['macdsignal'], group_df['macdhist'] = ta.MACD(group_df['close'])
    return group_df

# 对每个交易对分别计算指标
result_df = total_df.groupby('symbol', group_keys=False).apply(calculate_ta_indicators)
# 包含指标的结果写入CSV
result_df.to_csv("kline_with_ta_indicators.csv", index=False)

如果需要单独提取某交易对的指标,直接筛选即可:

xrp_btc_data = result_df[result_df['symbol'] == 'XRPBTC']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 02:51:04