File size: 2,200 Bytes
fbec150
 
 
 
 
 
d89e2f7
fbec150
 
 
 
 
 
 
 
 
 
d89e2f7
fbec150
d89e2f7
fbec150
d89e2f7
 
fbec150
 
 
d89e2f7
fbec150
 
 
 
 
d89e2f7
fbec150
 
 
 
 
d89e2f7
fbec150
 
 
d89e2f7
fbec150
 
d89e2f7
fbec150
 
d89e2f7
 
 
 
 
 
 
 
 
fbec150
d89e2f7
fbec150
 
 
 
 
 
 
 
 
 
 
d89e2f7
fbec150
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
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='Stock Chart')

# 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("Select a Stock", options=list(stocks.keys()))
sembol_kodu = stocks[sembol]
st.title(f"{sembol} ({sembol_kodu}) Stock Chart")

start_date = st.sidebar.date_input('Start Date', value=date(2023, 1, 1))
end_date = st.sidebar.date_input('End Date', value=date.today())

# Tarih kontrolü
if start_date > end_date:
    st.error('Start date cannot be later than end date.')
else:
    # Veri çekme işlemi
    df = yf.download(sembol_kodu, start=start_date, end=end_date)

    if df.empty:
        st.warning('No data found for selected symbol and date range.')
    else:
        # Zaman dilimi bilgisini kaldırma
        df.index = df.index.tz_localize(None)

        # Veri çerçevesini gösterme
        st.subheader('Stock Data')
        st.write(df)

        # Grafik çizme
        st.subheader('Closing Price Chart')
        st.line_chart(df['Close'])

        st.subheader('Opening Price Chart')
        st.line_chart(df['Open'])

        st.subheader('High Price Chart')
        st.plotly_chart(df['High'])

        st.subheader('Low Price Chart')
        st.plotly_chart(df['Low'])

        st.subheader('Volume Price Chart')
        st.plotly_chart(df['Volume'])

        # Excel dosyasını indirme
        st.subheader('Stock Data Excel File')

        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='Download as Excel',
            data=excel_data,
            file_name=f'{sembol_kodu}_data.xlsx',
            mime='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
        )