omniverse1 commited on
Commit
b19c127
·
verified ·
1 Parent(s): 56360eb

update app

Browse files
Files changed (1) hide show
  1. app.py +22 -20
app.py CHANGED
@@ -36,7 +36,6 @@ def load_model():
36
  device_map="auto",
37
  trust_remote_code=True
38
  )
39
- # CRITICAL FIX: Skip tokenizer loading
40
  tokenizer = None
41
  return model, tokenizer
42
 
@@ -57,6 +56,10 @@ def get_stock_data(symbol, period="1y"):
57
 
58
  def analyze_stock(symbol, prediction_days=30):
59
  """Main analysis function"""
 
 
 
 
60
  # Get stock data
61
  data, stock = get_stock_data(symbol)
62
 
@@ -76,11 +79,11 @@ def analyze_stock(symbol, prediction_days=30):
76
  predictions = predict_prices(data, model, tokenizer, prediction_days)
77
 
78
  # Create charts
79
- fig_price = create_price_chart(data, indicators) # RENAMED
80
- fig_technical = create_technical_chart(data, indicators) # RENAMED
81
- fig_prediction = create_prediction_chart(data, predictions) # RENAMED
82
 
83
- return fundamental_info, indicators, signals, fig_price, fig_technical, fig_prediction # Returning renamed local variables
84
 
85
  def create_ui():
86
  """Create the Gradio interface"""
@@ -120,11 +123,11 @@ def create_ui():
120
 
121
  with gr.Row():
122
  with gr.Column(scale=2):
123
- stock_selector = gr.Dropdown(
124
- choices=list(IDX_STOCKS.keys()),
125
- value="BBCA.JK",
126
- label="📊 Select Indonesian Stock",
127
- info="Choose from top IDX stocks"
128
  )
129
 
130
  with gr.Row():
@@ -211,38 +214,37 @@ def create_ui():
211
 
212
  # Event handlers
213
  def update_analysis(symbol, pred_days):
214
- fundamental_info, indicators, signals, fig_price, fig_technical, fig_prediction = analyze_stock(symbol, pred_days) # Receives renamed local variables
215
 
216
  if fundamental_info is None:
 
217
  return {
218
- company_name: "Error loading data",
219
  current_price: 0,
220
  market_cap: "N/A",
221
  pe_ratio: 0,
222
  dividend_yield: 0,
223
  volume: 0,
224
- fundamentals_text: "Unable to fetch stock data. Please try another symbol.",
225
  rsi_value: 0,
226
  macd_signal: "N/A",
227
  bb_position: "N/A",
228
  overall_signal: "N/A",
229
  signal_strength: 0,
230
- signals_text: "No signals available",
231
  support_level: 0,
232
  resistance_level: 0,
233
  stop_loss: 0,
234
  predicted_high: 0,
235
  predicted_low: 0,
236
  predicted_change: 0,
237
- prediction_summary: "No predictions available",
238
- price_chart: None,
239
- technical_chart: None,
240
- prediction_chart: None
241
  }
242
 
243
  # Format outputs
244
- # CRITICAL FIX: Use the Gradio component objects (left) as keys
245
- # and the Plotly Figure objects (right) as values.
246
  return {
247
  company_name: fundamental_info.get('name', 'N/A'),
248
  current_price: fundamental_info.get('current_price', 0),
 
36
  device_map="auto",
37
  trust_remote_code=True
38
  )
 
39
  tokenizer = None
40
  return model, tokenizer
41
 
 
56
 
57
  def analyze_stock(symbol, prediction_days=30):
58
  """Main analysis function"""
59
+ # FIX: Add .JK suffix if it's missing (case-insensitive check)
60
+ if not symbol.upper().endswith(".JK"):
61
+ symbol += ".JK"
62
+
63
  # Get stock data
64
  data, stock = get_stock_data(symbol)
65
 
 
79
  predictions = predict_prices(data, model, tokenizer, prediction_days)
80
 
81
  # Create charts
82
+ fig_price = create_price_chart(data, indicators)
83
+ fig_technical = create_technical_chart(data, indicators)
84
+ fig_prediction = create_prediction_chart(data, predictions)
85
 
86
+ return fundamental_info, indicators, signals, fig_price, fig_technical, fig_prediction
87
 
88
  def create_ui():
89
  """Create the Gradio interface"""
 
123
 
124
  with gr.Row():
125
  with gr.Column(scale=2):
126
+ # FIX: Change Dropdown to Textbox for flexible user input
127
+ stock_selector = gr.Textbox(
128
+ value="BBCA",
129
+ label="📊 Input Simbol Saham IDX",
130
+ info="Contoh: BBCA, ADRO, TLKM (Tidak perlu menambahkan .JK)"
131
  )
132
 
133
  with gr.Row():
 
214
 
215
  # Event handlers
216
  def update_analysis(symbol, pred_days):
217
+ fundamental_info, indicators, signals, fig_price, fig_technical, fig_prediction = analyze_stock(symbol, pred_days)
218
 
219
  if fundamental_info is None:
220
+ # FIX: Return appropriate initial values or error message
221
  return {
222
+ company_name: "Gagal memuat data",
223
  current_price: 0,
224
  market_cap: "N/A",
225
  pe_ratio: 0,
226
  dividend_yield: 0,
227
  volume: 0,
228
+ fundamentals_text: f"Tidak dapat mengambil data saham untuk {symbol}. Pastikan simbol benar.",
229
  rsi_value: 0,
230
  macd_signal: "N/A",
231
  bb_position: "N/A",
232
  overall_signal: "N/A",
233
  signal_strength: 0,
234
+ signals_text: "Tidak ada sinyal tersedia",
235
  support_level: 0,
236
  resistance_level: 0,
237
  stop_loss: 0,
238
  predicted_high: 0,
239
  predicted_low: 0,
240
  predicted_change: 0,
241
+ prediction_summary: "Prediksi tidak tersedia",
242
+ price_chart: go.Figure(),
243
+ technical_chart: go.Figure(),
244
+ prediction_chart: go.Figure()
245
  }
246
 
247
  # Format outputs
 
 
248
  return {
249
  company_name: fundamental_info.get('name', 'N/A'),
250
  current_price: fundamental_info.get('current_price', 0),