Не уверен, почему вы рассчитываете свои собственные SMA и группируете свои акции и фреймы данных, если ваша цель - только создать несколько графиков (по одному для каждой акции). Кроме того, если вы используете mplfinance
, то не требуется для импорта и / или использования matplotlib.pyplot (ни для вызова plt.show (); mplfinance сделает это за вас).
Тем не менее, вот предложение для вашего кода. Я добавил тикеры для Apple и Alphabet (Google), просто чтобы продемонстрировать, как это можно расширить.
stocklist = ['TSLA','MSFT','AAPL','GOOGL']
start = "2020-01-01"
end = dt.datetime.now()
short_sma = 20
long_sma = 50
for stock in stocklist:
df = yf.download(stock, start, end)
filename = stock.lower() + '.png'
mpf.plot(df,type='candlestick',figratio=(16,6),
mav=(short_sma,long_sma),
volume=True, title=stock,style='default',
savefig=dict(fname=filename,bbox_inches="tight")
)
Приведенный выше код будет не отображать графики для каждой акции, , но каждая будет сохранена в отдельном файле .png локально (где вы запускаете скрипт) для последующего просмотра.
Обратите внимание, что он не сохраняет фактические данные; только отображает данные, а затем переходит к следующей акции, переназначая переменную фрейма данных (которая автоматически удаляет данные предыдущей акции). Если вы хотите сохранить данные для каждой акции в отдельном CSV-файле, это также легко сделать с помощью метода Pandas '.to_csv()
.
Кроме того, я предполагаю, что вы звоните yf.download()
правильно. Я не знаком с этим API, поэтому я просто оставил эту часть кода в том виде, в каком он был у вас.
HTH. Дай мне знать. - Даниил