当前位置:主页 > 区块链 > 比特币 > 比特币历史价格数据下载指南

如何下载比特币历史价格数据(分步指南)

2025-09-24 11:09:56 | 来源: | 作者:佚名
比特币历史价格数据不仅仅是图表上的数字,更是回测策略、洞察市场周期、理解投资者行为,甚至驱动应用程序或研究工具的基础,可靠的数据有助于交易者验证决策,在本指南中,我们将介绍使用 CoinGecko 资源下载比特币历史价格数据的两种实用方法,一起来参考一下吧

比特币拥有悠久而丰富的交易历史,使其成为全球分析最多的资产之一。历史价格数据不仅仅是图表上的数字,更是回测策略、洞察市场周期、理解投资者行为,甚至驱动应用程序或研究工具的基础。可靠的数据有助于交易者验证决策,研究人员检验理论,开发者构建用户信赖的功能。

在本指南中,我们将介绍使用 CoinGecko 资源下载比特币历史价格数据的两种实用方法:

  • 直接从 CoinGecko 上的比特币页面导出(无需代码)。
  • 使用CoinGecko API在电子表格或代码中实现自动访问。

最后,您将能够检索比特币的过去价格,无论您是需要快速的 CSV 文件进行分析还是需要为您的项目提供自动数据馈送。

如何下载比特币历史价格数据(分步指南)

如何以 Excel 或 CSV 格式下载比特币历史数据?

下载比特币历史数据的最快方法是直接从 CoinGecko比特币历史数据页面下载。此方法非常适合需要 CSV 或 Excel 电子表格格式的数据进行快速一次性分析的用户,因为无需注册或登录账户。

如果您需要更细粒度的数据,CoinGecko API 提供了/coins/{id}/market_chart/coins/{id}/ohlc等端点,用于获取历史价格和 OHLC 数据。

如何从 CoinGecko 网站下载比特币历史数据

按照这些简单的步骤,只需单击几下即可下载数据。

步骤 1:导航到 CoinGecko 上的比特币硬币页面,然后单击“历史数据”选项卡。

第 2 步:从可用选项中选择所需的时间范围(例如,过去 7 天、30 天、1 年或自定义日期)。

步骤 3:在数据表的右上角,单击下载图标,然后选择将数据下载为CSVXLS文件,如下所示:

如何下载比特币历史价格数据(分步指南)

下载后,该文件可在任何电子表格软件(例如 Excel 或 Google Sheets)中打开。数据已预先格式化,并带有清晰的列标题(日期、市值、交易量、价格),方便您创建图表、运行计算或导入其他工具。

以下是 Microsoft Excel 中导出数据的示例:

如何下载比特币历史价格数据(分步指南)

如何使用 CoinGecko API 下载比特币历史数据?

对于可重复的工作流程、精确的时间窗口或可按需刷新的数据,CoinGecko API是理想的解决方案。它允许您将比特币的历史价格直接提取到电子表格或项目中,用于分析、仪表板或回测交易策略。

使用 API 的主要方式有两种:

  • 无代码:将数据直接导入 Google 表格或 Excel。
  • 使用代码:使用 Python、JavaScript、PHP 等语言以编程方式获取数据。

两种方法都需要 CoinGecko API 密钥。如果您没有,请按照本指南获取免费的演示 API 密钥。在本指南中,比特币的 API 币种 ID 很简单bitcoin

在 Google 表格或 Excel 中下载比特币历史数据(无需代码)

如果您更喜欢无代码方法,可以使用 CoinGecko API 将比特币的历史价格数据直接提取到 Google 表格或 Excel 中。这样,您无需任何编程即可分析、绘制图表和共享数据。

Google 表格

您可以使用免费的 API 连接器扩展来提取数据。

安装 API 连接器:从 Google Workspace Marketplace 添加“Mixed Analytics 的 API 连接器”扩展。

创建新请求:在扩展中,创建一个新请求并输入历史数据的 CoinGecko API 请求 URL:

演示 API:

https://api.coingecko.com/api/v3/coins/bitcoin/market_chart?vs_currency=usd&days=30&interval=daily&precision=full?x_cg_demo_api_key=YOUR_API_KEY

专业 API:

https://pro-api.coingecko.com/api/v3/coins/bitcoin/market_chart?vs_currency=usd&days=30&interval=daily&precision=full?x_cg_pro_api_key=YOUR_API_KEY

运行请求:执行请求将数据拉入当前工作表并以所需的格式下载数据。

要获得带有屏幕截图的详细演练,请阅读有关如何 将加密货币价格导入 Google 表格的完整指南。

Microsoft Excel:

Excel 内置的 Power Query 工具可以直接从 API 获取数据。

打开 Power Query:在 Excel 中,转到“数据”选项卡并选择“来自 Web”。

输入API URL:在对话框中输入API请求URL:

演示 API:

https://api.coingecko.com/api/v3/coins/bitcoin/market_chart?vs_currency=usd&days=30&interval=daily&precision=full?x_cg_demo_api_key=YOUR_API_KEY

专业 API:

https://api.coingecko.com/api/v3/coins/bitcoin/market_chart?vs_currency=usd&days=30&interval=daily&precision=full?x_cg_demo_api_key=YOUR_API_KEY

转换和加载: Power Query 编辑器将打开,允许您将 JSON 响应转换为表格,然后将其加载到工作表中以供下载和导出。

要获得带有屏幕截图的详细演练,请阅读有关如何 将加密货币价格导入 Excel 的完整指南。

使用 Python 下载比特币历史数据 

对于更高级或自动化的用例,您可以通过编程方式获取数据。CoinGecko API 兼容任何支持 HTTP 请求的语言,但本指南使用 Python,因为它在数据分析领域非常流行。

API 端点和 URL

Demo 和 Pro API 的基本 URL 为:

  • 演示 API: https://api.coingecko.com/api/v3
  • 专业 API: https://pro-api.coingecko.com/api/v3

对于历史价格数据,我们将使用/coins/{id}/market_chart端点。此端点返回指定天数的价格、市值和 24 小时交易量。

在本节中,我们将介绍如何使用 Python 获取比特币的历史价格数据。

步骤 1:先决条件

1、安装 Python

从 python.org 下载。

建议使用3.7或以上版本。

通过在终端或命令提示符上运行以下命令来确认安装:

python --version 

2、创建虚拟环境

这样可以使依赖项保持清晰且特定于项目。首先,在终端或命令提示符中运行以下命令来创建环境:

python -m venv coingecko_env

接下来,使用适合您的操作系统的命令激活它:

  • Windows: coingecko_env\Scripts\activate
  • macOS/Linux: source coingecko_env/bin/activate

3、安装所需的软件包

在您的环境中,安装以下软件包:

  • 请求:允许您的程序进行 API 调用(通过网络发送和接收数据)。
  • Pandas:一个强大的库,用于处理和组织表格数据。我们将用它来整理 API 输出。
  • Openpxyl:一个允许 Pandas 写入 Excel 工作簿的库。
  • Pathlib:一个方便的标准库工具,用于检查文件是否已经存在。

pip install requests pandas openpxyl pathlib 

4、检查软件包是否正确安装

您可以通过运行以下命令来确认软件包是否已安装:

pip show requests pandas

第 2 步:管理您的 API 密钥

为了保证您的 API 密钥安全并且与您的代码分开,请将其存储在外部 JSON 文件中。

创建一个名为 api_keys.json 的文件并添加您的密钥,如下所示:

{
  "x-cg-demo-api-key": "YOUR_DEMO_API_KEY",
  "x-cg-pro-api-key": "YOUR_PRO_API_KEY"
}

步骤 3:设置密钥检索和 API 调用

安装先决条件并将 API 密钥安全地存储在适当的位置后,下一步是设置辅助函数 以确保:

  • 您的 API 密钥正在 正确加载。
  • 该程序可以成功与 CoinGecko API 通信。

首先,我们将设置辅助函数来加载 API 密钥并向 CoinGecko API 发出请求。get_Response ()函数将处理 API 调用,并将端点、标头和参数作为参数。这种模块化方法使代码保持简洁且可重用。

import json
from pathlib import Path
import requests as rq
import pandas as pd
import openpyxl  # required by pandas' ExcelWriter (engine="openpyxl")
PUB_DEMO_URL = "https://api.coingecko.com/api/v3"
PUB_PRO_URL  = "https://pro-api.coingecko.com/api/v3"
def get_demo_key():
    # CHANGE the path if your file is elsewhere
    with open(r"YOUR_KEYS_FILE_PATH", "r", encoding="utf-8") as f:
        key_dict = json.load(f)
    return key_dict.get("x-cg-demo-api-key")
def get_pro_key():
    with open(r"YOUR_KEYS_FILE_PATH", "r", encoding="utf-8") as f:
        key_dict = json.load(f)
    return key_dict.get("x-cg-pro-api-key")
def get_response(endpoint, headers=None, params=None, base_url=None):
    if not base_url:
        raise ValueError("base_url is required (use PUB_DEMO_URL or PUB_PRO_URL).")
    url = f"{base_url}{endpoint}"
    resp = rq.get(url, headers=headers, params=params, timeout=30)
    resp.raise_for_status()
    return resp.json()

专业提示:可在任何 API 请求中 重复使用get_Response()辅助函数。只需为每次调用提供特定的端点 (endpoint)、带有 Demo 或 Pro 键的标头 (headers )、 paramsbase_url作为参数即可。

步骤 4:测试 API 连接

在获取完整数据集之前,最好先测试一下你的设置。/ping端点是确认 API 密钥正常工作的简单方法。以下脚本会加载你的密钥,ping API,然后进行一次小型测试调用,以获取比特币的前两个数据点。

# 0) Load key and show last 4 chars so we know it loaded
key = get_Demo_key()
print("Loaded demo key (last 4):", (key or "")[-4:])
headers = {"accept": "application/json", "x-cg-demo-api-key": key}
base_url = PUB_DEMO_URL
# 1) Ping to Authenticate
ping = get_Response("/ping", headers=headers, base_url=base_url)
print("PING:", ping)
# 2) A small real call
params = {"vs_currency": "usd", "days": "7", "interval": "daily"}
mc = get_Response("/coins/bitcoin/market_chart", headers=headers, params=params, base_url=base_url)
print("First 2 prices:", mc.get("prices", [])[:2])

如果一切正常,您应该会看到如下所示的响应:

如何下载比特币历史价格数据(分步指南)

步骤5:获取比特币历史价格数据

现在,让我们使用/coins/{id}/market_chart端点来获取过去 7 天的历史数据。

其作用:

  • 通过 get_Response()调用按 ID 端点的硬币历史图表数据
  • 将 JSON 响应存储在 mc 中。
  • 确保定义key、headers、endpoint和params。
key = get_Demo_key()
headers = {"accept": "application/json", "x-cg-demo-api-key": key}
base_url = PUB_DEMO_URL
params = {"vs_currency": "usd", "days": "7", "interval": "daily"} #parameters to query upon, BTC daily data for the past 7 days
mc = get_Response("/coins/bitcoin/market_chart", headers=headers, params=params, base_url=base_url )

步骤 6:处理数据并将其下载到 Excel

API 响应会以单独的列表形式返回价格、市值和交易量。以下代码会处理这些原始 JSON 数据,将其组合成干净的 Pandas DataFrame,并将其保存到 Excel 工作簿中的工作表中。如果该文件已存在,它将替换该工作表,以便轻松重新运行脚本。

#Shape the data
def series_to_df(series, value_col):
    df = pd.DataFrame(series, columns=["ts_ms", value_col])
    df["date"] = pd.to_datetime(df["ts_ms"], unit="ms")
    return df[["date", value_col]]
df_price  = series_to_df(mc.get("prices", []),        "price_usd")
df_mcap   = series_to_df(mc.get("market_caps", []),   "market_cap_usd")
df_volume = series_to_df(mc.get("total_volumes", []), "volume_24h_usd")
df = (
    df_price.merge(df_mcap, on="date", how="left")
            .merge(df_volume, on="date", how="left")
            .sort_values("date")
            .reset_index(drop=True)
)[["date", "price_usd", "market_cap_usd", "volume_24h_usd"]]
# 3) Append to an existing workbook as a NEW sheet (or create if missing)
from pathlib import Path
out_path   = "crypto_market_data.xlsx"          # your master workbook
sheet_name = "btc_7d_usd"                       # name the sheet for clarity
if Path(out_path).exists():
    # Append; if the sheet already exists, REPLACE it (safer for reruns)
    with pd.ExcelWriter(out_path, engine="openpyxl", mode="a", if_sheet_exists="replace") as xw:
        df.to_excel(xw, index=False, sheet_name=sheet_name)
else:
    # Create the workbook and write the first sheet
    with pd.ExcelWriter(out_path, engine="openpyxl") as xw:
        df.to_excel(xw, index=False, sheet_name=sheet_name)
print(f"Saved sheet '{sheet_name}' in {out_path}")def series_to_df(series, value_col):
        df = pd.DataFrame(series, columns=["ts_ms", value_col])
        df["date"] = pd.to_datetime(df["ts_ms"], unit="ms")
        return df[["date", value_col]]
    df_price  = series_to_df(mc.get("prices", []),        "price_usd")
    df_mcap   = series_to_df(mc.get("market_caps", []),   "market_cap_usd")
    df_volume = series_to_df(mc.get("total_volumes", []), "volume_24h_usd")
    df = (
        df_price.merge(df_mcap, on="date", how="left")
                .merge(df_volume, on="date", how="left")
                .sort_values("date")
                .reset_index(drop=True)
    )[["date", "price_usd", "market_cap_usd", "volume_24h_usd"]]
    out_path   = "crypto_market_data.xlsx"  # your master workbook
    sheet_name = "btc_7d_usd"               # rename as you like
    mode = "a" if Path(out_path).exists() else "w"
    with pd.ExcelWriter(out_path, engine="openpyxl", mode=mode, if_sheet_exists="replace") as xw:
        df.to_excel(xw, index=False, sheet_name=sheet_name)
    print(f"Saved sheet '{sheet_name}' in {out_path}")

示例输出:

如何下载比特币历史价格数据(分步指南)

您可以通过更改以下变量来自定义输出:

  • value_col:重命名列(例如,“price_in_usd”)。
  • sheet_name:设置 Excel 工作表的显示方式(例如“btc_30d_eur”)。
  • out_path:选择用于保存 Excel 工作簿的文件名或文件夹。

专业提示:在开发过程中,运行脚本时最好保持 Excel 文件关闭,以避免写入错误。

如何下载其他加密货币的历史数据

虽然本指南以比特币为例,但同样的方法也适用于 CoinGecko 上数千种其他加密货币。要获取其他加密货币的数据,只需在 API 调用中替换货币 ID(例如,将“比特币”更改为“以太坊”或“solana”)。

您可以在CoinGecko 网站的任何单个硬币页面上找到 API ID  。

如何下载比特币历史价格数据(分步指南)

专业提示:币种 ID 区分大小写,多个币种可能使用相似的代码。为避免错误,请务必直接从 CoinGecko 网站或我们的 API 文档获取并使用正确的 ID 。

未来发展

通过访问历史数据,您可以构建各种强大的工具。对于想要进一步探索的读者,以下是一些相关指南:

结论

在本指南中,我们演示了两种从 CoinGecko 下载比特币历史数据的有效方法。从网站直接导出非常适合快速手动将数据提取到 CSV 或 Excel 文件中;而 CoinGecko API 则为使用 Google Sheets、Excel 或 Python 等工具的开发者和分析师提供了强大的编程解决方案。按照概述的步骤,您可以访问丰富的历史数据,以支持您的分析、回测策略以及构建 DeFi 应用程序。

虽然本文中使用的端点可以通过免费的 Demo API 密钥访问,但它仅提供最多 365 天的历史数据。如果您需要访问自 2013 年以来更精细的数据,并享受更高的速率限制以及专属端点的访问权限,请考虑订阅套餐。

以上就是如何下载比特币历史价格数据(分步指南)的详细内容,更多关于比特币历史价格数据下载指南的资料请关注脚本之家其它相关文章!

免责声明:本文只为提供市场讯息,所有内容及观点仅供参考,不构成投资建议,不代表本站观点和立场。投资者应自行决策与交易,对投资者交易形成的直接或间接损失,作者及本站将不承担任何责任。!
Tag:数据   历史价格   比特币  

你可能感兴趣的文章

更多

热门币种

  • 币名
    最新价格
    24H涨幅
  • bitcoin BTC 比特币

    BTC

    比特币

    $ 67236.74¥ 464148.66
    +0.46%
  • ethereum ETH 以太坊

    ETH

    以太坊

    $ 1939.63¥ 13389.65
    -1.86%
  • tether USDT 泰达币

    USDT

    泰达币

    $ 0.9994¥ 6.899
    -0.01%
  • ripple XRP 瑞波币

    XRP

    瑞波币

    $ 1.4066¥ 9.71
    -1.13%
  • binance-coin BNB 币安币

    BNB

    币安币

    $ 607.44¥ 4193.27
    -0.34%
  • usdc USDC USD Coin

    USDC

    USD Coin

    $ 1.002¥ 6.917
    +0%
  • solana SOL Solana

    SOL

    Solana

    $ 82.624¥ 570.36
    +1.05%
  • tron TRX 波场

    TRX

    波场

    $ 0.2837¥ 1.9584
    +1.32%
  • dogecoin DOGE 狗狗币

    DOGE

    狗狗币

    $ 0.098298¥ 0.6785
    -0.56%
  • bitcoin-cash BCH 比特现金

    BCH

    比特现金

    $ 560.33¥ 3868.07
    +0.53%

币圈快讯

  • 火币HTX将于今日20时上线HYPE(Hyperliquid)

    2026-02-20 13:05
    据火币HTX公告显示,火币HTX将于2月20日12:00(GMT+8)开放HYPE的充币服务。HYPE/USDT现货交易将于2月20日20:00(GMT+8)开放。HYPE的提币服务将于2月21日20:00(GMT+8)开放。 据悉,Hyperliquid是近期热门的PerpDEX龙头项目,旗舰原生应用程序是一个完全链上的订单簿永续合约交易所,即HyperliquidDEX。Hyperliquid是一款从头开始优化的高性能L1,其愿景是打造一个完全链上的开放式金融系统。
  • UniswapLabs宣布开发者平台正式进入Beta测试阶段

    2026-02-20 13:03
    据官方消息,UniswapLabs宣布正式以Beta版形式开放Uniswap开发者平台,开发者现可生成UniswapAPI密钥,在数分钟内将兑换与流动性提供功能直接集成至应用。此外,Uniswap还推出面向代理式工作流的集成Skill,支持通过命令行一键接入API。
  • 比特币现货ETF昨日总净流出1.66亿美元持续3日净流出

    2026-02-20 13:01
    根据SoSoValue数据,昨日(美东时间2月19日)比特币现货ETF总净流出1.66亿美元。 昨日单日净流出最多的比特币现货ETF为贝莱德(Blackrock)ETFIBIT,单日净流出为1.64亿美元,目前IBIT历史总净流入达612.38亿美元。 其次为ValkyrieETFBRRR,单日净流出为170.13万美元,目前BRRR历史总净流入达3.14亿美元。 截至发稿前,比特币现货ETF总资产净值为843.70亿美元,ETF净资产比率(市值较比特币总市值占比)达6.28%,历史累计净流入已达539.25亿美元。
  • UPBIT上线Aztec(AZTEC)并支持KRW、BTC、USDT交易

    2026-02-20 13:00
    UPBIT将于2025年2月20日16:30开启Aztec(AZTEC)的交易支持,支持KRW、BTC、USDT市场。用户可于公告发布后2小时内开始进行入金,入金需通过Aztec-Ethereum网络进行。
  • 以太坊现货ETF昨日总净流出1.30亿美元贝莱德ETHA净流出9679.77万美元居首

    2026-02-20 13:00
    根据SoSoValue数据,昨日(美东时间2月19日)以太坊现货ETF总净流出1.30亿美元。 昨日单日净流出最多的以太坊现货ETF为贝莱德(Blackrock)ETFETHA,单日净流出为9679.77万美元,目前ETHA历史总净流入达118.73亿美元。 其次为灰度(Grayscale)以太坊迷你信托ETFETH,单日净流出为1843.65万美元,目前ETH历史总净流入达17.02亿美元。 截至发稿前,以太坊现货ETF总资产净值为110.04亿美元,ETF净资产比率(市值较以太坊总市值占比)达4.67%,历史累计净流入已达115.25亿美元。
  • 查看更多