mpl_finance não pode converter -100000 em uma data
Estou tentando fazer um simples gráfico ohlc de castiçal com mpl_finance. Em seu site, ele diz que o primeiro elemento no argumento de aspas do método candlestick_ohlc são as datas. Ele diz que eles devem ser formatados no formato de data flutuante. No entanto, quando uso date2num, ocorre um erro que diz "Não é possível converter -100000 em uma data. Isso geralmente acontece se valores não datetime são passados para um eixo que espera objetos datetime". Quando uso minha lista original sem o método date2num, ocorre um erro que aponta para uma linha de código xy = (t-OFFFSET, inferior) e uma mensagem - "tipo (s) de operando não suportado para -: 'datetime. date 'e' float '. parece que quer que eu use um float em vez de um datetime.date, mas isso contradiz o erro anterior. Aqui está o meu código. Qualquer ajuda será muito apreciada. Agradecemos antecipadamente.
import requests
import json
import pprint
import matplotlib.pyplot as plt
f,rom mpl_finance import candlestick_ohlc
import matplotlib.dates as mdates
from datetime import datetime, date, time
url = "https://www.alphavantage.co/query"
function = "TIME_SERIES_DAILY"
symbol = "MSFT"
api_key = "K2H0JNUZBWYKW02L"
data = { "function": function,
"symbol": symbol,
"apikey": api_key }
page = requests.get(url, params = data)
thedata = page.json()
days = []
dailyopen = []
dailyclose = []
dailyhigh = []
dailylow = []
dailyvol = []
delimitedyear = []
delimitedday = []
delimitedmonth = []
thedatakeys = list(thedata['Time Series (Daily)'].keys())
thedatakeys.sort()
for day in thedatakeys:
days.append(day)
dailyopen.append(float(thedata['Time Series (Daily)'][day]
['1. open']))
dailyhigh.append(float(thedata['Time Series (Daily)'][day]
['2. high']))
dailylow.append(float(thedata['Time Series (Daily)'][day]
['3. low']))
dailyclose.append(float(thedata['Time Series (Daily)']
[day]['4. close']))
dailyvol.append(float(thedata['Time Series (Daily)'][day]
['5. volume']))
counter = 0
for day in days:
delimitedyear.append(days[counter][0:4])
delimitedmonth.append(days[counter][5:7])
delimitedday.append(days[counter][8:10])
counter = counter + 1
d = []
for newcounter in range(len(delimitedyear)):
d.append(date(int(delimitedyear[newcounter]),
int(delimitedmonth[newcounter]),
int(delimitedday[newcounter])))
formatteddates = mdates.date2num(d)
ohlc = [formatteddates, dailyopen, dailyhigh, dailylow,
dailyclose]
print(formatteddates)
fl, ax = plt.subplots(figsize = (10,5))
candlestick_ohlc(ax, ohlc, width=.6, colorup='green',
colordown='red')
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))
ax.grid(False)
plt.show()