Spaces:
Sleeping
Sleeping
import streamlit as st | |
import yfinance as yf | |
import pandas as pd | |
from datetime import date | |
from io import BytesIO | |
st.set_page_config(page_title='Hisse Senedi Grafiği') | |
# Hisse senetleri listesi | |
stocks = { | |
'Tesla': 'TSLA', | |
'Apple': 'AAPL', | |
'Nvidia': 'NVDA', | |
'Microsoft': 'MSFT' | |
} | |
# Kullanıcının hisse senedi seçmesi için selectbox | |
sembol = st.sidebar.selectbox("Hisse Senedi Seçiniz", options=list(stocks.keys())) | |
sembol_kodu = stocks[sembol] | |
st.title(f"{sembol} ({sembol_kodu}) Hisse Senedi Grafiği") | |
start_date = st.sidebar.date_input('Başlangıç Tarihi', value=date(2023, 1, 1)) | |
end_date = st.sidebar.date_input('Bitiş Tarihi', value=date.today()) | |
# Tarih kontrolü | |
if start_date > end_date: | |
st.error('Başlangıç tarihi bitiş tarihinden sonra olamaz.') | |
else: | |
# Veri çekme işlemi | |
df = yf.download(sembol_kodu, start=start_date, end=end_date) | |
if df.empty: | |
st.warning('Seçilen sembol ve tarih aralığı için veri bulunamadı.') | |
else: | |
# Zaman dilimi bilgisini kaldırma | |
df.index = df.index.tz_localize(None) | |
# Veri çerçevesini gösterme | |
st.subheader('Hisse Senedi Verileri') | |
st.write(df) | |
# Grafik çizme | |
st.subheader('Kapanış Fiyatı Grafiği') | |
st.line_chart(df['Close']) | |
# Excel dosyasını indirme | |
st.subheader('Hisse Senedi Verileri Excel Dosyası') | |
def to_excel(df): | |
output = BytesIO() | |
writer = pd.ExcelWriter(output, engine='xlsxwriter') | |
df.to_excel(writer, index=True, sheet_name='Sheet1') | |
writer.close() | |
processed_data = output.getvalue() | |
return processed_data | |
excel_data = to_excel(df) | |
st.download_button( | |
label='Excel olarak indir', | |
data=excel_data, | |
file_name=f'{sembol_kodu}_data.xlsx', | |
mime='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' | |
) | |