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>"))
|