1. 程式人生 > 實用技巧 >我用 Python 寫了個基金漲跌通知助手!投了五百翻了四倍

我用 Python 寫了個基金漲跌通知助手!投了五百翻了四倍

2020 年,世界風雲變化,基金也是。

我們都知道股票或者債券,它們都屬於直接投資,而基金是間接投資,我們把錢投在基金裡,相當於把這些錢交給專業基金公司的專業經理人,這些經理人再去投資股票或者債券。理論上比我們自己直接投資更靠譜些,但是天總是有不測風雲。

這篇文章不討論基金策略,而是討論檢視基金漲跌的策略,相信很多人看基金都是通過手機,但是基金的漲跌扣人心絃,隔幾分鐘我就忍不住開啟手機檢視基金實時淨值,在某些公司,這樣是會被扣工資的。

於是乎,花了一晚上寫了個基金提示小助手,並部署上了阿里雲伺服器,關注的基金超過自定義的漲跌警戒線自動發郵件提示,其實支付寶微信也有提示,不過都是手機狀態列提示,屬於移動互聯場景,而在 PC 辦公場景,顯然郵件更為方便些,這下再也不要在上班時間頻繁開啟支付寶微信檢視基金漲跌了。同時,每個工作日 22:35 定時推送當天關注的基金日報到郵箱

,下班回家路上,基金情況一目瞭然。

日報通知郵件

由於部署上了伺服器,所以這個功能是全天候實時線上的,目前只有我一個使用者,功能是上週日晚上線的,週一我自己內測了一天,解決了一些小 BUG,日趨穩定;作為福利,我將該功能向所有讀者開放,怎麼使用,請看文章末尾,不過在此之前不妨看看如何實現的。

首先解決的是資料獲取的問題,怎麼獲取特定基金的實時資料呢,可以去專門的基金網站上抓取,東方財富或者天天基金都行,這裡就是涉及到 Python 爬蟲的問題,這個爬蟲不算難,用瀏覽器檢查工具就能調試出來,然後使用 Requests 庫模擬 User-Agent 使用者行為,根據基金程式碼查詢基金資訊即可。

然後問題是怎麼傳送郵件和郵件的內容的問題,如下圖:

漲跌通知郵件

對於漲跌通知郵件,傳送者只有一個,接收者就是使用者郵箱,每個郵箱維護一個關注的基金列表,每個基金分別設定漲跌預警百分比;遍歷所有郵箱,每一個郵箱遍歷所有基金,根據基金程式碼爬取實時基金淨值,然後比對預警線,超過預警線就向該郵箱傳送通知郵件。什麼時候發,在基金的工作日(週一到週五不包括節假日),而且在工作日的交易時間(9:30-11:30、13:00-15:00)這個時間段內發通知。

至於基金日報郵件,則需要用到定時器相關的技術,Python 中有一個很好用的定時任務模組 apscheduler,只需要把這個定時傳送基金日報的函式設定成一個後臺任務即可。

傳送郵件使用的是smtplib模組,郵件服務SMTP

常用的是 25 埠,不過阿里雲伺服器為了安全起見,封禁了該埠,可以申請開啟但是不建議開啟,我們只能另闢道理使用 SMTP_SSL,埠號是 465,https = http + ssl,周知 https 比 http 更安全,由取代反應可知SMTP_SSL比 SMTP 更安全。

最後的問題就是如何上伺服器的問題,首先伺服器可能執行多個應用,虛擬環境是少不了要配置的,然後怎麼使程式跑起來呢,python xxx.py 這樣的做法只要你一關閉遠端連線,程式就停了,儘管你的伺服器沒有關機,可類比成在本機的命令列下輸入 python xxx.py,只有關閉命令列,程式就終止了。我開始想把它配置成後臺任務,使用nohup命令,這樣只要不關機,程式就一直運行了,但是每次開機都要輸這個命令才能啟動程式,以及如果程式程序掛掉了不會重啟,所以必須得用supervisor給該程式設定一個守護程序,並設定為開機自啟,錯誤重啟等,這樣就可以高枕無憂了。

最後講的是怎麼申請使用這個通知功能,很簡單,不用轉發,沒有套路,只需要在本文按照以下格式留言即可,關注者優先,走過路過不要錯過~

[email protected]
基金程式碼1該基金漲幅提示線該基金跌幅提示線
基金程式碼2該基金漲幅提示線該基金跌幅提示線

比如

[email protected]
0080871-1
0011022-2

意思是郵箱 [email protected] 關注了兩支基金,第一支基金程式碼 008087,當漲幅超過 1% 或者 跌幅超過 -1% 時都會發送通知郵件,第二隻基金 001102 漲跌幅絕對值超過 2% 時傳送通知郵件。

原始碼獲取加群哦:1136192749