Why is everything so difficult? I wrote a short script to get 1000 days of data on BTC prices from Binance REST API.
from datetime import datetime, timezone
import requests # for making http requests to binance
import json # for parsing what binance sends back to us
import pandas as pd # for representing/processing data
'''
LOOKS LIKE I CAN'T RUN THIS FROM GOOGLE COLAB!!
root_url = 'https://api.binance.com/api/v1/klines'
symbol = 'BTCUSDT'
interval = '1d'
limit = '1000'
url = root_url + '?symbol=' + symbol + '&interval=' + interval + '&limit=' + limit
data = json.loads(requests.get(url).text)
df = pd.DataFrame(data)
df.columns = ['date', 'open', 'high', 'low', 'close', 'v', 'close_time',
'qav', 'num_trades', 'taker_base_vol', 'taker_quote_vol',
'ignore']
df['date'] = [datetime.utcfromtimestamp(x/1000.0) for x in df.date]
df = df.set_index('date')
'''
But it won’t run. The error message suggests Binance blocked the request from Google Colab. No worries, I ran it on my local computer. But then I got warnings about using datetime.utcfromtimestamp, declaring this is deprecated and I need to use a timezone aware function. But that gives me dates with date, time and timezone offset, when all I need is the date. It just complicates my dataframe unnecessarily. Fortunately the ‘old’ code still works and gives me what I want, but for how much longer? I guess I’ll just have to use an old version of python when the next one forces me to take what it thinks is good for me. I couldn’t find any straight forward approach to removing the offset, and frankly I don’t even want the time for daily candles.
Anyway, I uploaded the data to Google Drive and I guess I can now start running some ML algorithms on it. No doubt that will bring me more hassles. Tomorrow, maybe.