eshan6704 commited on
Commit
ea8d897
·
verified ·
1 Parent(s): 3b2a70f

Update app/daily.py

Browse files
Files changed (1) hide show
  1. app/daily.py +9 -13
app/daily.py CHANGED
@@ -6,8 +6,8 @@ import traceback
6
  from . import persist
7
  from .common import wrap_html
8
  import plotly.graph_objects as go
9
- import plotly.io as pio
10
  import plotly.express as px
 
11
 
12
  # ===========================================================
13
  # RAW DAILY FETCHER
@@ -24,12 +24,11 @@ def daily(symbol, date_end, date_start):
24
  return df
25
 
26
  # ===========================================================
27
- # PLOTLY CANDLESTICK + VOLUME
28
  # ===========================================================
29
  def plot_candlestick(df, symbol):
30
  fig = go.Figure()
31
 
32
- # Candlestick
33
  fig.add_trace(go.Candlestick(
34
  x=df['Date'],
35
  open=df['Open'],
@@ -41,17 +40,15 @@ def plot_candlestick(df, symbol):
41
  decreasing_line_color='red'
42
  ))
43
 
44
- # Volume as bar
45
  fig.add_trace(go.Bar(
46
  x=df['Date'],
47
  y=df['Volume'],
48
  name='Volume',
49
- marker_color='blue',
50
  yaxis='y2',
 
51
  opacity=0.3
52
  ))
53
 
54
- # Layout
55
  fig.update_layout(
56
  title=f'{symbol} Daily Candlestick',
57
  xaxis_rangeslider_visible=False,
@@ -62,33 +59,32 @@ def plot_candlestick(df, symbol):
62
 
63
  return pio.to_html(fig, full_html=False, include_plotlyjs='cdn')
64
 
65
-
66
  # ===========================================================
67
  # ADDITIONAL ANALYSIS CHARTS
68
  # ===========================================================
69
  def plot_analysis_charts(df, symbol):
70
  charts = ""
71
 
72
- # 1️⃣ OHLC line chart
73
  fig_line = px.line(df, x='Date', y=['Open','High','Low','Close'], title=f'{symbol} OHLC Line Chart')
74
  charts += pio.to_html(fig_line, full_html=False, include_plotlyjs=False)
75
 
76
- # 2️⃣ 20-day and 50-day moving average
77
  df['MA20'] = df['Close'].rolling(20).mean()
78
  df['MA50'] = df['Close'].rolling(50).mean()
79
  fig_ma = px.line(df, x='Date', y=['Close','MA20','MA50'], title=f'{symbol} 20 & 50 Day Moving Avg')
80
  charts += pio.to_html(fig_ma, full_html=False, include_plotlyjs=False)
81
 
82
- # 3️⃣ Daily change %
 
83
  fig_change = px.bar(df, x='Date', y='Change %', color='Change %', title=f'{symbol} Daily % Change',
84
  color_continuous_scale=['red','green'])
85
  charts += pio.to_html(fig_change, full_html=False, include_plotlyjs=False)
86
 
87
  return charts
88
 
89
-
90
  # ===========================================================
91
- # DAILY TABLE + DASHBOARD
92
  # ===========================================================
93
  def fetch_daily(symbol, date_end, date_start):
94
  """Return HTML table + candlestick + analysis charts."""
@@ -156,7 +152,7 @@ def fetch_daily(symbol, date_end, date_start):
156
  # Additional analysis charts
157
  analysis_html = plot_analysis_charts(df, symbol)
158
 
159
- # Combine all
160
  full_html = f'<div id="daily_dashboard">{html_table}{candlestick_html}{analysis_html}</div>'
161
 
162
  persist.save(key, full_html, "html")
 
6
  from . import persist
7
  from .common import wrap_html
8
  import plotly.graph_objects as go
 
9
  import plotly.express as px
10
+ import plotly.io as pio
11
 
12
  # ===========================================================
13
  # RAW DAILY FETCHER
 
24
  return df
25
 
26
  # ===========================================================
27
+ # CANDLESTICK + VOLUME
28
  # ===========================================================
29
  def plot_candlestick(df, symbol):
30
  fig = go.Figure()
31
 
 
32
  fig.add_trace(go.Candlestick(
33
  x=df['Date'],
34
  open=df['Open'],
 
40
  decreasing_line_color='red'
41
  ))
42
 
 
43
  fig.add_trace(go.Bar(
44
  x=df['Date'],
45
  y=df['Volume'],
46
  name='Volume',
 
47
  yaxis='y2',
48
+ marker_color='blue',
49
  opacity=0.3
50
  ))
51
 
 
52
  fig.update_layout(
53
  title=f'{symbol} Daily Candlestick',
54
  xaxis_rangeslider_visible=False,
 
59
 
60
  return pio.to_html(fig, full_html=False, include_plotlyjs='cdn')
61
 
 
62
  # ===========================================================
63
  # ADDITIONAL ANALYSIS CHARTS
64
  # ===========================================================
65
  def plot_analysis_charts(df, symbol):
66
  charts = ""
67
 
68
+ # OHLC line chart
69
  fig_line = px.line(df, x='Date', y=['Open','High','Low','Close'], title=f'{symbol} OHLC Line Chart')
70
  charts += pio.to_html(fig_line, full_html=False, include_plotlyjs=False)
71
 
72
+ # 20 & 50-day moving averages
73
  df['MA20'] = df['Close'].rolling(20).mean()
74
  df['MA50'] = df['Close'].rolling(50).mean()
75
  fig_ma = px.line(df, x='Date', y=['Close','MA20','MA50'], title=f'{symbol} 20 & 50 Day Moving Avg')
76
  charts += pio.to_html(fig_ma, full_html=False, include_plotlyjs=False)
77
 
78
+ # Daily % change
79
+ df['Change %'] = ((df['Close'] - df['Open']) / df['Open'] * 100).round(2)
80
  fig_change = px.bar(df, x='Date', y='Change %', color='Change %', title=f'{symbol} Daily % Change',
81
  color_continuous_scale=['red','green'])
82
  charts += pio.to_html(fig_change, full_html=False, include_plotlyjs=False)
83
 
84
  return charts
85
 
 
86
  # ===========================================================
87
+ # DAILY DASHBOARD
88
  # ===========================================================
89
  def fetch_daily(symbol, date_end, date_start):
90
  """Return HTML table + candlestick + analysis charts."""
 
152
  # Additional analysis charts
153
  analysis_html = plot_analysis_charts(df, symbol)
154
 
155
+ # Combine all in dashboard
156
  full_html = f'<div id="daily_dashboard">{html_table}{candlestick_html}{analysis_html}</div>'
157
 
158
  persist.save(key, full_html, "html")