前置檢查¶
進入風控核心路徑(保證金試算、部位比較)之前,系統先對每一筆委託執行六項前置檢查。任何一項未通過,委託即立刻被拒,不再繼續後續的計算。
這六項檢查的共同特點是代價極低——多數只需查對一個狀態或比較一個數字,幾乎不消耗計算時間。愈早攔下不合規的委託,後段愈昂貴的計算就愈少被浪費。
一、連線登入與速率上限¶
登入狀態¶
客戶端必須在連線上先完成登入,才能送出委託。未登入的連線送出委託請求會直接被拒,系統不記錄任何風控狀態。
速率上限¶
速率限制適用於客戶端送往 Tapio 的所有請求,包含下單、改價、減量、刪單,以防止單一使用者的大量請求影響伺服器穩定。每條連線各自維護一個獨立的速率限制器,採 Token Bucket 演算法:
- 每秒以固定速率補充令牌
- 每筆請求(無論類型)消耗一枚令牌
- 桶內令牌耗盡後,下一筆請求立刻被拒;不會等待,也不會排隊
速率上限以連線為單位計算,不同帳號、不同客戶端各自獨立,互不影響。
速率參數可在部署設定中調整:
| 參數 | 預設值 | 說明 |
|---|---|---|
| 每秒穩態速率 | 3 | 每秒補充的令牌數,有效範圍 1–256 |
| 瞬間突發上限 | 5 | 桶的容量,即允許的最大積累令牌數 |
二、帳號旗標¶
系統在此確認帳號層級的交易許可。例如:帳號是否被凍結、是否禁止市價單、是否禁止新開倉。
詳細的旗標定義、設定方式與盤中生效機制,請參閱「帳號層級控管」。
三、系統總開關¶
系統設有一個全域開關,預設為開啟。管理員可透過管理介面即時切換,影響範圍如下:
| 操作 | 受影響 |
|---|---|
| 新委託(下單) | 是 |
| 改價 / 減量 | 是 |
| 刪單(取消) | 是 |
| 客戶端登入 | 否 |
開關關閉時,所有在途委託不受影響——已送往交易所的有效委託單照常維持,只是不再接受新的操作請求。
狀態持久化
每次切換都會先確認落盤後才生效。若前一交易日關閉前已將開關設為關閉,重啟後依然保持關閉,不會自動開啟。
四、欄位合法性與商品支援¶
系統對委託中的每個欄位進行基本合法性檢查,任一項不合法即拒絕整筆:
| 欄位 | 檢查內容 |
|---|---|
| 價格 | 數值合法(正數);市價單不帶價格 |
| 口數 | 正整數,且不超過單筆上限(見下節) |
| 商品代碼 | 系統能識別,且已完成盤前資料載入 |
| 委託方向 | 買 / 賣 |
| 開平倉碼 | 自動、開倉、平倉 三者之一;當日沖銷目前不支援 |
| 委託類型 | 限價單、市價單、範圍市價單 |
當日沖銷目前不支援
送出開平倉碼為當日沖銷的委託會在此階段被直接拒絕。
商品支援範圍:目前 Tapio 僅支援期貨。選擇權、價差單等商品在此階段即被拒絕,不會進入後續的風控核心路徑。
五、單筆口數上限¶
台灣期交所對單筆委託的口數設有上限,Tapio 依期交所現行規定執行。
以下為台灣期交所現行規定(108 年 5 月 27 日起生效):
| 商品類別 | 一般交易時段 限價單/範圍市價單 |
一般交易時段 市價單 |
盤後交易時段 限價單/範圍市價單 |
盤後交易時段 市價單 |
|---|---|---|---|---|
| 股票期貨及選擇權 | 499 口 | 10 口 | 499 口 | 5 口 |
| 期貨商品(不含股票期貨) | 100 口 | 10 口 | 100 口 | 5 口 |
| 選擇權商品(不含股票選擇權) | 200 口 | 10 口 | 200 口 | 5 口 |
部分商品限制目前不適用
不支援的商品類別在欄位合法性階段(上節)即被拒絕,不會進入此項口數檢查。上表依期交所完整規定呈現,適用範圍以當前支援的商品為準。
上限為單筆,不含累計
此檢查只看本筆委託的口數,與帳號已送出的有效委託單總量無關。累計部位、委託中口數的上限由「部位限制」另行管控。
六、行情資料可用¶
保證金試算需要以當前行情為基礎計算所需保證金(見「保證金檢查」)。若系統尚未收到該商品的行情資料,無法進行試算,委託會在此被拒。
正常交易日開盤後,行情資料通常已完整就緒。此項檢查觸發的典型情境是:
- 開盤初期行情尚未推送完畢,某商品的第一筆委託提前送達
- 連線剛建立,行情快照尚未完成同步
行情就緒後,同一商品的後續委託不再受此項限制。