iT邦幫忙

2024 iThome 鐵人賽

DAY 24
0
Odoo

利用【AI】工具,聰明進行 Odoo 程式開發系列 第 24

Day24:個案二:投資管理系統(4)-每日自動更新台灣股市股票價格擷取

  • 分享至 

  • xImage
  •  

使用者故事

5. **作為一名投資者,我希望能查看觀察名單中股票的漲跌情況,自動化讀取 台灣股市股票價格擷取 twstock 以便更全面地了解市場動態。**

- 使用 twstock 套件作為基礎:
twstock 是一個專門用於擷取台灣股市資料的 Python 套件[^1],可以很方便地獲取即時和歷史股價資訊。我們可以利用它來實現自動化讀取股價的功能。
- 擴增 watchlist :
自動化讀取股價:
使用 twstock 的 realtime.get 函數來獲取觀察名單中股票的即時價格。
設置一個定時任務,定期(如每分鐘)更新股價資訊。
- 計算漲跌幅:
儲存每支股票的前一個交易日收盤價。
使用即時價格與前一個交易日收盤價比較,計算漲跌幅。

重點回應

非常好,我們可以根據您提供的這些要點來擴展 watchlist 模型並實現所需功能。以下是更詳細的開發邏輯:

  1. 擴展 stock.watchlist 模型:

    • 添加新欄位:
      current_price: Float (當前價格)
      previous_close: Float (前一個交易日收盤價)
      price_change: Float (價格變動)
      change_percentage: Float (漲跌幅百分比)
      last_update: Datetime (最後更新時間)
      
  2. 創建一個新的方法來更新股票資訊:

    • stock.watchlist 模型中添加 update_stock_info 方法:
      • 使用 twstock.realtime.get 獲取即時股價
      • 更新 current_priceprice_changechange_percentagelast_update
      • 如果是當日第一次更新,也更新 previous_close
  3. 實現定時任務:

    • 創建一個新的 ir.cron 記錄,定期調用 update_stock_info 方法
    • 可以設置為每分鐘或每五分鐘執行一次,具體頻率可根據需求調整
  4. 異常處理:

    • update_stock_info 方法中添加異常處理邏輯
    • 捕獲網絡錯誤、API 限制等異常
    • 記錄錯誤日誌,並在界面上顯示適當的錯誤消息
  5. 更新視圖:

    • 修改 stock.watchlist 的樹狀視圖和表單視圖,添加新欄位
    • 在樹狀視圖中使用條件格式化,根據漲跌幅顯示不同顏色
  6. 考慮性能優化:
    https://ithelp.ithome.com.tw/upload/images/20241006/20102255GDKriqbnvT.jpg

    • 批量更新股票信息,而不是每次只更新一支股票
    • 使用 twstock.realtime.get 的批量查詢功能
  7. 資料安全性:

    • 確保敏感資訊(如 API 密鑰)安全存儲
    • 考慮使用 Odoo 的 ir.config_parameter 來存儲配置信息
  8. 用戶體驗優化:

    • 添加手動更新按鈕,允許用戶立即更新股票信息
    • 在界面上顯示最後更新時間
  9. 擴展功能:

    • 考慮添加歷史數據存儲功能,以便進行趨勢分析
    • 實現簡單的圖表功能,直觀顯示股價變動
  10. 測試:

    • 編寫單元測試,確保 update_stock_info 方法正常工作
    • 進行集成測試,確保定時任務正確執行並更新數據
  11. 文檔和註釋:

    • 為新添加的方法和欄位編寫清晰的文檔和註釋
    • 更新用戶手冊,說明新功能的使用方法

https://ithelp.ithome.com.tw/upload/images/20241006/20102255qiedWhLfBS.jpg

自動產生所有程式碼 open in compuser

這些代碼實現了我們討論的主要功能:

  1. 擴展了 stock.watchlist 模型,添加了新的欄位來存儲股票資訊。
  2. 實現了 update_stock_info 方法來更新單個股票的資訊。
  3. 實現了 update_all_stocks 方法來批量更新所有觀察名單中的股票。
  4. 更新了樹狀視圖和表單視圖,顯示新添加的欄位,並根據漲跌幅變色。
  5. 添加了一個手動更新按鈕在表單視圖中。
  6. 設置了一個定時任務,每5分鐘自動更新一次股票資訊。

請注意,您可能需要安裝 twstock 庫。您可以通過運行以下命令來安裝它:

pip install twstock

安裝與測試

於虛擬環境安裝 pip install twstock
觀察名單 顯示目前股價
https://ithelp.ithome.com.tw/upload/images/20241006/20102255m2hL0RD0nA.jpg

單一更新,點選取得目前股價
https://ithelp.ithome.com.tw/upload/images/20241006/201022555bHL2U2Vst.jpg

排程全部更新
https://ithelp.ithome.com.tw/upload/images/20241006/201022550vVYy9LT5T.jpg

https://ithelp.ithome.com.tw/upload/images/20241006/20102255b0Ij2bJqXf.jpg

本章小結

這章節的主要目標是使用 twstock 套件自動化讀取台灣股市股票價格,並在 Odoo 系統中擴展 watchlist 模型。這一過程非常高效,從程式碼生成到問題撰寫,大約僅需 15分鐘

程式碼生成(約5分鐘)

  1. 擴展模型:

    • 新增 current_price, previous_close, price_change, change_percentage, last_update 等欄位,實現即時價格、前日收盤價和漲跌幅的儲存。
  2. 自動更新方法:

    • 實現 update_stock_info 方法,使用 twstock.realtime.get 獲取觀察名單中股票的即時價格,並更新欄位。
    • 定期執行的 ir.cron 任務,每5分鐘自動更新一次。
  3. 手動更新按鈕:

    • 加入一個在 watchlist 模型中的按鈕,允許使用者即時手動更新股票資料。
  4. 視圖更新:

    • 更新 watchlist 樹狀與表單視圖,根據漲跌幅顯示顏色變化,讓使用者能直觀查看股票動態。
  5. 異常處理與優化:

    • 增加異常處理邏輯,避免API請求錯誤時中斷。
    • 採用批量處理的方式提升系統效能,減少單一更新的開銷。

問題撰寫(約10分鐘)

  1. 功能描述:
    詳細描述了如何將 twstock 套件與 Odoo watchlist 模型整合,實現股票資料自動更新,並包含手動更新按鈕的功能。

  2. 技術流程:
    清晰解釋了擴展 watchlist 模型的欄位和更新機制,說明了如何使用批量處理和定期任務來自動更新觀察名單中的股票價格,並介紹異常處理的設計。

  3. 測試與驗證:
    展示了虛擬環境中安裝 twstock 套件的步驟,並對功能進行測試,確保自動與手動更新功能正確運行。

  4. 時間效益:
    強調了整體開發和文檔撰寫的高效性,從程式碼生成到文章完成僅需15分鐘,體現了AI與自動化工具在開發中的效能提升。


上一篇
Day23:個案二:投資管理系統(3)-自定義的觀察名單及建立個人股票demo資料
下一篇
Day25:個案二:投資管理系統(5)-產生股票 K 線圖
系列文
利用【AI】工具,聰明進行 Odoo 程式開發30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言