即時行情快取:儲存最新行情,設定15秒過期,過期後系統會自動從資料來源更新。
技術指標快取:儲存計算好的CD、RSI、布林帶等指標值,設定5分鐘過期,因為指標計算相對耗時。
策略訊號快取:儲存各策略生成的買賣訊號,設定1分鐘過期,確保交易決策基於最新資料。
“快取預熱機制也得做”。林晨思考著。系統啟動時,應該主動載入一些基礎資料到快取,避免第一批請求全部穿透到資料庫。
三天後的傍晚,三層資料庫架構全部搭建完畢。
林晨開始改造原有的系統程式碼。資料訪問層要重寫,原來直接讀寫SQLite的程式碼,現在要根據資料型別分發到不同的資料庫。
交易記錄寫入SQL,行情資料寫入InfluxDB,即時查詢走Redis快取。他寫了一個統一的資料訪問介面,對上層業務程式碼透明——業務程式碼不需要知道資料存在哪裡,只需要呼叫“儲存交易”、“查詢行情”、“獲取快取”這些方法。
這工作做了整整兩天。林晨像在搭建一座精密的鐘表,每個齒輪都要嚴絲合縫。有時候一個欄位的型別不匹配,就會導致整個寫入失敗;有時候快取過期時間設定不合理,就會產生髒資料。
第五天晚上十一點,最後一段程式碼除錯透過。
林晨深吸一口氣,點選了系統重啟按鈕。監控面板暗下去又亮起來,各個模組依次啟動:資料訪問層連線SQL成功,連線InfluxDB成功,連線Redis成功,快取預熱完成……
即時行情開始流入,系統介面上的股價數字跳動起來。
林晨開啟瀏覽器的開發者工具,切換到網路監控頁。他模擬了一個查詢請求:獲取某隻股票最近一個月的日K線資料,並計算相應的技術指標。
請求發出。之前用SQLite時,這個查詢需要800毫秒左右,因為要從幾十萬條資料裡篩選、計算。現在呢?
網路面板顯示:請求耗時237毫秒。
林晨眼睛一亮。他又測試了幾個複雜查詢:多隻股票對比分析、策略歷史回測、賬戶資產走勢圖……響應時間全部在300毫秒以內,比之前快了三四倍。
“值了”。林晨靠在椅背上,長長吐出一口氣。
這五天的高強度工作,讓他找回了當年做專案攻堅的感覺。不是被動完成任務,而是主動設計架構、解決難題。每一步最佳化都能看到效果,每一個決策都有資料支撐。
他開啟系統收益面板。自從架構升級和資料庫最佳化後,系統執行更加穩定,交易訊號生成更及時。實盤賬戶的收益率曲線,從之前的平緩上升,開始出現更明顯的上揚趨勢。
初始投入7萬元,現在總資產元。收益率8.25%,而且最近三天的日均收益率達到了0.3%,比之前提升了近一倍。
雖然絕對值還不大,但趨勢已經出來了。就像一列火車,剛開始啟動時很慢,一旦進入軌道,速度就會越來越快。
林晨儲存了所有程式碼,提交到Git倉庫。他在提交資訊裡寫道:“資料庫架構升級完成,三層儲存設計,查詢效能提升3倍以上”。
寫完這句話,他忽然想起什麼,開啟手機日曆。
明天就是週六了。父母乘坐的高鐵下午三點到鵬城北站。
技術上的成就感還在心頭盪漾,但現實的重量已經悄然落下。父母這次來,肯定不只是“看看”那麼簡單。失業半年,轉型做AI,現在又在搞什麼量化投資——這些在父母那一代人眼裡,恐怕都是不務正業。
林晨關掉電腦,走到窗邊。夜色中的鵬城依然燈火通明,科技園的寫字樓裡還有不少窗戶亮著燈。這座城市永遠不缺奮鬥的人,也不缺被淘汰的人。
他摸了摸口袋,裡面有一張打印出來的紙,是系統最新生成的資產分析報告。紙上的數字和圖表,是他這半年所有努力的量化證明。
“希望能講得通吧”。林晨輕聲說。
窗外,一輛晚歸的計程車駛過,車燈在夜色中劃出一道短暫的光軌,很快又消失在拐角處。就像很多故事一樣,高潮來臨之前,總有那麼一段看似平靜實則暗流湧動的路途。








