iT邦幫忙

2025 iThome 鐵人賽

DAY 25
0
生成式 AI

AI 給我錢錢錢 ! AI 股神養成計劃系列 第 25

Day 25 :你的投資助理:讓 AI 幫你提醒、推播通知

  • 分享至 

  • xImage
  •  

到目前為止,我們的 AI 已經能寫報告、畫圖,甚至用語音播報。
但你可能會發現: 這些功能都還是被動的,必須要「我們去問 AI」,它才會給答案。

那如果反過來呢?
👉 讓 AI 主動通知我們:

  • 當股價突破某個區間

  • 當新聞出現重大關鍵字(例如「財報」、「降息」、「裁員」)

  • 當技術指標出現買進/賣出訊號

這樣一來,AI 才真正成為「投資助理」,而不只是「查詢工具」。

核心概念

  1. 觸發條件:設定「什麼情況需要提醒」。
  • 股價漲跌超過 5%

  • 新聞情緒轉為「恐慌」

  • 技術指標 RSI < 30(超賣區)

  1. 通知管道:透過推播傳送給使用者。
  • Email

  • LINE / Telegram

  • 簡單版:Google Colab 上即時提醒

  1. AI 參與:通知內容不是冷冰冰的數字,而是由 AI 幫忙翻譯成「白話摘要」。

股價提醒 (Email 通知)

安裝 & 設定

python
!pip install yfinance smtplib

檢查股價 & 發送 Email

python
import yfinance as yf
import smtplib
from email.mime.text import MIMEText
import google.generativeai as genai

# 設定 Gemini
genai.configure(api_key="YOUR_GEMINI_API_KEY")
model = genai.GenerativeModel("gemini-2.5-flash")

# 設定股票 & 門檻
stock = "AAPL"
threshold = 5  # 漲跌幅百分比

# 取得股價
data = yf.Ticker(stock).history(period="5d")
yesterday = data["Close"][-2]
today = data["Close"][-1]
pct_change = (today - yesterday) / yesterday * 100

# 讓 AI 幫我們生成提醒內容
# 這裡無論變動大小都會生成內容
ai_msg = model.generate_content(
    f"蘋果股價今日變動 {pct_change:.2f}%,請用簡單 2 句話寫提醒給投資人"
).text

# 發送 Email
sender = "YOUR_GMAIL@gmail.com"
receiver = "YOUR_GMAIL@gmail.com"
msg = MIMEText(ai_msg, "plain", "utf-8")
msg["Subject"] = f"[投資提醒] {stock} 股價變動 {pct_change:.2f}%"
msg["From"] = sender
msg["To"] = receiver

try:
    with smtplib.SMTP("smtp.gmail.com", 587) as server:
        server.starttls()
        server.login(sender, "ebvxmvsbqatckppr")
        server.sendmail(sender, receiver, msg.as_string())
    print("✅ 投資提醒已寄出:", ai_msg)
except Exception as e:
    print(f"❌ 寄信失敗,請檢查設定:{e}")

輸出結果

執行完後就會顯示出已寄出,如果失敗的話可能就是各個細項沒有填寫正確,或是伺服器暫時無法處理請求,換個環境或是等一下再執行一次即可。
https://ithelp.ithome.com.tw/upload/images/20250909/201694447Y8ajCr1KN.png

接著就可以在信箱收到新的信件
https://ithelp.ithome.com.tw/upload/images/20250909/20169444xZSEhKXZSZ.png

LINE 即時提醒

如果想要更即時、手機隨時可收,可以用 LINE Messaging API。

  1. 申請 LINE 官方帳號:你需要一個 LINE 官方帳號來作為發送訊息的主體。

  2. 建立 Messaging API 通道:在 LINE Developers 後台,為你的官方帳號建立一個 Messaging API 通道。

  3. 取得通道存取權杖 (Channel Access Token):這是你用來呼叫 API 的金鑰,類似於 LINE Notify 的權杖。

安裝套件

!pip install line-bot-sdk

Messaging API 發送通知

import requests
from linebot import LineBotApi
from linebot.models import TextSendMessage

# 你的 LINE Messaging API 設定
# 這些資訊需要從 LINE Developers 後台取得
channel_access_token = "YOUR_CHANNEL_ACCESS_TOKEN" # 你的通道存取權杖
user_id = "YOUR_USER_ID" # 你的 LINE 使用者 ID (通常在 Messaging API 文件中有說明如何取得)

# 初始化 LINE Bot API
line_bot_api = LineBotApi(channel_access_token)

# 設定要發送的訊息
message = "🚨 投資提醒:AAPL 今日股價大漲 5%,AI 建議觀察市場情緒"

# 建立要發送的訊息物件
text_message = TextSendMessage(text=message)

# 發送訊息
try:
    line_bot_api.push_message(user_id, text_message)
    print("✅ LINE 訊息已成功發送!")

except Exception as e:
    print(f"❌ 發送失敗,請檢查設定:{e}")

這樣一來,你的 LINE 就能收到 AI 發來的投資快訊。

執行結果

https://ithelp.ithome.com.tw/upload/images/20250909/20169444BhVYFoxpOb.png

接著就可以去 Line 確認有沒有收到訊息。

https://ithelp.ithome.com.tw/upload/images/20250909/20169444aWeOHNjNwC.jpg

AI 驅動的「待辦清單提醒」

投資事件變成待辦清單

python
import google.generativeai as genai
from linebot import LineBotApi
from linebot.models import TextSendMessage
import os
import requests

# --- 核心解決方案:清除代理設定並強制忽略 ---
# 這是為了避免 Colab 偶爾出現的連線問題
if 'HTTP_PROXY' in os.environ:
    del os.environ['HTTP_PROXY']
if 'HTTPS_PROXY' in os.environ:
    del os.environ['HTTPS_PROXY']
if 'http_proxy' in os.environ:
    del os.environ['http_proxy']
if 'https_proxy' in os.environ:
    del os.environ['https_proxy']
    
requests.utils.get_environ_proxies = lambda: {}

# --- 步驟一:設定 API 金鑰與 LINE 資訊 ---
# 請將 YOUR_... 替換成你的真實金鑰與 ID
GEMINI_API_KEY = "YOUR_GEMINI_API_KEY"
LINE_CHANNEL_ACCESS_TOKEN = "YOUR_LINE_CHANNEL_ACCESS_TOKEN"
LINE_USER_ID = "YOUR_LINE_USER_ID"

# 設定 Gemini
genai.configure(api_key=GEMINI_API_KEY)
model = genai.GenerativeModel("gemini-2.5-flash")

# 初始化 LINE Bot API
line_bot_api = LineBotApi(LINE_CHANNEL_ACCESS_TOKEN)

# --- 步驟二:AI 生成待辦清單 ---
tasks = []
prompt = "請幫我生成一個投資待辦清單,根據以下情境:蘋果股價下跌 6%,新聞傳出供應鏈有問題。請用條列式清單呈現,例如:1. 檢查... 2. 分析..."

try:
    print("正在呼叫 Gemini API,生成待辦清單...")
    ai_reminder = model.generate_content(
        prompt, 
        request_options={'timeout': 30}
    ).text
    
    # 將 AI 生成的內容加入清單
    tasks.append(ai_reminder)
    print("📌 今日投資待辦:")
    print(tasks[-1])

except Exception as e:
    print(f"❌ Gemini API 連線失敗,無法生成清單:{e}")
    tasks.append("無法取得 AI 待辦清單,請手動檢查投資組合。")

# --- 步驟三:發送 LINE 訊息 ---
# 將待辦清單內容作為訊息發送
message_to_send = f"今日投資待辦清單:\n\n{tasks[-1]}"
text_message = TextSendMessage(text=message_to_send)

try:
    print("\n正在透過 LINE Messaging API 推送待辦清單...")
    line_bot_api.push_message(LINE_USER_ID, text_message)
    print("✅ LINE 訊息已成功發送!")

except Exception as e:
    print(f"❌ LINE 訊息發送失敗,請檢查設定:{e}")

執行結果

https://ithelp.ithome.com.tw/upload/images/20250909/20169444aVPaYOICKj.png

https://ithelp.ithome.com.tw/upload/images/20250909/20169444VWlg8lo3CT.png

結語

今天我們讓 AI 從「被動回答」升級成「主動提醒」,這才是真正的投資助理!無論是股價異動、新聞快訊,甚至轉成待辦清單,AI 都能幫我們減少遺漏重要資訊的風險。
👉 明天(Day 26),明天我們要進一步提升 Demo 展示館,幫你自動產生投資待辦清單 ✅


上一篇
Day 24 :說話的 AI 報告:語音播報股市快訊
下一篇
Day 26 :從報告到行動:幫你自動產生投資待辦清單
系列文
AI 給我錢錢錢 ! AI 股神養成計劃28
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言