54justin commited on
Commit
b1f0ea6
·
verified ·
1 Parent(s): 50624a3

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +41 -18
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
- stock_list_file = "StockList.txt"
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
- with open(stock_list_file, 'r', encoding='utf-8') as f:
838
- stock_symbols = [line.strip() for line in f if line.strip()]
 
839
 
840
  if not stock_symbols:
841
- return "❌ 股票清單檔案為空!", "", None, None, None, None, ""
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
- **🚀 使用方法:** 單支分析輸入股票代碼,批次分析請確保 `StockList.txt` 檔案存在!
995
 
996
  **💡 新功能亮點:** 現在提供差異化的買賣建議 - 持有股票時建議觀望/賣出/持有,未持有時建議加碼買進/觀望!
997
  """
@@ -1045,10 +1046,10 @@ with gr.Blocks(title="AI 股票分析師", theme=gr.themes.Soft()) as app:
1045
  ### 📁 批次分析功能
1046
 
1047
  **📋 使用步驟:**
1048
- 1. 確保 `StockList.txt` 檔案存在於專案目錄
1049
- 2. 檔案中每行一個股票代號(如:2330.TW)
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,