Недавно я провел некоторое исследование по этому поводу, и я думаю, что ответ @gavinstevens правильный, и эксперименты, описанные ниже, подтверждают это.
Придумал несколько дат для тестирования:
import dt as dt
import requests
today=dt.date.today()
today_dt=dt.datetime.now()
earlier_dt=today_dt-dt.timedelta(hours=6)
print(today)
'2017-03-31'
print(today_dt.strftime("%Y-%m-%d %H:%M:%S"))
'2017-03-31 11:57:58'
print(earlier_dt.strftime("%Y-%m-%d %H:%M:%S"))
'2017-03-31 05:57:58'
#build dicts to pass in the api requests
dict_today={'date':today.strftime("%Y-%m-%d")}
dict_dt_now={'date':today_dt.strftime("%Y-%m-%d %H:%M:%S")}
dict_dt_earler={'date': earlier_dt.strftime("%Y-%m-%d %H:%M:%S")}
Теперь для случая спотовой цены:
r=requests.get('https://api.coinbase.com/v2/prices/BTC-USD/spot/',params=dict_today)
print(r.text)
{"data":{"amount":"1082.42","currency":"USD"},...}
r=requests.get('https://api.coinbase.com/v2/prices/BTC-USD/spot/',params=dict_dt_now)
print(r.text)
{"data":{"amount":"1078.45","currency":"USD"},...}
r=requests.get('https://api.coinbase.com/v2/prices/BTC-USD/spot/',params=dict_dt_earler)
print(r.text)
{"data":{"amount":"1078.03","currency":"USD"},...}
как вы можете видеть из фрагментов кода выше, API возвращал разные цены для каждой прошедшей даты и времени. Затем, чтобы вернуться на много дней назад, чтобы убедиться, что эта модель подходит для всех исторических данных ...
way_earlier_dt=today_dt-dt.timedelta(days=365)
dict_way_earlier={'date': way_earlier_dt.strftime("%Y-%m-%d %H:%M:%S")}
r=requests.get('https://api.coinbase.com/v2/prices/BTC-USD/spot/',params=dict_way_earlier)
print(r.text)
{"data":{"amount":"415.23","currency":"USD"},...}
Действительно, это возвращает разумную цену для этого datetime. Вычитая шесть часов в качестве последней проверки ...
way_earlier_dt=way_earlier_dt-dt.timedelta(hours=6)
dict_way_earlier={'date': way_earlier_dt.strftime("%Y-%m-%d %H:%M:%S")}
r=requests.get('https://api.coinbase.com/v2/prices/BTC-USD/spot/',params=dict_way_earlier)
print(r.text)
{"data":{"amount":"415.23","currency":"USD"},...}
Ой-ой! Цена такая же, как и в предыдущем запросе. Похоже, у нас поломка.
Давайте проведем тест «прогулка по полуночи», чтобы убедиться, что запрос истории даты и времени действителен только для текущего дня. Мы можем начать с нашего значения "today_dt" и вычесть 12, затем 16 часов ...
yesterday_dt_12=today_dt-dt.timedelta(hours=12)
yesterday_dt_16=today_dt-dt.timedelta(hours=16)
print(yesterday_dt_12.strftime("%Y-%m-%d %H:%M:%S"))
'2017-03-30 23:57:58'
print(yesterday_dt_16.strftime("%Y-%m-%d %H:%M:%S"))
'2017-03-30 19:57:58'
dict_yest_12={'date':yesterday_dt_12.strftime("%Y-%m-%d %H:%M:%S")}
dict_yest_16={'date':yesterday_dt_16.strftime("%Y-%m-%d %H:%M:%S")}
r=requests.get('https://api.coinbase.com/v2/prices/BTC-USD/spot/',params=dict_yest_12)
print(r.text)
{"data":{"amount":"1039.37","currency":"USD"},..}
r=requests.get('https://api.coinbase.com/v2/prices/BTC-USD/spot/',params=dict_yest_16)
print(r.text)
{"data":{"amount":"1039.37","currency":"USD"},...}
Увы, у нас есть ответ. Мы не можем получить исторические спотовые цены BTC с помощью спотового запроса coinbase api. Я немного повозился и подтвердил, что разница в цене в первоначальном эксперименте - это колебания текущей спотовой цены BTC сегодня, которую возвращает api.
Грустный!
person
fireitup
schedule
31.03.2017