本文作者:咔咔

如何下载B行情?

咔咔 2025-12-04 1 抢沙发
如何下载B行情?摘要: 使用官方API(推荐,免费且高效):这是最直接、最权威、最稳定的方式,适合开发者、量化交易者和需要自动化处理数据的人,使用第三方工具(适合非程序员):有一些图形化工具可以帮助你下载...
  1. 使用官方API(推荐,免费且高效):这是最直接、最权威、最稳定的方式,适合开发者、量化交易者和需要自动化处理数据的人。
  2. 使用第三方工具(适合非程序员):有一些图形化工具可以帮助你下载历史K线数据,无需编写代码。

使用官方API(Binance API)

币安提供了强大的WebSocket和REST API接口来获取实时和历史数据,这里我们主要介绍获取历史K线数据的REST API,因为它最适合“下载”这个需求。

API概览

币安的K线数据API端点是:GET /api/v3/klines

如何下载B行情?
(图片来源网络,侵删)

这个接口可以让你获取指定交易对、时间间隔和范围的K线数据。

请求参数

你需要通过URL参数来指定你想要的数据:

参数 类型 是否必需 描述
symbol STRING 交易对,"BTCUSDT" (注意:必须是全大写)
interval STRING K线时间间隔,"1m", "5m", "1h", "1d"
startTime LONG 起始时间,UTC时间戳(毫秒)
endTime LONG 结束时间,UTC时间戳(毫秒)
limit INT 返回的K线数量,默认500,最大1000

常用时间间隔:

  • 1m: 1分钟
  • 3m: 3分钟
  • 5m: 5分钟
  • 15m: 15分钟
  • 30m: 30分钟
  • 1h: 1小时
  • 2h: 2小时
  • 4h: 4小时
  • 6h: 6小时
  • 8h: 8小时
  • 12h: 12小时
  • 1d: 1天
  • 3d: 3天
  • 1w: 1周
  • 1M: 1月

如何获取时间戳?

你需要将日期时间转换为UTC时间戳(毫秒),你可以使用在线工具或编程语言转换。

如何下载B行情?
(图片来源网络,侵删)

将 "2025-01-01 00:00:00" 转换为时间戳:

  • 在线搜索 "UTC timestamp converter"
  • 在Python中:int(pd.Timestamp("2025-01-01 00:00:00").timestamp() * 1000)

API调用示例

示例1:获取最近1000条BTC/USDT的1小时K线数据

https://api.binance.com/api/v3/klines?symbol=BTCUSDT&interval=1h&limit=1000

示例2:获取2025年全年BTC/USDT的1天K线数据

  • 开始时间: 2025-01-01 00:00:00 -> 1672531200000
  • 结束时间: 2025-12-31 23:59:59 -> 1704067199000
https://api.binance.com/api/v3/klines?symbol=BTCUSDT&interval=1d&startTime=1672531200000&endTime=1704067199000

数据格式

API返回的是一个JSON数组,数组的每一个元素代表一根K线,每根K线也是一个包含12个元素的数组:

如何下载B行情?
(图片来源网络,侵删)
[
  [
    1499040000000,      // Open time (K线开盘时间)
    "0.01634790",       // Open (开盘价)
    "0.80000000",       // High (最高价)
    "0.01575800",       // Low (最低价)
    "0.01577100",       // Close (收盘价)
    "148976.11427815",  // Volume (交易量)
    1499644799999,      // Close time (K线收盘时间)
    "2434.19055334",    // Quote asset volume (报价资产成交量)
    308,                // Number of trades (成交笔数)
    "1756.87402397",    // Taker buy base asset volume (主动买入成交量)
    "28.46694368",      // Taker buy quote asset volume (主动买入成交额)
    "17928899.62484339" // Ignore (忽略)
  ],
  // ... more klines
]

编程实现(以Python为例)

这是最常用的方式,你需要安装 requests 库。

import requests
import pandas as pd
from datetime import datetime
def get_binance_klines(symbol, interval, start_date, end_date):
    """
    从币安下载历史K线数据
    :param symbol: 交易对, e.g., "BTCUSDT"
    :param interval: K线间隔, e.g., "1d", "1h"
    :param start_date: 开始日期, e.g., "2025-01-01"
    :param end_date: 结束日期, e.g., "2025-12-31"
    :return: Pandas DataFrame
    """
    # 转换日期为时间戳
    start_ts = int(datetime.strptime(start_date, "%Y-%m-%d").timestamp() * 1000)
    end_ts = int(datetime.strptime(end_date, "%Y-%m-%d").timestamp() * 1000)
    # API URL
    url = "https://api.binance.com/api/v3/klines"
    # 请求参数
    params = {
        'symbol': symbol,
        'interval': interval,
        'startTime': start_ts,
        'endTime': end_ts,
        'limit': 1000  # 每次最多请求1000条
    }
    # 发送请求
    response = requests.get(url, params=params)
    response.raise_for_status()  # 如果请求失败则抛出异常
    data = response.json()
    # 将数据转换为Pandas DataFrame
    df = pd.DataFrame(data, columns=[
        'Open time', 'Open', 'High', 'Low', 'Close', 'Volume',
        'Close time', 'Quote asset volume', 'Number of trades',
        'Taker buy base asset volume', 'Taker buy quote asset volume', 'Ignore'
    ])
    # 数据类型转换
    numeric_cols = ['Open', 'High', 'Low', 'Close', 'Volume']
    df[numeric_cols] = df[numeric_cols].astype(float)
    # 转换时间戳为可读日期
    df['Open time'] = pd.to_datetime(df['Open time'], unit='ms')
    df['Close time'] = pd.to_datetime(df['Close time'], unit='ms')
    # 设置索引
    df.set_index('Open time', inplace=True)
    return df
# --- 使用示例 ---
if __name__ == "__main__":
    # 获取2025年全年的BTC日K线数据
    btc_daily_data = get_binance_klines("BTCUSDT", "1d", "2025-01-01", "2025-12-31")
    # 打印前5行数据
    print(btc_daily_data.head())
    # 保存到CSV文件
    btc_daily_data.to_csv("BTCUSDT_2025_daily.csv")
    print("数据已保存到 BTCUSDT_2025_daily.csv")

使用第三方工具(适合非程序员)

如果你不想写代码,可以使用一些现成的工具来下载数据。

TradingView

TradingView本身不直接提供“导出大量历史数据”的功能,但可以借助浏览器插件。

  • 方法

    1. 打开 TradingView 并选择你想看的币种和K线图(BTC/USDT 的日线图)。
    2. 在图表的右上角,找到“设置”图标(齿轮状)。
    3. 在“设置”中,找到“数据”选项卡。
    4. 你会看到“下载数据”的选项,通常可以导出当前图表显示范围的数据(最多几年)。
    5. 导出格式通常是CSV。
  • 优点:图形化界面,非常直观。

  • 缺点:一次能下载的数据量有限,不适合下载非常长周期的数据。

Binance Data Downloader (第三方脚本/工具)

在GitHub上可以找到一些专门为币安设计的下载数据的Python脚本或工具,它们通常已经封装好了所有逻辑,你只需要修改几个参数即可。

  • 如何找到:在GitHub搜索 "binance data downloader" 或 "币安 行情数据下载"。
  • 优点:通常比手动写代码更简单,功能可能更完善(例如支持断点续传)。
  • 缺点:需要一定的技术基础来运行脚本,并且需要信任第三方代码。

重要注意事项

  1. API频率限制:官方API有请求频率限制,对于历史数据接口,限制相对宽松,但如果你以极高的频率请求,仍有可能被临时限制,下载大量数据时,最好在请求之间加入短暂的延时(time.sleep(0.1))。
  2. 数据完整性:币安API返回的数据是原始数据,可能包含异常值(某些交易量极小的K线),在使用前,你可能需要进行数据清洗。
  3. 服务器时间:如果你的策略对时间要求极高,可以使用 /api/v3/time 接口获取币安服务器的精确时间,以确保你的请求时间戳是准确的。
  4. 官方文档:所有API的细节和最新变化,请务必参考币安官方API文档,这是最权威的信息来源。
方法 优点 缺点 适合人群
官方API 免费、稳定、高效、数据权威、可定制性强 需要编程知识 开发者、量化交易者、数据分析师
第三方工具 图形化、简单易用、无需编程 功能受限、数据量有限、可能不可靠 普通用户、只想获取少量数据进行手动分析的人

对于绝大多数需要下载Binance行情数据的场景,使用官方API是最佳选择,上面的Python代码示例已经为你提供了一个非常好的起点。

文章版权及转载声明

作者:咔咔本文地址:https://jits.cn/content/20077.html发布于 2025-12-04
文章转载或复制请以超链接形式并注明出处杰思科技・AI 股讯

阅读
分享

发表评论

快捷回复:

评论列表 (暂无评论,1人围观)参与讨论

还没有评论,来说两句吧...