Spaces:
Build error
Build error
Update app.py
Browse files
app.py
CHANGED
|
@@ -17,7 +17,6 @@ trading_logic = TradingLogic()
|
|
| 17 |
def create_chart_analysis(ticker, interval):
|
| 18 |
"""Create chart with technical indicators and predictions"""
|
| 19 |
try:
|
| 20 |
-
# Panggil fungsi data yang sudah diperbarui
|
| 21 |
df = data_processor.get_market_data(ticker, interval)
|
| 22 |
if df.empty:
|
| 23 |
return "No data available", None
|
|
@@ -63,7 +62,6 @@ def create_chart_analysis(ticker, interval):
|
|
| 63 |
"Volume": f"{df['Volume'].iloc[-1]:,.0f}"
|
| 64 |
}
|
| 65 |
|
| 66 |
-
# FIX: Hanya mengembalikan 2 output untuk Chart Analysis
|
| 67 |
return chart_html, metrics
|
| 68 |
|
| 69 |
except Exception as e:
|
|
@@ -71,18 +69,16 @@ def create_chart_analysis(ticker, interval):
|
|
| 71 |
|
| 72 |
def analyze_sentiment(ticker):
|
| 73 |
"""Analyze gold/crypto market sentiment"""
|
| 74 |
-
sentiment_score = np.random.uniform(-0.5, 0.5)
|
| 75 |
|
| 76 |
-
#
|
| 77 |
-
|
| 78 |
-
|
| 79 |
-
|
| 80 |
-
|
| 81 |
fig = go.Figure(go.Indicator(
|
| 82 |
mode="gauge+number+delta",
|
| 83 |
value=sentiment_score,
|
| 84 |
domain={'x': [0, 1], 'y': [0, 1]},
|
| 85 |
-
title={'text': f"{ticker} Market Sentiment (
|
| 86 |
delta={'reference': 0},
|
| 87 |
gauge={
|
| 88 |
'axis': {'range': [-1, 1]},
|
|
@@ -108,7 +104,7 @@ def analyze_sentiment(ticker):
|
|
| 108 |
font=dict(color='black')
|
| 109 |
)
|
| 110 |
|
| 111 |
-
return fig,
|
| 112 |
|
| 113 |
def get_fundamentals(ticker):
|
| 114 |
"""Get fundamental analysis data"""
|
|
@@ -200,9 +196,10 @@ with gr.Blocks(
|
|
| 200 |
label="Market Ticker",
|
| 201 |
info="Select asset for analysis"
|
| 202 |
)
|
|
|
|
| 203 |
interval_dropdown = gr.Dropdown(
|
| 204 |
choices=[
|
| 205 |
-
"1d", "1wk", "1mo", "3mo"
|
| 206 |
],
|
| 207 |
value="1d",
|
| 208 |
label="Time Interval",
|
|
@@ -236,15 +233,13 @@ with gr.Blocks(
|
|
| 236 |
def update_all(ticker, interval):
|
| 237 |
# FIX: create_chart_analysis sekarang hanya mengembalikan 2 output
|
| 238 |
chart, metrics = create_chart_analysis(ticker, interval)
|
| 239 |
-
|
|
|
|
| 240 |
fund_gauge, fund_table = get_fundamentals(ticker)
|
| 241 |
|
| 242 |
# Total 5 outputs Gradio components
|
| 243 |
return chart, metrics, sentiment_gauge, news_display, fund_gauge, fund_table
|
| 244 |
|
| 245 |
-
# OUTPUTS: chart_html, metrics_output, sentiment_gauge, news_display, fundamentals_gauge, fundamentals_table
|
| 246 |
-
|
| 247 |
-
# FIX: Menghapus output pred_plot (diganti dengan None) dan menyesuaikan list outputs
|
| 248 |
refresh_btn.click(
|
| 249 |
fn=update_all,
|
| 250 |
inputs=[ticker_dropdown, interval_dropdown],
|
|
|
|
| 17 |
def create_chart_analysis(ticker, interval):
|
| 18 |
"""Create chart with technical indicators and predictions"""
|
| 19 |
try:
|
|
|
|
| 20 |
df = data_processor.get_market_data(ticker, interval)
|
| 21 |
if df.empty:
|
| 22 |
return "No data available", None
|
|
|
|
| 62 |
"Volume": f"{df['Volume'].iloc[-1]:,.0f}"
|
| 63 |
}
|
| 64 |
|
|
|
|
| 65 |
return chart_html, metrics
|
| 66 |
|
| 67 |
except Exception as e:
|
|
|
|
| 69 |
|
| 70 |
def analyze_sentiment(ticker):
|
| 71 |
"""Analyze gold/crypto market sentiment"""
|
|
|
|
| 72 |
|
| 73 |
+
# KOREKSI: Panggil fungsi yang diperbarui dan kirim ticker
|
| 74 |
+
sentiment_score, news_summary = sentiment_analyzer.analyze_market_sentiment(ticker)
|
| 75 |
+
|
| 76 |
+
# Gunakan template terang untuk Plotly
|
|
|
|
| 77 |
fig = go.Figure(go.Indicator(
|
| 78 |
mode="gauge+number+delta",
|
| 79 |
value=sentiment_score,
|
| 80 |
domain={'x': [0, 1], 'y': [0, 1]},
|
| 81 |
+
title={'text': f"{ticker} Market Sentiment (Simulated)"},
|
| 82 |
delta={'reference': 0},
|
| 83 |
gauge={
|
| 84 |
'axis': {'range': [-1, 1]},
|
|
|
|
| 104 |
font=dict(color='black')
|
| 105 |
)
|
| 106 |
|
| 107 |
+
return fig, news_summary
|
| 108 |
|
| 109 |
def get_fundamentals(ticker):
|
| 110 |
"""Get fundamental analysis data"""
|
|
|
|
| 196 |
label="Market Ticker",
|
| 197 |
info="Select asset for analysis"
|
| 198 |
)
|
| 199 |
+
# KOREKSI: Mengembalikan semua opsi interval waktu
|
| 200 |
interval_dropdown = gr.Dropdown(
|
| 201 |
choices=[
|
| 202 |
+
"5m", "15m", "30m", "1h", "4h", "1d", "1wk", "1mo", "3mo"
|
| 203 |
],
|
| 204 |
value="1d",
|
| 205 |
label="Time Interval",
|
|
|
|
| 233 |
def update_all(ticker, interval):
|
| 234 |
# FIX: create_chart_analysis sekarang hanya mengembalikan 2 output
|
| 235 |
chart, metrics = create_chart_analysis(ticker, interval)
|
| 236 |
+
# FIX: Panggil fungsi yang sudah diperbarui dan kirim ticker
|
| 237 |
+
sentiment_gauge, news_display = analyze_sentiment(ticker)
|
| 238 |
fund_gauge, fund_table = get_fundamentals(ticker)
|
| 239 |
|
| 240 |
# Total 5 outputs Gradio components
|
| 241 |
return chart, metrics, sentiment_gauge, news_display, fund_gauge, fund_table
|
| 242 |
|
|
|
|
|
|
|
|
|
|
| 243 |
refresh_btn.click(
|
| 244 |
fn=update_all,
|
| 245 |
inputs=[ticker_dropdown, interval_dropdown],
|