由於今年美股獲利還不錯, 9月在寫投資日誌時忽然想到, 以往自己在選股以及選擇買賣時機時, 都是開Yahooh財經隨意看看財報, 並沒有一個有系統的方法去選股以及審視手邊持股, 這樣不僅浪費時間而且又不嚴謹, 如果有個系統或線上網站可以幫我去抓個股財報資料並用各種策略直接分析, 系統分析完只要地雷指數太高的個股就直接放生掉, 這樣不僅節省時間也可以避免主觀意識影響太重, 應該可以對我未來的投資生活有所幫助, 就決定立馬進行了!!! 以下是成果:
掃雷網站位址:
https://norn-minehunter.zmcx16.moe/
Github:
https://github.com/zmcx16/stock-minehunter
Illustrator:
超愛喝榛奶
Demo:
利用下班以及放假時間, 前端+後端大概花了兩個禮拜完成, 不過做完後還要等我哥把圖生出來, 4天連假除了打機戰T之外就想說來多實作幾個名人的策略, 主要是參考以下這兩個網站:
- 美股價值成長投資
- 台灣經濟新報(TEJ)
至於個股基本資料以及財報的取得, 目前主要是以下面兩個網站為主:
- Finviz
- Yahoo財經
Finviz是個十分強大的選股網站, 除此之外他也提供查詢個股基本資料(ROE, EPS, P/E, Dividend...etc), 不過提供的資料都只是單一數據, 並沒有完整的季財報以及年財報, 完整財報部分我則是從Yahoo財經取得, 不過Yahoo財經只提供近四年的財報給免費用戶, 雖然有點少不過也算堪用了, 不如說也只能妥協..., 如果有人知道有哪個地方可以方便取得更久遠的財報的話希望可以分享一下 > <
網站架構方面, 當初設計這個網站時就是定位成單一功能的小網站, 並且打算把所有策略相關的設定跟掃描等功能都做到後端, 好處是這樣以後新增策略也只要改後端, 不用再改前端的code; 缺點就是排版很沒彈性, 會稍稍不美觀, 不過因為這網站是以功能導向為主, 而且我就是PM兼RD兼QA, 所以就這麼決定我說了算了WWW
另外來說個開發過程遇到的趣事(?), 在網站完成只差等我哥把圖畫完的時間, 我想說來做個performance test看看, 就一口氣丟了一堆策略給server看能不能正常work, 結果server吐回502 bad gateway回來...。 然後看了下自己的log沒異常, 看IIS log也是502沒錯, 而且我的unit test還有實際環境送少量策略都是能正常work的, 就覺得應該是Azure or IIS設定的問題, 之後開始Google找原因, 雖然找到了不少可能的原因, 可是怎麼試都沒有用, 就卡關卡了超久...。
後來卡關到受不了, 死馬當活馬醫開Windows event log來看, 結果發現dotnet.exe crash了..., 這就很神奇了, 因為我的web application有用一層try catch包起來, 要是跳exception應該會被捕捉到並寫log才對啊。 之後再研究一下, 發現crash的點是在我開thread去跟Yahoo Finance要財報的地方, 如果我1分鐘內打超過100個request, Yahoo Finance會直接回404給我, 然後我打request要資料的部分為了省時間, 是同時開好幾個thread去執行的, 如果crash的地方是在其他thread, 那外層的try-catch就捕捉不到, 所以才造成明明跳exception但是log卻沒有任何資訊的問題, 我一開始就往迷宮錯的地方GO了ㄚㄚ!!! 難怪怎麼找都找不到原因...。
找到問題解決方法就簡單了, 我直接在thread function用一個try catch包起來, 要是跳exception我就自定義錯誤傳給外面的程式就好, 一個簡單的問題就因為方向錯誤搞到早上五點半, 這時候也只能笑了(遠望 + 眼神死)
最後來個閒話家常, 網站的形象圖一樣是交給我哥畫, 至於小妖精的Loading畫面則是拿我大學時代修遊戲製作的課程時請他幫忙畫的NPC動作圖, 直接挖出來做成loading小動畫, 畢竟要是使用者輸入太多個股以及策略的話就得等待比較長的時間, 就決定用現有素材來自製個小loading動畫了, 結果做出來總有種滿滿的復古感WWW
如果有人喜歡這網站並且想分享自己的策略的話, 歡迎留言 or 寄信聯絡我, 我有空的話會實作並放到網站上給大家使用 :)