
Quant Strategy Monitor for Discord
你的策略在伺服器上跑,但你真的有在看它嗎?
你把策略丟上 VPS,然後……一天登入兩次、然後祈禱。今天早上有沒有觸發訊號?程序還活著、還是資料源三小時前就死了你根本不知道?這週到底表現怎樣?大部分散戶量化都是太晚才發現——等出事了才回頭翻 log。
Quant Strategy Monitor for Discord 把你的實盤/forward 策略,搬到你本來就在的地方:Discord。三件事,全部推到你自己的 webhook——不用 bot、不用 SaaS、不用盯儀表板。一行指令先驗 webhook 通不通(audit.py --test),再從 examples/ 貼三行 cron,就上線了。
你會得到
① 即時訊號告警
每次進場、出場,訊號一觸發就推到 Discord——多單綠、空單紅——同一個呼叫也把事件記進 ledger,週報就是從這裡算。
python3 scripts/signal_push.py --side long --symbol ESZ5 --price 5321.5 \
--note "進場" --notify-discord "$SIGNAL_WEBHOOK"
或直接在你策略裡:from ledger import log_event。
② 心跳 —— 讓死掉的策略無所遁形
你的策略每輪蓋一個「我還活著」。監控在心跳超時的當下就 ping 你——抓出那種「資料源死了、或迴圈卡住、但程序看起來還在」的狀況。這個告警救你於「禮拜天才發現禮拜二就停了」。
from heartbeat import stamp
stamp("live-strategy", extra={"signals_today": n}) # 每個 loop / bar / 跑一次
# 策略 15 分鐘沒蓋心跳就告警
*/5 * * * * python3 scripts/audit.py --heartbeats /srv/strat/.health_heartbeats \
--max-age-min 15 --notify-discord "$HEALTH_WEBHOOK"
③ 每週績效報告
每週把 ledger 彙總推到報告頻道:勝率、累積報酬、平均 R、最大回撤、獲利因子、每筆期望值、平均盈虧、連勝/連敗、分商品拆解。
0 22 * * 0 python3 scripts/digest.py --ledger forward_ledger.jsonl --window 7 \
--notify-discord "$REPORT_WEBHOOK"
📊 Forward-test weekly digest
Window: last 7 days
Signals: 12 (long 7 / short 5)
Closed: 10 (W 6 / L 4, win rate 60%)
Cumulative return: +4.20% avg R +0.55
Max drawdown: -1.80% Profit factor: 2.10
Expectancy: +0.42% / trade (avg win +1.05% / avg loss -0.52%)
Best / worst: +2.10% / -0.90% Streaks: 3W / 2L
By symbol: ESZ5 6 trades 67% win +3.1% · NQZ5 4 trades 50% win +1.1%
告警自動去重 —— 不洗頻。 健檢每 10 分鐘跑一次,不等於每 10 分鐘吵你一次:只有新的/變化的問題、或恢復正常才推,同一個問題最多每個冷卻週期提醒一次。連發會對 Discord 的 429 限流自動退避。一個 --config JSON 管你三個 webhook(訊號/健康/報告)和路徑;可直接改的範例都在 examples/。
Bonus:底層還有一套 pipeline 健檢
策略沒觸發訊號,可能是對的(盤淡)、也可能是災難(cron 死了、部署蓋掉了檔、log 塞爆硬碟)。所以這套件底層還跑一套 SRE 式、唯讀的健檢,讓壞掉的 pipeline 沒辦法假裝成「這週剛好沒訊號」:
- 沉默 cron 偵測 —— 排程工作的產出太久沒更新
- systemd 掛掉/未啟動的服務、Windows 排程工作(停用/失敗)
- git 衛生 + 已 commit 的密鑰掃描
- UTF-8 BOM shebang 雷 —— 讓 systemd 報
Exec format error 203、手動跑卻沒事的那個 bug - log 無限膨脹
它也附上真正稽核的方法論——四層健檢(漂移、變更史、資料完整性、端到端推送)+ 七維優化盤點——讓你想「手動從頭到尾檢查整個系統」時有一套 SOP,不只是被動監控。
python3 scripts/audit.py --project /srv/my-strategy --notify-discord "$HEALTH_WEBHOOK"
python3 scripts/audit.py --demo # 用合成壞掉樹看它怎麼抓問題
內含
signal_push.py—— 一個呼叫把訊號推 Discord 並記進 ledger。heartbeat.py—— 策略呼叫的stamp()+ 超時監控。ledger.py—— append-only JSONL 事件簿;本地、自動輪替。digest.py—— 週報(勝率、報酬、回撤、獲利因子、期望值、連勝敗、分商品)。audit.py—— pipeline 健檢 + Discord 推播(含去重)。notify_discord.py—— 彩色 embed;處理 Cloudflare-403 UA 與 429 退避。alertstate.py/config.py—— 告警去重,以及一個 JSON 管你的 webhook。examples/—— 可直接改的 config、crontab、範例 ledger。- 方法論 references + 通過的測試 —— 完整方法,且工具自己也被測過。
邊界與揭露
只監控、不做交易決策。 它只監控、記錄、轉發你自己系統已經產生的訊號與結果。它不會產生多空訊號、選標的、建議進出場、給停損/停利、算部位/槓桿、決定要不要下單、或下單/改單。signal_push.py 只是把你傳給它的訊號推出去,本身不產生任何決策。
非投資建議。 它輸出的一切都不是專業財務建議、也不是買賣推薦。它不做任何績效保證、不用「保證/穩賺/一定」這類確定性用語。週報是你自己記錄的 forward-test 結果的敘述性統計,過去績效不預示未來。做財務決策前請諮詢持牌專業人士。
外部服務 + 憑證。 當你設定 Discord webhook,工具會把你選擇的告警送到 Discord(第三方服務)——依你記什麼,可能含標的/價格/方向/報酬/勝率/回撤/健康與部署狀態。沒設 webhook 就什麼都不外傳。webhook URL 是敏感憑證——別放進 repo/log/範例設定;工具從不把它印進報告或告警。
會寫檔 + 持續運作。 除了唯讀檢查,它會寫本地檔(ledger、心跳、告警狀態檔),而且當你用 cron 排程時,會在單次執行結束後繼續跑並告警。它不會自行安裝任何東西。git 密鑰掃描只報「檔案路徑 + 憑證類型」——絕不報密鑰值本身。
這不是什麼
不是訊號服務、也不是策略——它不含任何交易邏輯、不做任何績效保證,只回報你自己的策略在幹嘛。不是監控 SaaS、也不是 24 小時盯著你機器的 bot——它跑在你自己的 cron 上。Linux(systemd/cron)上最完整;Windows 上會檢查排程工作,訊號/心跳/ledger/週報/git/BOM/log 的部分到處都能跑。
常見問題
有東西會離開我的主機嗎? 只有你選擇要送到你自己 Discord webhook(外部服務)的告警——其他什麼都沒有,沒設 webhook 就完全不外傳。沒有遙測。健檢是唯讀的,但工具會寫本地 ledger/心跳/狀態檔。
需要 Discord bot 嗎? 不用——只要一個 webhook URL(伺服器設定 → 整合 → Webhook)。沒有 bot、沒有 token、沒有 OAuth。
它會幫我下單嗎? 不會。它只監看跟回報,從不碰你的券商或委託。
哪個 Python? 3.8+、純標準庫。pytest 只有跑測試時才需要。


