File size: 1,100 Bytes
06ebc06
3f54611
6c0386c
3f54611
d51275f
6c0386c
06ebc06
3f54611
bb2645d
6c0386c
bb2645d
 
6c0386c
d01fabf
6c0386c
a6d803d
6c0386c
 
 
 
 
a6d803d
cb01b9e
3f54611
a6ffb99
6c0386c
 
06ebc06
6c0386c
bb2645d
6c0386c
 
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
# daily.py
import yfinance as yf
import pandas as pd
from indicater import calculate_indicators
from chart_builder import build_chart
from common import html_card, wrap_html

def fetch_daily(symbol):
    """
    Fetch daily stock data, compute indicators, return full HTML
    """
    try:
        df = yf.download(symbol, period='6mo', interval='1d', auto_adjust=True)
        if isinstance(df.columns, pd.MultiIndex):
            df.columns = df.columns.get_level_values(0)  # flatten multi-level headers

        df.reset_index(inplace=True)
        df.rename(columns={'Date':'Datetime'}, inplace=True)
        df.set_index('Datetime', inplace=True)
        if 'Volume' not in df.columns:
            df['Volume'] = 1

        # Calculate indicators
        indicators = calculate_indicators(df)

        # Build chart
        html_chart = build_chart(df, indicators=indicators)

        return wrap_html(html_card(f"{symbol} Daily Chart", html_chart))
    except Exception as e:
        import traceback
        return wrap_html(html_card("Error", f"{e}<br><pre>{traceback.format_exc()}</pre>"))