VALYNOXSTRATEGY RESEARCH TECHNOLOGY
AlphaPrimeAlphaPrime
策略學院 / 平台與匯出

Interactive Brokers 自動交易期貨:3 種路徑、模擬測試與成本

在 Interactive Brokers 自動執行期貨策略有三種方式:以 IB API 自寫程式、透過 TWS 或 IB Gateway 連接 MultiCharts、NinjaTrader 這類平台,或用轉接服務處理 TradingView 警報。先回測並檢驗,再用模擬帳戶演練委託處理,而不是用它來判斷策略構想。

作者 · 發佈 · 更新於 · 編輯原則

目錄
  1. 如何用 Interactive Brokers 自動執行期貨策略?
  2. TradingView 策略能在 Interactive Brokers 執行嗎?
  3. MultiCharts 與 NinjaTrader 如何連接 IB?
  4. 連接 IB 之前該測試什麼?
  5. 如何在 IB 模擬交易帳戶測試?
  6. 回測與 IB 之間,成本與資料有何不同?
  7. 常見問題
  8. 參考文獻

如何用 Interactive Brokers 自動執行期貨策略?

Interactive Brokers 的期貨自動交易有三種方式:以 IB API 自寫程式、透過 TWS 或 IB Gateway 連接 MultiCharts 或 NinjaTrader 這類交易平台,或用轉接服務把 TradingView 警報變成委託單。無論哪條路徑,都是先回測並檢驗規則,再於模擬帳戶演練委託處理。

三條路徑的差別,在於誰寫委託程式碼,以及你必須讓什麼持續運作。IB API 是 Interactive Brokers 公開的程式介面,讓軟體透過已登入的 TWS 或 IB Gateway 連線讀取報價與送出委託。自寫程式時,一切由你掌控,也一切由你維護。使用平台時,委託邏輯由平台開發者寫好,你負責設定。使用警報轉接服務時,圖表與券商之間多了第三方服務。貫穿本文的一個觀念:券商連線是工作的最後一步,不是第一步。一條未經成本與未見資料檢驗的規則,走更快的路徑到交易所也得不到任何好處。

自寫 API 程式連接 IB 的平台(MultiCharts、NinjaTrader)TradingView 警報轉接服務
誰寫委託邏輯你平台開發者轉接服務,由你的警報文字驅動
策略在哪裡執行你的程式,在你的電腦或伺服器上平台,在你的電腦或伺服器上TradingView 的伺服器觸發警報;轉接服務轉送
某個元件停止時會怎樣你的程式或 TWS 停止:沒有委託,程式不知道部位平台或 TWS 停止:沒有委託;平台重啟時會核對部位警報、轉接服務或 TWS 停止:委託永遠不會送達,而圖表並不知情
回測如何轉到實單你用程式重新實作規則,再重新測試匯出或轉換策略原始碼,比較回測結果Pine 策略留在圖表上;轉接服務把警報對應成委託
通往 Interactive Brokers 的三條路徑,以及誰寫委託邏輯:自寫 API 程式由你寫,使用平台由其開發者寫,TradingView 警報轉接服務則由轉接服務處理 誰寫委託程式碼? 通往 Interactive Brokers 的三條路徑 自寫 API 程式 平台 警報轉接 你 平台廠商 轉接服務 自己擁有越多,就要維運越多。 結論:選你維護得了的。
通往 Interactive Brokers 的三條路徑。你擁有的部分越多,掌控越多,必須持續運作的也越多。

多數散戶期貨交易人走中間這條路,因為平台已處理委託狀態、部分成交與重新連線。不想寫程式的交易人,各平台差在哪裡,詳見免寫程式自動交易的平台差異。第一條路適合以程式設計為業的交易人;第三條路適合規則已經寫在 TradingView 圖表上的交易人,但有下一節說明的限制。

TradingView 策略能在 Interactive Brokers 執行嗎?

TradingView 策略觸發的是警報,不是券商委託,所以要在 IB 執行,需要警報轉接服務;若策略以原始碼匯出到原生連接 IB 的平台,則由平台直接送出委託。TradingView 的交易面板支援透過已連接的券商手動下單,但 Pine Script 策略不會自行下單。它能做的,是在它會進場或出場時觸發警報。

警報轉接服務會接收警報訊息(通常經由 webhook),從文字中讀出商品、方向與口數,再透過 TWS 或 IB Gateway 向券商送出對應的委託。每個環節都可能讓訊息延遲、遺失或被誤讀。圖表顯示帳戶沒有的部位,或相反,而圖表上沒有任何東西告訴你。

通往 Interactive Brokers 的兩條路徑:TradingView 圖表把警報送到第三方轉接服務,再到 TWS 與 IB;平台中匯出的策略則直接到 TWS 與 IB,環節較少 警報不是委託 到達 IB 的兩種方式 TradingView 第三方 圖表 警報 轉接 TWS IB 匯出的策略 平台 TWS IB 每多一環,就可能漏掉委託。 結論:匯出策略本身。
警報不是委託。上方路徑在訊號與成交之間多了第三方轉接服務;下方路徑由持有策略的平台直接送出委託。

較短的路徑,是把策略本身移到能與 IB 連線的平台。若規則一開始是研究成果,而不是手寫的 Pine Script,這一步就是匯出,不必重寫:AlphaPrime(Valynox)把完成的策略寫成 MultiCharts(PowerLanguage)與 NinjaTrader(NinjaScript)的原始碼,這是本文涵蓋的兩個平台,也支援 TradingView(Pine Script v6),供也想要圖表版本的交易人使用;完整清單在平台匯出頁面。接著在建立 IB 連線之前,先在平台內回測匯出的程式碼,讓圖表、平台與帳戶執行的都是同一條規則。

MultiCharts 與 NinjaTrader 如何連接 IB?

兩個平台都是透過執行中的 TWS 或 IB Gateway 連線與 Interactive Brokers 溝通,平台中的商品、連續月與交易時段設定,必須與回測所用的一致。Trader Workstation(TWS)是 IB 的桌面交易程式。IB Gateway 是 IB 提供的較輕量程式,維持相同的帳戶連線,但不含完整的交易畫面。只要在設定中啟用 API,兩者都接受其他軟體的連線。

這條鏈有四個環節,每個環節各有設定。平台保存策略程式碼、交易時段模板、連續月的組成方式與委託類型。TWS 或 IB Gateway 保存 API 開關、socket 連接埠、唯讀開關與每日自動登出時間。IB 帳戶保存交易權限與保證金。交易所則決定合約與交易時間。

從平台到交易所的鏈,以及每個環節要檢查的設定:平台的交易時段與轉倉規則,TWS 或 IB Gateway 的 API 開啟且唯讀關閉,IB 帳戶的權限與保證金,交易所的合約與交易時間 檢查鏈上每個環節 各項設定存放在哪裡 平台 TWS / Gateway IB 帳戶 交易所 交易時段、轉倉規則 API 開啟、唯讀關閉 權限、保證金 合約、交易時間 一處不一致,所有委託就停擺。 結論:實單前檢查全部四處。
各設定存放在哪裡。任何一個環節不一致,委託就會停擺,或送到錯誤的合約。
  1. 在 TWS 或 IB Gateway 啟用 API,並記下連接埠。模擬帳戶與實際帳戶的預設連接埠不同。平台的連線設定檔必須指向你要交易的帳戶所用的連接埠。
  2. 關閉 API 的唯讀設定。唯讀開啟時,平台能收到報價與部位,但每一筆委託都會被拒絕。
  3. 把自動登出時間設在你的交易時段之外,或使用自動重啟選項。TWS 每天會在固定時間登出一次。若該時間落在規則交易的時段內,連線就會中斷,而策略仍預期要送出委託。
  4. 對齊商品與連續月。連續月是由相繼的期貨合約接成的單一價格序列,使回測能跨年度執行。平台依轉倉規則建構它;轉倉規則與回溯調整要和回測所用的相同,並交易轉倉規則目前指向的那個近月合約。
  5. 對齊交易時段模板。若回測用的是只含日盤的時段,而平台以全時段 K 棒執行策略,K 棒就不同,訊號也不同。

以另一個平台語言寫成的策略,要靠匯出或仔細轉換來搬移,而不是重新打字。照著截圖重新打規則,會漏掉細節:委託在哪一根 K 棒成交、價格取整到跳動點的方式、停損與停利同時觸及時的出場優先順序。若來源是 EasyLanguage,預期會有哪些差異,列在EasyLanguage 與 PowerLanguage 的差異。若來源是 MQL4 智慧型交易程式(Expert Advisor),相同的紀律也適用於MT4 策略轉換 MT5:轉換、重跑回測,並在接觸券商之前逐筆比對。PowerLanguage 的編譯與比對步驟,在將策略匯入 MultiCharts 並對齊回測結果。

連接 IB 之前該測試什麼?

連接任何券商之前,規則要先通過含手續費、滑價與下一根 K 棒執行的回測,再通過樣本外與推進分析的檢查,讓模擬帳戶只需證明委託處理,不必證明構想本身。下一根 K 棒執行,是指回測在某根 K 棒收盤時決定,在下一根 K 棒開盤成交,這是看到訊號後你最早能成交的價格。樣本外資料是規則未曾用來調整的歷史。推進分析沿著歷史重複「先最佳化、再測試」的切分,使接起來的測試區段形成一個結果;Pardo(2008)詳細描述了這個方法。

這個順序的理由是篩選。搜尋嘗試許多變體並保留最好的一個,保留下來的除了真正的規律,也夾帶了運氣,而最好的樣本內結果就被這份運氣膨脹了(Bailey、Borwein、López de Prado 與 Zhu,2014)。模擬帳戶無法告訴你膨脹了多少;它只顯示委託能夠送出。只有檢驗步驟做得到。在 AlphaPrime 中,這些步驟的門檻在搜尋開始之前,就在策略檢驗中設定,未通過早期檢查的候選策略永遠到不了後面的檢查,這讓你會考慮連接的規則數量維持在少數。

下方方塊顯示這個階段完成的回測摘要長什麼樣子。這次執行測試 ES 日線 K 棒,期間從 2019-01-02 到 2025-06-30,多空皆做,一口,每筆交易收 $20 手續費與 $25 滑價。它以拋物線 SAR 指標規則作為唯一的進場與出場,不設停損、停利或濾網;這是以標準指標建成的替代規則,不是 Interactive Brokers 策略,也不是建議。這一列是搜尋從嘗試過的 1,024 個中保留下來的那一個候選,以報酬相對回撤選出。事後挑出保留下來的那一個,會讓它看起來比實際好:這些數字描述的是那一次執行在過去價格上的結果,不是這條規則為任何人賺到的,也不是讀者能期待的。

來源:AlphaPrime 產品引擎(CPU),2026-10-31 執行。ES 日線,2019-01-02 至 2025-06-30,多空都做,1 口,每筆手續費 $20、滑價 $25。

數字結果
淨利(已平倉)$111,530
最大回撤$70,335
交易筆數51
勝率64.71%
獲利因子1.771
平均每筆$2,186.86
在場時間95.01%
策略帶進模擬帳戶的摘要:先讀交易筆數相對於期間、回撤相對於獲利,並確認每筆交易都計入手續費與滑價,再看其他東西。
策略帶進模擬帳戶的摘要:先讀交易筆數相對於期間、回撤相對於獲利,並確認每筆交易都計入手續費與滑價,再看其他東西。 ES · 日 K 棒 · 2019-01-02 至 2025-06-30 · CPU 引擎回測

把它當成連接前任何候選策略那樣來讀。大約六年半只有五十一筆交易,樣本偏薄;最大回撤 $70,335 相對於淨利 $111,530,意味著帳戶曾長時間處在遠低於高點的位置。決定這條規則值不值得做下一節設定工作的,是這兩件事,不是獲利那一行。樣本內與樣本外如何切分、多少筆交易才算有意義的測試,詳見樣本內與樣本外。

如何在 IB 模擬交易帳戶測試?

IB 模擬交易帳戶是用來演練委託流程,不是演練績效:每種委託類型各送一筆小單,將每筆成交與訊號 K 棒比對,檢查中斷連線後平台與 IB 對部位的看法是否一致,並留下書面紀錄。IB 的模擬成交是模擬出來的,所以那裡成交得好,並不能說明實單的滑價。模擬帳戶能證明的,是上一節那條鏈接得正確。

把它想成消防演習。沒有人用大樓有沒有燒起來來評斷消防演習;大家看的是每個人是否依序走到出口。五天的計畫能讓演習保持誠實:

  1. 第 1 天:連線並確認即時報價。平台顯示的最新價格與時間,與 TWS 顯示你要交易的合約相同。若模擬帳戶顯示的是延遲報價,訊號就會落後市場那段延遲,測試便毫無意義;請先為模擬帳戶安排即時行情,再繼續。
  2. 第 2 天:市價單、限價單與停損單各送一筆,每筆一口。從平台手動送出,不要由策略送出。確認每一筆都以正確的合約月份、方向與口數出現在 TWS,然後平倉。
  3. 第 3 天:執行策略,並把每筆成交與訊號 K 棒比對。成交時間應落在訊號 K 棒的下一根,市價單的成交價應接近該 K 棒的開盤價。若在訊號 K 棒本身成交,代表實單程式沒有使用下一根 K 棒執行,而回測有。
  4. 第 4 天:在交易時段中途關閉 TWS,再重新開啟,並確認平台與 IB 顯示相同的部位。然後對平台也做一次。重啟後忘記自己部位的平台,在實單中會讓進場加倍,或漏掉出場。
  5. 第 5 天:檢視紀錄並做決定。每一筆委託、成交、拒絕與中斷連線,連同時間與你的備註。紀錄裡沒有任何無法解釋的一行,才轉入實單。
五天的模擬帳戶演練:第 1 天確認即時報價,第 2 天送出三筆測試委託,第 3 天把成交與訊號 K 棒比對,第 4 天重啟並比對部位,第 5 天檢視紀錄並做決定 一週演練委託流程 每天只測一件事 第 1 天 第 2 天 第 3 天 第 4 天 第 5 天 確認即時報價 送 3 筆測試委託 成交對照訊號 K 棒 重啟,比對部位 檢視紀錄,決定 模擬證明的是接線,不是獲利。 結論:紀錄乾淨才轉實單。
一週的模擬帳戶演練。每天只測一件事,第五天的紀錄就是決策文件。

停損單在第二天值得多做一項檢查。停損單在停損價成交後會變成市價單,所以在快速行情中,成交價可能遠在觸發價之外,而模擬成交不會顯示這個缺口(美國證券交易委員會,停損單投資人公告)。記下每筆停損單的觸發價與成交價,之後才有實單的缺口可以比較。轉到一口的實際帳戶時,沿用相同的紀錄格式;第一個實單月,是演練的後半段。

回測與 IB 之間,成本與資料有何不同?

Interactive Brokers 的實際成本分三層,回測必須對應:每口手續費加上交易所與監管費用、市價單與停損單的滑價,以及行情訂閱,後者是按月計的成本,而不是每筆交易的成本。前兩者可以在回測中設為每筆交易的數字。第三者無法,而且對交易次數少的策略影響最大。

滑價是回測假設的價格,與委託實際成交價之間的差。上一節的回測每筆交易收 $20 手續費與 $25 滑價,對一口 ES 來說刻意設得偏重;測試的是規則在成本設得偏高時能否存活,而不是在最低成本下看起來最好。實際交易時,IB 的手續費一項,是券商費率加上交易所費用,再加上監管費用,按每口每邊收取,確切費率在 IB 依你的帳戶類型提供的收費頁面上。交易所也可能更改合約價值與交易時間;請查交易所的合約頁面取得最新數字,並用以你自己時區顯示的期貨現在有開盤嗎?工具設定實際交易時段。

項目回測設定IB 實際
每口手續費一個每筆交易的輸入值券商手續費加交易所與監管費用,每邊收取
滑價一個每筆交易的輸入值市價單與停損單實際成交的價格;限價單可能不成交
行情資料磁碟上的 K 棒檔案每個交易所按月訂閱;延遲資料不能用於實單委託
交易時段平台中的交易時段模板交易所營業時間,以你的時區顯示,含假日提早收盤
每個回測設定都對應 IB 的一項實際成本:手續費變成每邊費用,滑價變成實際成交,行情資料變成月費,交易時段變成交易所營業時間;資料費按月計,不按筆計 資料費按月計 回測設定與實際成本 回測 IB 實際 手續費 滑價 行情資料 交易時段 每邊費用 實際成交 月費 交易所營業時間 慢速規則要扛資料費。 結論:除以你的交易筆數。
每個回測設定都對應一項實際成本。三項按筆計;行情訂閱按月計,這會改變慢速策略的算術。

假設性範例

假設某策略一年做 200 筆交易,每筆交易含 $5 的手續費與費用,加上 $25 的滑價,即每筆 $30、一年 $6,000。即時行情訂閱每月 $120,一年增加 $1,440,約合每筆 $7,相對於 $30 屬於小額。再假設第二個策略一年只做 20 筆交易,每筆成本相同:一年交易成本 $600,但資料費同樣是 $1,440,換算下來每筆 $72,是交易成本的兩倍多。慢速策略必須以少得多的交易筆數扛起資料費。

上面的回測在約六年半內平倉 51 筆,所以月度資料費會占它每筆成本的相當大比例;在連接任何慢速的日線 K 棒規則之前,這是要衡量的事實,不論它的摘要看起來如何。延遲資料,IB 對許多交易所不需訂閱即提供,用來看圖表沒問題,用在實單規則上則毫無用處,因為每個訊號都在它所指的價格之後才到達。模擬帳戶需要與實際帳戶相同的即時行情訂閱,演練第一天才有意義。

你的下一步只是一次比較:打開目前回測的成本設定,依上表的順序,把三層實際成本寫在旁邊,並填入你的帳戶類型與交易所的 IB 數字。若回測中每筆交易的數字低於實際,就在演練週之前用實際數字重跑回測,讓你演練的規則,就是你將為它付費的規則。

常見問題

TradingView 策略能在 Interactive Brokers 執行嗎?

無法直接執行。Pine Script 策略在它會進場或出場時觸發警報;它本身不會送出券商委託。要在 IB 交易這些警報,需要警報轉接服務,也就是讀取警報文字並透過 TWS 或 IB Gateway 送出委託的第三方服務。另一個作法是把策略以原始碼移到原生連接 IB 的平台,例如 MultiCharts 或 NinjaTrader,由該平台下單。

如何在 IB 模擬交易帳戶測試策略?

把模擬帳戶當作委託處理的演練。確認即時報價,手動送出市價單、限價單與停損單各一筆、每筆一口,再執行策略,把每筆成交時間與價格與訊號 K 棒比對。在交易時段中途關閉並重開 TWS,檢查平台與 IB 回報的部位是否相同。把每筆委託與中斷連線都記成紀錄,紀錄裡沒有無法解釋的一行才轉入實單。模擬成交是模擬出來的,所以不能說明實單的滑價。

如何一步一步設定 Interactive Brokers 自動交易?

以手續費、滑價與下一根 K 棒執行回測規則,並讓它通過樣本外與推進分析的檢查。以匯出或仔細轉換,把它移到你要執行的平台,並在那裡重跑回測。在 TWS 或 IB Gateway 啟用 API、關閉唯讀、把自動登出設在交易時段之外,並對齊連接埠、商品、連續月與交易時段模板。在模擬帳戶演練一週,再以一口、同樣的紀錄開始實單。

IBKR 演算法交易需要寫程式嗎?

只有 API 路徑需要,因為那條路要你自己寫讀取報價與送出委託的程式。使用 MultiCharts 或 NinjaTrader 時,委託邏輯在平台內,策略則以匯出或轉換後的原始碼送來,並在平台內編譯。你仍需把程式碼讀到足以確認進場、出場與委託類型與回測相符。

IB 模擬帳戶的資料是即時的嗎?

只有在帳戶已訂閱該交易所的行情資料時才是;否則報價是延遲的。延遲報價讓模擬測試對實單規則毫無意義,因為每個訊號都在它所指的價格之後才到達。在演練第一天之前,先安排實際帳戶會使用的同一份即時行情訂閱。

參考文獻

  • Bailey, D. H., Borwein, J., López de Prado, M., & Zhu, Q. J. (2014). Pseudo-Mathematics and Financial Charlatanism: The Effects of Backtest Overfitting on Out-of-Sample Performance. Notices of the American Mathematical Society, 61(5), 458–471.
  • Pardo, R. (2008). The Evaluation and Optimization of Trading Strategies (2nd ed.). John Wiley & Sons.
  • U.S. Securities and Exchange Commission. Stop, Stop-Limit, and Trailing Stop Orders (Investor Bulletin). https://www.investor.gov/introduction-investing/general-resources/news-alerts/alerts-bulletins/investor-bulletins-15