開始使用
Quant Strategy Monitor for Discord

Quant Strategy Monitor for Discord

在伺服器上跑量化策略?兩次登入之間你其實是瞎的——今天有沒有觸發、還活著嗎、這週表現如何?這套工具把你的策略搬上 Discord:即時訊號告警、心跳在策略默默死掉的當下就 ping 你、每週績效報告(勝率/回撤/獲利因子/期望值)。底層還有 pipeline 健檢,讓當掉的 cron 沒辦法假裝成「這週剛好沒訊號」。它只轉發你系統已產生的訊號——不做交易決策、非投資建議。自帶 Discord webhook(敏感憑證)。
#工程#分析#研究
評分
需要更多評價
已售出
0
使用方式
下載

你的策略在伺服器上跑,但你真的有在看它嗎?

你把策略丟上 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 只有跑測試時才需要。