Tapio.toml¶
所有元件共用單一設定檔 Tapio.toml,各元件啟動時只讀取對應區段,其餘區段忽略。
檔案位置¶
[broker]¶
期貨商身份識別,用於對期交所 TMP 連線認證。
| 參數 | 類型 | 說明 |
|---|---|---|
fcm_no |
字串 | 期貨商代號(FCM No.),請依實際數值填寫 |
password |
整數 | TMP 認證密碼,請依實際數值填寫 |
[feature]¶
商品規則設定。請使用下方提供的設定值,無特殊需求請勿修改。
| 參數 | 類型 | 說明 |
|---|---|---|
high_liquidity_symbol_roots |
字串陣列 | 高流動性商品根代碼,此類商品允許 4 個以上交割月份,其餘限 2–3 個 |
contract_fraction |
物件陣列 | 大小合約對應關係:std=大型合約、mini=小型合約、ratio=換算比例 |
請複製以下設定值,不需修改:
[feature]
high_liquidity_symbol_roots = ['TXF', 'MXF', 'TMF']
contract_fraction = [
{ std = 'TXF', mini = 'MXF', ratio = 4 },
{ std = 'TXF', mini = 'TMF', ratio = 20 },
]
[system]¶
全域行為控制。
| 參數 | 類型 | 預設 | 說明 |
|---|---|---|---|
nameservers |
字串陣列 | — | 期交所 DNS 伺服器位址,用於解析期交所主機名稱與 SFTP |
net_thread_cpu |
整數 | -1 |
網路執行緒綁定的 CPU 核心編號(-1 表示不綁定) |
calc_thread_cpu |
整數 | -1 |
計算執行緒綁定的 CPU 核心編號(-1 表示不綁定) |
CPU 核心綁定
net_thread_cpu 須等於 GRUB isolcpus 所隔離的單一核心(範例為 3);calc_thread_cpu 建議設為 -1(不綁定),讓 CalcThread 與 OS / helper threads 共用未隔離的核心。詳見安裝前系統調校 — GRUB 開機參數。
[trade]¶
Tapio 對外連接期交所 TMP 交易主機的網路設定。
| 參數 | 類型 | 說明 |
|---|---|---|
connection_mode |
字串 | 'direct':使用 interface_addr 指定的固定 IP;'NAT':透過 ioctl 從 interface_name 動態取得 IP |
interface_name |
字串 | 交易連線網路介面名稱(NAT 模式使用) |
interface_addr |
字串 | 交易連線綁定 IP(direct 模式使用) |
order_no_ranges |
物件陣列 | 各交易系統類型的委託編號範圍(見下) |
socket_ports |
物件陣列 | 各交易系統類型對應的 TMP 連接埠與必填的 session_id;每筆可加 active_window = { start, end } 限制連線時段(見下) |
交易系統類型(system_type)
| 值 | 說明 |
|---|---|
10 |
選擇權(正常交易時段) |
11 |
選擇權(盤後交易時段) |
20 |
期貨(正常交易時段) |
21 |
期貨(盤後交易時段) |
[trade]
connection_mode = 'direct'
interface_name = 'enp1s0'
interface_addr = '10.111.26.75'
order_no_ranges = [
{ system_type = 10, min_order_no = '00000', max_order_no = 'zzzzz' },
{ system_type = 11, min_order_no = '00000', max_order_no = 'zzzzz' },
{ system_type = 20, min_order_no = '00000', max_order_no = 'zzzzz' },
{ system_type = 21, min_order_no = '00000', max_order_no = 'zzzzz' },
]
socket_ports = [
# session_id 為期交所配發、各 FCM 專屬,下方為示意值,
# 須用 tapio-p12-sessionid 取得實際值後填入(見下「session_id(必填)」)。
{ system_type = 10, ports = [40007], session_id = 3 },
{ system_type = 11, ports = [40009], session_id = 4 },
{ system_type = 20, ports = [40006], session_id = 6 },
{ system_type = 21, ports = [40008], session_id = 7 },
]
active_window 為選用欄位,省略時該 system 永遠維持連線。時間格式為 HH:MM,HH 接受 0–47 以表達跨日(例:{ start = "14:45", end = "29:00" } 代表 14:45 至隔日 05:00)。時段外會跳過 reconnect 並視為 ready。修改後須重啟 tapio-core 才生效。
以日盤 07:00–15:00、夜盤 14:00–隔日 05:00 為例:
socket_ports = [
{ system_type = 10, ports = [40007], session_id = 3, active_window = { start = "07:00", end = "15:00" } },
{ system_type = 11, ports = [40009], session_id = 4, active_window = { start = "14:00", end = "29:00" } },
{ system_type = 20, ports = [40006], session_id = 6, active_window = { start = "07:00", end = "15:00" } },
{ system_type = 21, ports = [40008], session_id = 7, active_window = { start = "14:00", end = "29:00" } },
]
session_id(必填)¶
每筆 socket_ports 都必須填 session_id——期交所配發給該 FCM、該 system_type 連接埠的 TMP session 編號。
缺 session_id 會導致啟動失敗
tapio-core 啟動時,只要有任一設定的 system_type 缺 session_id,即直接以 exit(-1) 中止,不會帶病啟動。舊版(核心仍讀 P12)沿用下來、socket_ports 沒有 session_id 的設定檔,升版後務必補上此欄位。
session_id 只記在期交所 P12 連線檔,無法從其他檔案推算(連接埠與 session 並非固定的「埠號 − 40000」對應,例外只列在 P12)。但它實際上是常數:跨交易日穩定、盤中不會重配,因此取得一次後固定寫入設定檔即可,不需盤中更新。
填錯的 session_id 會在 TMP 登入時被期交所打回——明確報錯,不是靜默錯誤。若某 system_type 的 TMP 登入開始被拒,重新取值、更新設定檔、重啟 tapio-core 即可(daemon 每日重啟並重讀設定)。
取得實際值
用核心隨附的一次性 helper tapio-p12-sessionid(裝在 /opt/Tapio/bin/)讀當日 P12 檔,逐 system_type 印出可直接貼回 socket_ports 的行:
<當日 taifex dayDir> 是含 P12.<system_type> 檔的當日 taifex 資料目錄(例:.../data/taifex/20260616)。輸出範例:
# paste session_id into the matching [trade.socket_ports] entries:
{ system_type = 20, ports = [ 40006 ], session_id = 6 }
把每行的 session_id 貼回對應的 socket_ports 項目即可。新接 FCM、或 TMP 登入開始被拒時,重跑一次。
[quote]¶
行情接收設定,供 tapio-quote-receiver 使用。
| 參數 | 類型 | 說明 |
|---|---|---|
interface_addr |
字串 | 接收 UDP 多播行情的網路介面 IP |
[fetcher]¶
tapio-taifex-fetcher 的產品檔來源模式。兩種模式與完整設定教學見
期交所產品檔來源。
| 參數 | 類型 | 預設 | 說明 |
|---|---|---|---|
mode |
字串 | pull |
pull = daemon 連 TAIFEX SFTP 拉檔;relay = 收 broker SFTP push 的本地落地目錄 |
relay_dir |
字串 | — | (relay 必填)broker 投檔的落地目錄,例 /home/sinopac/taifex |
scan_interval_sec |
整數 | 5 |
(relay)輪詢落地目錄的間隔秒數 |
stable_ticks |
整數 | 2 |
(relay)連續幾次掃描檔案 (inode, size, mtime) 不變才視為投檔完成 |
mode = 'relay' 時不連外,下方 [sftp] 與 [system].nameservers 皆不需要。
mode 省略時預設為 pull(沿用既有行為)。
[sftp]¶
期交所參數檔下載服務的 SFTP 連線設定。僅 [fetcher].mode = 'pull'(預設)時使用。
| 參數 | 類型 | 說明 |
|---|---|---|
username |
字串 | SFTP 帳號 |
password |
字串 | SFTP 密碼 |
am_servers |
物件陣列 | 日盤 SFTP 主機清單(host、port) |
pm_servers |
物件陣列 | 夜盤 SFTP 主機清單(host、port) |
poll_interval_sec |
整數 | 輪詢間隔秒數 |
Daemon 依本地時間 06:00 / 14:00 切換日夜盤主機。
[sftp]
username = 'myuser'
password = 'mypassword'
am_servers = [
{ host = 'sftp1.taifex', port = 22999 },
{ host = 'sftp2.taifex', port = 22999 },
]
pm_servers = [
{ host = 'sftp1.taifex1', port = 22999 },
{ host = 'sftp2.taifex1', port = 22999 },
]
poll_interval_sec = 30
[gateway]¶
客戶端連入程式的伺服器設定。
| 參數 | 類型 | 預設 | 說明 |
|---|---|---|---|
interface_name |
字串 | — | 程式監聽的網路介面名稱 |
host |
字串 | — | 監聽位址,填入客戶端 LAN 的介面 IP |
port |
整數 | — | 程式監聽連接埠,客戶端透過此埠連入下單 |
user_request_rate |
整數 | 3 |
每連線每秒允許下單筆數 |
user_request_burst |
整數 | 5 |
每連線突發上限(token bucket) |
daily_login_limit |
整數 | 256 |
每帳號每日登入上限,超過後拒絕登入 |
skip_source_ip_check |
布林 | false |
停用來源 IP 綁定檢查;僅測試環境使用,正式環境請保持預設值 |
allow_rod |
布林 | true |
允許 ROD(Rest of Day)委託 |
allow_ioc |
布林 | true |
允許 IOC(Immediate or Cancel)委託 |
allow_fok |
布林 | true |
允許 FOK(Fill or Kill)委託 |
最大連線數
客戶端最大連線數依授權與版本預先設定,無法透過 Tapio.toml 修改。
[grpc]¶
管理介面 gRPC 伺服器,供 GUI 客戶端連線。
| 參數 | 類型 | 說明 |
|---|---|---|
host |
字串 | 監聽位址 |
port |
整數 | 監聽連接埠 |
[preopen]¶
盤前資料來源目錄,供 tapioctl preopen 讀取。
| 參數 | 類型 | 說明 |
|---|---|---|
source_dir |
字串 | broker 投檔目錄,盤前 *.TXT 的來源路徑 |
[livesync]¶
盤中即時餘額更新檔案的監看目錄。
| 參數 | 類型 | 說明 |
|---|---|---|
watch_dir |
字串 | 監看目錄路徑 |
[login_log_export]¶
登入與 IP 驗證紀錄匯出設定,供 tapio-login-log-exporter 使用。
| 參數 | 類型 | 說明 |
|---|---|---|
output_dir |
字串 | 匯出目錄 |
[order_risk_log_export]¶
委託風控紀錄匯出設定,供 tapio-order-risk-log-exporter 使用。
| 參數 | 類型 | 說明 |
|---|---|---|
output_dir |
字串 | 匯出目錄 |
[mail]¶
郵件通知服務的設定,負責寄送 API Key 等通知郵件。
| 參數 | 類型 | 預設 | 說明 |
|---|---|---|---|
spool_dir |
字串 | — | 郵件佇列目錄(相對路徑以 config 上層目錄為基準) |
smtp_host |
字串 | — | SMTP relay 主機 |
smtp_port |
整數 | — | SMTP 連接埠 |
smtp_user |
字串 | '' |
SMTP 帳號(無認證時留空) |
smtp_password |
字串 | '' |
SMTP 密碼 |
smtp_security |
字串 | 'plain' |
'plain'(port 25)、'starttls'(port 587)、'tls'(port 465) |
sender |
字串 | — | 寄件者地址 |
subject |
字串 | — | 郵件主旨 |
poll_interval_sec |
整數 | 5 |
佇列輪詢間隔秒數 |
retention_sent_days |
整數 | 7 |
已寄出郵件保留天數 |
retention_fail_days |
整數 | 30 |
失敗郵件保留天數 |
retention_tmp_hours |
整數 | 1 |
暫存郵件保留小時數 |
[mail]
spool_dir = 'storage/mail_queue'
smtp_host = 'smtp-relay.internal'
smtp_port = 25
smtp_user = ''
smtp_password = ''
smtp_security = 'plain'
sender = '[email protected]'
subject = '[Tapio Gateway] 您的 API Key'
poll_interval_sec = 5
retention_sent_days = 7
retention_fail_days = 30
retention_tmp_hours = 1