У меня проблема с моим кодом, я хотел иметь график со средними значениями (moyenne
в моем коде) и enveloppes
, которые учитывают все даты, но когда я сгенерировал свой код, даты не были дезорганизованы и enveloppes не приняли во внимание все даты.
Вот код:
def question8(ticker, start_date, end_date, source, pourcentage):
PROJET = sqlite3.connect('projet.db')
cursor_PROJET = PROJET.cursor()
target_price = "{}_price".format(source)
query = ''' SELECT open_price, close_price, high_price, low_price, date
FROM Candlesticks
JOIN Companies ON Companies.id=Candlesticks.company_id
WHERE ticker="{}" AND date>="{}" AND date<="{}"
'''.format(ticker, start_date, end_date )
candlesticks = pd.read_sql_query(query, PROJET)
candlesticks.date = pd.to_datetime(candlesticks.date)
candlesticks.loc[:,"date"] = candlesticks.date.dt.strftime("%d-%m-%y")
somme_prix = 0
for prix in candlesticks[target_price]:
somme_prix = somme_prix + prix
moyenne = somme_prix / len(candlesticks[target_price])
enveloppe_up = moyenne + moyenne * pourcentage
enveloppe_down = moyenne - moyenne * pourcentage
moyennes = []
enveloppes_up = []
enveloppes_down = []
for i in range(0, len(candlesticks["date"])):
moyennes.append(moyenne)
enveloppes_up.append(enveloppe_up)
enveloppes_down.append(enveloppe_down)
fig, ax = plt.subplots(figsize=(14, 8))
sns.lineplot(x="date", y=moyennes, label="Moyenne absolue", color="grey", data=candlesticks)
sns.lineplot(x="date", y=enveloppes_up, label="Enveloppe up", color="red", data=candlesticks)
sns.lineplot(x="date", y=enveloppes_down, label="Enveloppe down", color="green", data=candlesticks)
ax.fill_between(candlesticks["date"], moyennes, enveloppes_up, color="red", alpha=0.1)
ax.fill_between(candlesticks["date"], moyennes, enveloppes_down,
color="green", alpha=0.1)
ax.set_xlabel("Date")
ax.set_ylabel("Prix")
plt.xticks(rotation=45)
plt.title("")
question8("AAPL", "2020-02-04", "2020-03-10", "open", 0.25)"
Пожалуйста, обратитесь к приложенному изображению, чтобы увидеть выходной график.
Ожидаемый результат графика