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

如何通过Coinbase API获取BTC-USD的午夜时点价格?

解决Coinbase获取BTC-USD午夜时点价格的问题

问题原因分析

  • 你用的Spot API带date参数,返回的是该日期内任意时点的价格(并非固定午夜时刻),所以每次调用结果会波动。
  • 第二个方法的时间戳格式错误:'%H:%M:%S:%Y'不符合strptime的格式规则,且缺少月日信息,导致生成的时间戳对应错误日期,价格自然偏离实际值。

可行解决方案

方案1:直接调用Coinbase官方OHLCV API

利用Coinbase的蜡烛图API,指定1分钟粒度查询午夜时刻的精准数据:

import requests
from datetime import datetime, timezone

CRYPTO_PAIR = "BTC-USD"
# 目标午夜时间(可替换为指定日期,比如datetime(2024,5,7,0,0,0))
target_midnight = datetime.now().replace(hour=0, minute=0, second=0, microsecond=0)
# 转换为Coinbase API使用的UTC时间
target_utc = target_midnight.astimezone(timezone.utc)

# 构造API参数:1分钟粒度,查询午夜前后1分钟的蜡烛数据
url = f"https://api.coinbase.com/v2/products/{CRYPTO_PAIR}/candles"
params = {
    "granularity": 60,  # 60秒=1分钟粒度
    "start": target_utc.isoformat(),
    "end": (target_utc.replace(minute=1)).isoformat()
}

response = requests.get(url, params=params)
candles = response.json()
# 蜡烛数据格式:[timestamp, low, high, open, close, volume]
if candles:
    midnight_price = candles[0][3]  # 开盘价即为午夜时点价格
    print(f"UTC午夜价格: {midnight_price}")
else:
    print("未找到对应时点的数据")

方案2:修复CCXT库调用逻辑

如果用CCXT库,需修正时间戳的构造方式,确保对应正确的UTC午夜时间:

import ccxt
from datetime import datetime, timezone

exchange = ccxt.coinbasepro()  # 注意Coinbase在CCXT中的标识是coinbasepro
CRYPTO_PAIR = "BTC/USD"

# 指定目标日期的UTC午夜时间
target_date = datetime(2024, 5, 7, 0, 0, 0, tzinfo=timezone.utc)
midnight_timestamp = int(target_date.timestamp() * 1000)  # 转换为毫秒时间戳

# 获取1天粒度的OHLCV数据
ohlcv = exchange.fetch_ohlcv(CRYPTO_PAIR, '1d', since=midnight_timestamp)
if ohlcv:
    midnight_price = ohlcv[0][1]  # 1天蜡烛的开盘价即为UTC午夜价格
    print(f"UTC午夜价格: {midnight_price}")
else:
    print("未找到对应日期的数据")

注意事项

  • Coinbase API统一使用UTC时间,若需获取本地时间的午夜,需先将本地时间转换为对应的UTC时间点
  • CCXT库中coinbase和coinbasepro是不同的交易所标识,需根据实际使用的平台选择

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 10:46:12