如何使用coinbase获取BTC午夜价格

问题描述 投票:0回答:1

我一直在寻找,但没有找到好的解决方案。我正在尝试获取 Coinbase 午夜的 BTC-USD 价格。我最接近的成功是按日期打电话,但我无法通过这种方式比这一天更接近

https://api.coinbase.com/v2/prices/BTC-USD/spot?date=2024-05-07
我已经附上了我的最佳尝试,但每次打电话时都会给我一个不同的号码。

import requests
from datetime import datetime


CRYPTO_PAIR = "BTC-USD"

now = datetime.now()
midnight = now.replace(hour=0, minute=0, second=0, microsecond=0)
formatted_date = midnight.strftime("%Y-%m-%d")
url = f"https://api.coinbase.com/v2/prices/{CRYPTO_PAIR}/spot"
response = requests.get(url, params={"date": formatted_date})
data = response.json()["data"]
price = data["amount"]
print(price)

我也尝试过不同的方式,但这给了我 44,000 的值,而它应该略高于 63,000。

    midnight_timestamp = int(time.mktime(time.strptime('00:00:00:2024', '%H:%M:%S:%Y')))
    ohlcv = exchange.fetch_ohlcv(symbol, '1d', since=midnight_timestamp * 1000)
    midnight_price = ohlcv[0][4]  # Closing price at midnight
    return midnight_price

python time coinbase-api
1个回答
0
投票

您无法通过此 API 获取比 1 天更精细的价格。

据猜测,我建议如果您获得前一天(即运行代码的前一天)的价格,则该价格将是当天的最新值。

正如我的评论中所述,此 API 的日期格式严格为 YYYY-MM-DD

我建议这可能会有所帮助:

import requests
from datetime import datetime, timedelta

def yesterday():
    _yesterday = datetime.now() - timedelta(days=1)
    return str(_yesterday).split()[0]

params = {
    "date": yesterday()
}

with requests.get("https://api.coinbase.com/v2/prices/BTC-USD/spot", params=params) as response:
    response.raise_for_status()
    amount = float(response.json()["data"]["amount"])
    print(f"{amount:,.2f}")
© www.soinside.com 2019 - 2024. All rights reserved.