关键词:Coinbase API v2、历史价格、批量获取、加密数据、candles、granularity、Python 代码示例、加密分析
为什么选择 Coinbase API 抓取历史价格?
加密货币的价格波动往往呈现出周期性趋势。无论是做回测研究还是训练机器学习模型,都需要覆盖长周期的历史价格作为底稿。Coinbase API v2 提供的官方接口不仅免费,而且稳定可靠,非常适合中小团队和个人开发者。
👉 用 15 分钟学会 Coinbase API v2 升级你的策略信号,点击即可查看完整示例代码和背后的核心逻辑。
开始前的三个必备条件
- 拥有一个有效的 Coinbase 账户并完成邮箱验证。
- 在「API 设置」里新建一个 API Key,勾选「读取」权限即可,无需资金操作权限。
- 理解
curl或 Python 基础语法,特别是requests库的 GET 请求流程。
拆解两条必懂接口
| 场景 | 端点名称 | 核心功能 | 重要限制 | 频率保护 |
|---|---|---|---|---|
/v2/prices/XXX-XXX/historic | 资产-法币价 | 直接返回开高低收 | 最多 300 条 | 10 次/秒/IP |
/products/XXX-XXX/candles | 交易产品 | 返回 OHLCV 数组 | 每组 300 条 | 10 次/秒/IP |
核心关键词巧植入:granularity 参数决定每根蜡烛条的粒度,60 秒到 86400 秒共 6 档可选。
用「candles」一口气拉 30 天日线
请求骨架示例
GET https://api.pro.coinbase.com/products/BTC-USD/candles
?start=2024-01-01T00:00:00Z
&end=2024-01-31T00:00:00Z
&granularity=86400返回格式速读
单条纪录按顺序打包成数组:
[ time, low, high, open, close, volume ]time为 Unix 时间戳(秒级)。- 其余浮点数保留 2 位小数,便于直接落地到 DataFrame。
完整 Python 3 代码(无第三方依赖)
import requests, time, json, datetime as dt
def candles_batch(granularity=86400, pages=3):
"""
逐段拉取避免一次超限
"""
end = int(dt.datetime.utcnow().timestamp())
start = end - granularity * 300 * pages # 回退 N 页
url = "https://api.pro.coinbase.com/products/BTC-USD/candles"
params = {
"start": dt.datetime.utcfromtimestamp(start).isoformat() + "Z",
"end": dt.datetime.utcfromtimestamp(end).isoformat() + "Z",
"granularity": granularity
}
resp = requests.get(url, params=params)
resp.raise_for_status()
return sorted(resp.json(), key=lambda x: x[0]) # 按时间升序
if __name__ == "__main__":
data = candles_batch()
json.dump(data, open("btc_ohlc.json", "w", encoding="utf-8"))常见问题解答(FAQ)
Q1:免费额度够用吗?
A:官方每 IP 每端点 10 次/秒,普通人跑日线一天轮询一次毫无压力。
Q2:为什么会出现「429 Too Many Requests」?
A:多数发生在并发爬虫,解决方法是 HTTP 429 后暂停 1 秒并使用指数退避重试。
Q3:granularity=60 却没有 60 秒一条的数据?
A:Coinbase 只在有实际成交的秒点推送记录,出现空档是常态,可后处理做补空。
Q4:如何获取 ETH-EUR 等其他交易对?
A:把 URL 中的 BTC-USD 替换成有效的 产品ID 即可;完整列表可用 /products 端点拉取。
Q5:有没有现成 Python 封装?
A:Historic-Crypto 虽便捷,但作者已数月未更新;若求稳定,建议上面示例或自研 SDK。
Q6:Linux 定时脚本跑不动怎么办?
A:检查系统时间是否跟 UTC 同步,时间偏差大于 30 秒会被拒:
sudo ntpdate -u pool.ntp.org把数据喂进可视化
有了 OHLCV,下一步很容易延伸到:
- 移动均线——用 pandas
.rolling() - 回测框架——如
backtrader - 机器学习特征工程——构建收益率、波动率、资金流向等多因子
👉 如果你想同步整合「现货」与「永续合约」的深度图,看看如何一分钟搭建 WebSocket 数据流。
小结与行动清单
- 立即注册 Coinbase,生成只读 API Key。
- 用本节示例脚本跑 3 个月日线,验证无误后进入 1 小时线。
- 将
granularity与start~end区间封装为环境变量,适配生产化调度。
掌握 “Coinbase API v2、历史价格、candles 端点” 这套组合拳,Crypto 分析再也无需高价订阅平台数据,真正做到「用开源换成本」。祝编码愉快,下一波行情来临前先囤好历史数据!