区块链 > 比特币 > 比特币历史价格数据下载指南

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

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

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

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

最后,您将能够检索比特币的过去价格,无论您是需要快速的 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 的主要方式有两种:

两种方法都需要 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 为:

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

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

步骤 1:先决条件

1、安装 Python

从 python.org 下载。

建议使用3.7或以上版本。

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

python --version 

2、创建虚拟环境

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

python -m venv coingecko_env

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

3、安装所需的软件包

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

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 发出请求。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 天的历史数据。

其作用:

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}")

示例输出:

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

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

专业提示:在开发过程中,运行脚本时最好保持 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 年以来更精细的数据,并享受更高的速率限制以及专属端点的访问权限,请考虑订阅套餐。

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

本站提醒:投资有风险,入市须谨慎,本内容不作为投资理财建议。

相关文章