跳轉到

Tapio.toml

所有元件共用單一設定檔 Tapio.toml,各元件啟動時只讀取對應區段,其餘區段忽略。

檔案位置

/opt/Tapio/etc/Tapio.toml

[broker]

期貨商身份識別,用於對期交所 TMP 連線認證。

參數 類型 說明
fcm_no 字串 期貨商代號(FCM No.),請依實際數值填寫
password 整數 TMP 認證密碼,請依實際數值填寫
[broker]
fcm_no = 'F000000'
password = 000000

[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 開機參數

[system]
nameservers = ['<期交所 DNS 伺服器 IP>']  # 請依實際數值填寫
net_thread_cpu = 3
calc_thread_cpu = -1

[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:MMHH 接受 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_typesession_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 的行:

/opt/Tapio/bin/tapio-p12-sessionid -config /opt/Tapio/etc/Tapio.toml -data <當日 taifex dayDir>

<當日 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
[quote]
interface_addr = '192.168.2.26'

[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(沿用既有行為)。

[fetcher]
mode = 'relay'
relay_dir = '/home/sinopac/taifex'
scan_interval_sec = 5
stable_ticks = 2

[sftp]

期交所參數檔下載服務的 SFTP 連線設定。[fetcher].mode = 'pull'(預設)時使用。

參數 類型 說明
username 字串 SFTP 帳號
password 字串 SFTP 密碼
am_servers 物件陣列 日盤 SFTP 主機清單(hostport
pm_servers 物件陣列 夜盤 SFTP 主機清單(hostport
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 修改。

[gateway]
interface_name = 'enp3s0'
host = '<客戶端 LAN 介面 IP>'  # 請依實際數值填寫
port = 4000

[grpc]

管理介面 gRPC 伺服器,供 GUI 客戶端連線。

參數 類型 說明
host 字串 監聽位址
port 整數 監聽連接埠
[grpc]
host = '<管理介面 IP>'  # 請依實際數值填寫
port = 4001

[preopen]

盤前資料來源目錄,供 tapioctl preopen 讀取。

參數 類型 說明
source_dir 字串 broker 投檔目錄,盤前 *.TXT 的來源路徑
[preopen]
source_dir = '/home/<broker>/preopen'

[livesync]

盤中即時餘額更新檔案的監看目錄。

參數 類型 說明
watch_dir 字串 監看目錄路徑
[livesync]
watch_dir = '/home/<broker>/livesync'

[login_log_export]

登入與 IP 驗證紀錄匯出設定,供 tapio-login-log-exporter 使用。

參數 類型 說明
output_dir 字串 匯出目錄
[login_log_export]
output_dir = '/home/<broker>/log_upload'

[order_risk_log_export]

委託風控紀錄匯出設定,供 tapio-order-risk-log-exporter 使用。

參數 類型 說明
output_dir 字串 匯出目錄
[order_risk_log_export]
output_dir = '/home/<broker>/log_upload'

[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 = 'gateway@tapio.internal'
subject = '[Tapio Gateway] 您的 API Key'
poll_interval_sec = 5
retention_sent_days = 7
retention_fail_days = 30
retention_tmp_hours = 1