Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -824,21 +824,20 @@ def create_batch_analysis_charts(results):
|
|
| 824 |
|
| 825 |
return fig_bar, fig_scatter, fig_radar, fig_pie
|
| 826 |
|
| 827 |
-
def batch_analyze_stocks():
|
| 828 |
"""批次分析股票清單"""
|
| 829 |
-
|
| 830 |
-
|
| 831 |
-
|
| 832 |
-
if not os.path.exists(stock_list_file):
|
| 833 |
-
return f"❌ 找不到 {stock_list_file} 檔案!請確認檔案存在。", "", None, None, None, None, ""
|
| 834 |
|
| 835 |
try:
|
| 836 |
-
#
|
| 837 |
-
|
| 838 |
-
|
|
|
|
| 839 |
|
| 840 |
if not stock_symbols:
|
| 841 |
-
return "❌
|
| 842 |
|
| 843 |
# 準備結果列表
|
| 844 |
results = []
|
|
@@ -954,11 +953,13 @@ def batch_analyze_stocks():
|
|
| 954 |
- 總計股票數:{len(stock_symbols)}
|
| 955 |
- 成功分析:{success_count}
|
| 956 |
- 分析失敗:{error_count}
|
| 957 |
-
|
|
|
|
| 958 |
- 📊 機率比較柱狀圖
|
| 959 |
-
- 🎯 信心度散佈圖
|
| 960 |
- 📈 綜合評分雷達圖
|
| 961 |
- 🥧 市場情緒餅圖
|
|
|
|
| 962 |
🎯 **請查看下方圖表進行投資決策分析!**
|
| 963 |
"""
|
| 964 |
|
|
@@ -991,7 +992,7 @@ with gr.Blocks(title="AI 股票分析師", theme=gr.themes.Soft()) as app:
|
|
| 991 |
- 🖼️ **互動圖表**:動態視覺化技術指標走勢
|
| 992 |
- 📁 **批次分析**:一次分析多支股票並匯出詳細報告
|
| 993 |
|
| 994 |
-
**🚀 使用方法:**
|
| 995 |
|
| 996 |
**💡 新功能亮點:** 現在提供差異化的買賣建議 - 持有股票時建議觀望/賣出/持有,未持有時建議加碼買進/觀望!
|
| 997 |
"""
|
|
@@ -1045,10 +1046,10 @@ with gr.Blocks(title="AI 股票分析師", theme=gr.themes.Soft()) as app:
|
|
| 1045 |
### 📁 批次分析功能
|
| 1046 |
|
| 1047 |
**📋 使用步驟:**
|
| 1048 |
-
1.
|
| 1049 |
-
2.
|
| 1050 |
-
3.
|
| 1051 |
-
4.
|
| 1052 |
|
| 1053 |
**📈 輸出內容:**
|
| 1054 |
- 📊 機率比較柱狀圖:直觀對比各股票預測機率
|
|
@@ -1067,6 +1068,28 @@ with gr.Blocks(title="AI 股票分析師", theme=gr.themes.Soft()) as app:
|
|
| 1067 |
"""
|
| 1068 |
)
|
| 1069 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1070 |
with gr.Row():
|
| 1071 |
batch_analyze_btn = gr.Button(
|
| 1072 |
"🚀 開始批次分析",
|
|
@@ -1108,7 +1131,7 @@ with gr.Blocks(title="AI 股票分析師", theme=gr.themes.Soft()) as app:
|
|
| 1108 |
# 批次分析事件綁定
|
| 1109 |
batch_analyze_btn.click(
|
| 1110 |
fn=batch_analyze_stocks,
|
| 1111 |
-
inputs=[],
|
| 1112 |
outputs=[
|
| 1113 |
batch_summary,
|
| 1114 |
batch_progress,
|
|
|
|
| 824 |
|
| 825 |
return fig_bar, fig_scatter, fig_radar, fig_pie
|
| 826 |
|
| 827 |
+
def batch_analyze_stocks(stock_list_input):
|
| 828 |
"""批次分析股票清單"""
|
| 829 |
+
# 檢查輸入是否為空
|
| 830 |
+
if not stock_list_input or not stock_list_input.strip():
|
| 831 |
+
return "❌ 請輸入股票代碼!可用逗號、空格或換行分隔多個股票代碼。", "", None, None, None, None, ""
|
|
|
|
|
|
|
| 832 |
|
| 833 |
try:
|
| 834 |
+
# 解析股票清單(支援多種分隔符)
|
| 835 |
+
import re
|
| 836 |
+
stock_symbols = re.split(r'[,\s\n]+', stock_list_input.strip())
|
| 837 |
+
stock_symbols = [symbol.strip().upper() for symbol in stock_symbols if symbol.strip()]
|
| 838 |
|
| 839 |
if not stock_symbols:
|
| 840 |
+
return "❌ 未找到有效的股票代碼!", "", None, None, None, None, ""
|
| 841 |
|
| 842 |
# 準備結果列表
|
| 843 |
results = []
|
|
|
|
| 953 |
- 總計股票數:{len(stock_symbols)}
|
| 954 |
- 成功分析:{success_count}
|
| 955 |
- 分析失敗:{error_count}
|
| 956 |
+
|
| 957 |
+
📊 **圖表已生成:**
|
| 958 |
- 📊 機率比較柱狀圖
|
| 959 |
+
- 🎯 信心度散佈圖
|
| 960 |
- 📈 綜合評分雷達圖
|
| 961 |
- 🥧 市場情緒餅圖
|
| 962 |
+
|
| 963 |
🎯 **請查看下方圖表進行投資決策分析!**
|
| 964 |
"""
|
| 965 |
|
|
|
|
| 992 |
- 🖼️ **互動圖表**:動態視覺化技術指標走勢
|
| 993 |
- 📁 **批次分析**:一次分析多支股票並匯出詳細報告
|
| 994 |
|
| 995 |
+
**🚀 使用方法:** 單支分析輸入股票代碼,批次分析直接在文本框中輸入多個股票代碼即可!
|
| 996 |
|
| 997 |
**💡 新功能亮點:** 現在提供差異化的買賣建議 - 持有股票時建議觀望/賣出/持有,未持有時建議加碼買進/觀望!
|
| 998 |
"""
|
|
|
|
| 1046 |
### 📁 批次分析功能
|
| 1047 |
|
| 1048 |
**📋 使用步驟:**
|
| 1049 |
+
1. 在下方文本框中輸入股票代碼
|
| 1050 |
+
2. 支援多種分隔方式:逗號、空格或換行
|
| 1051 |
+
3. 例如:`AAPL, TSLA, 2330.TW` 或 `AAPL MSFT GOOGL`
|
| 1052 |
+
4. 點擊「開始批次分析」按鈕查看結果
|
| 1053 |
|
| 1054 |
**📈 輸出內容:**
|
| 1055 |
- 📊 機率比較柱狀圖:直觀對比各股票預測機率
|
|
|
|
| 1068 |
"""
|
| 1069 |
)
|
| 1070 |
|
| 1071 |
+
# 股票代碼輸入區域
|
| 1072 |
+
stock_list_input = gr.Textbox(
|
| 1073 |
+
label="📝 輸入股票代碼",
|
| 1074 |
+
placeholder="例如:AAPL, TSLA, 2330.TW, MSFT, GOOGL\n或用空格、換行分隔",
|
| 1075 |
+
lines=3,
|
| 1076 |
+
value="AAPL, TSLA, 2330.TW, MSFT, GOOGL",
|
| 1077 |
+
info="支援逗號、空格或換行分隔多個股票代碼"
|
| 1078 |
+
)
|
| 1079 |
+
|
| 1080 |
+
# 範例按鈕
|
| 1081 |
+
gr.Examples(
|
| 1082 |
+
examples=[
|
| 1083 |
+
["AAPL, MSFT, GOOGL, AMZN, TSLA"],
|
| 1084 |
+
["2330.TW, 2317.TW, 2454.TW, 3711.TW, 2382.TW"],
|
| 1085 |
+
["JPM, BAC, WFC, C, GS"],
|
| 1086 |
+
["JNJ, PFE, ABBV, UNH, CVS"],
|
| 1087 |
+
["BTC-USD, ETH-USD, ^GSPC, ^DJI, ^IXIC"]
|
| 1088 |
+
],
|
| 1089 |
+
inputs=[stock_list_input],
|
| 1090 |
+
label="💡 快速範例"
|
| 1091 |
+
)
|
| 1092 |
+
|
| 1093 |
with gr.Row():
|
| 1094 |
batch_analyze_btn = gr.Button(
|
| 1095 |
"🚀 開始批次分析",
|
|
|
|
| 1131 |
# 批次分析事件綁定
|
| 1132 |
batch_analyze_btn.click(
|
| 1133 |
fn=batch_analyze_stocks,
|
| 1134 |
+
inputs=[stock_list_input],
|
| 1135 |
outputs=[
|
| 1136 |
batch_summary,
|
| 1137 |
batch_progress,
|