一分鐘看懂
程式交易上線後,比策略虧錢更常見的風險是程式出錯:重複下單、口數算錯、斷線後部位對不上、電腦當機沒人知道。實盤風控分成三層:下單前檢查(口數上限、價格合理範圍)、盤中監控(單日虧損達上限就全部平倉並停機、委託逾時自動取消、定時對帳)、系統穩定(放在雲端主機、異常時手機通知)。每一層都要在程式裡自動執行,不能靠人盯盤。
手動交易出錯,通常是一筆單;程式交易出錯,可能在幾秒內重複送出幾十筆。一個迴圈的條件寫錯、一次斷線重連沒處理好,就可能讓部位變成原本的好幾倍。
所以程式交易的風控,除了策略本身的停損,還要再加一層「保護你不被自己的程式傷害」的規則。
第一層:下單前檢查
每一筆委託送出之前,程式先檢查一次,任何一項不通過就不送:
| 檢查項目 | 例子 |
|---|---|
| 單筆口數上限 | 微台一次最多 5 口 |
| 總部位上限 | 同方向最多 10 口 |
| 價格合理範圍 | 限價離最新成交價超過 1% 就不送 |
| 下單頻率上限 | 一分鐘內最多送 10 筆委託 |
| 交易時段 | 只在設定的時段下單,收盤前幾分鐘不開新倉 |
這些上限要寫死在程式裡,跟策略邏輯分開。策略算錯了,這一層還能擋住。
第二層:盤中監控
單日虧損熔斷
當天虧損達到上限,全部平倉、停止下單,到隔天才恢復。
| 項目 | 例子 |
|---|---|
| 帳戶資金 | 100 萬元 |
| 單日虧損上限 | 帳戶的 2%,2 萬元 |
| 換算微台點數 | 20,000 ÷ 10 = 2,000 點 |
| 換算小台點數 | 20,000 ÷ 50 = 400 點 |
虧損要用「已實現加上未實現」一起算,不能只看已經平倉的單。
委託逾時取消
限價單送出後,超過設定的時間(例如 30 秒)還沒成交,就自動取消,再決定要不要改價重送。不處理的話,帳戶裡會累積一堆忘記的掛單,行情一到突然成交。
定時對帳
每隔一段時間(例如每 5 分鐘),查詢帳戶實際的部位和委託,跟程式自己記錄的比對:
| 比對結果 | 處理 |
|---|---|
| 一致 | 繼續執行 |
| 部位不一致 | 停止新的下單,通知你人工確認 |
| 有程式不知道的掛單 | 取消,通知你 |
保證金監控
部位越大,保證金越吃緊。台指期的風險指標跌破一定比例,期貨商會追繳甚至砍倉。程式可以定時查詢權益數和風險指標,低於你設定的安全線就減碼。保證金和追繳的規則可以看期貨保證金完全解密。
第三層:系統穩定
為什麼要放在雲端主機(VPS)
放在家裡的電腦跑程式交易,會遇到停電、網路斷線、系統自動更新重開機、不小心關掉視窗。雲端主機是在機房租一台電腦,二十四小時開著,網路和電力都比家裡穩定。
| 家裡的電腦 | 雲端主機 | |
|---|---|---|
| 停電、斷網 | 偶爾會遇到 | 機房有備援 |
| 開機時間 | 要自己顧 | 一直開著 |
| 費用 | 已經有了 | 每月租金 |
| 適合 | 回測、開發 | 實單長時間執行 |
雲端主機怎麼選
| 項目 | 建議 |
|---|---|
| 地點 | 選台灣的機房,離期交所和券商主機近,延遲低 |
| 作業系統 | MultiCharts 只能在 Windows 上跑;Python 用 Windows 或 Linux 都可以 |
| 規格 | 跑一兩個策略不需要很高,記憶體夠用、硬碟用 SSD 即可 |
| 時間同步 | 開啟自動校時,K 棒時間才不會錯 |
| 系統更新 | 設定在收盤後或週末才更新、重開機 |
異常通知
程式出錯時要能通知你,常見的做法是串接 LINE、Telegram 或 Email:
| 事件 | 通知 |
|---|---|
| 單日虧損熔斷啟動 | 立即通知 |
| 對帳不一致 | 立即通知 |
| 程式超過一段時間沒有心跳(沒有回報還活著) | 立即通知 |
| 每天收盤 | 當日損益、成交筆數摘要 |
「心跳」的意思是:程式每隔一分鐘寫一筆「我還活著」的紀錄,另一支監控程式發現太久沒有更新,就代表主程式當掉了,馬上通知你。
上線前先做這三件事
- 把三層風控寫成清單,逐項在模擬環境測試:故意讓它斷線、故意讓它虧到上限,看它有沒有照設計停下來。
- 從最小口數開始:實單先用一口微台跑一兩個月,確認成交、滑價、通知都正常。
- 準備人工接手的方法:程式停機時,你要知道怎麼用手機或券商軟體查部位、手動平倉。
委託回報、斷線重連和滑價的細節,可以看期貨券商 API 串接實務。程式交易的整體流程在期貨程式交易怎麼開始。