期貨自動交易:實單前必備的 6 件事
期貨自動交易是一個循環:寫好的規則讀取每根新 K 棒,決定委託單,並在無人點擊的情況下送到經紀商。實單前需要六項條件:寫好的規則、價格資料、經紀商連線、足以承受比回測更深回撤的資金、固定的測試順序,以及無需你在場也能運作的風險限制。
作者 Soren Huang · 發佈 · 更新於 · 編輯原則
期貨自動交易如何運作?
期貨自動交易是一個循環:寫好的規則讀取每根新 K 棒,決定委託單,並在無人點擊的情況下送到你的經紀商。要讓它運作,需要六項條件:寫好的規則、價格資料、經紀商連線、足以承受回撤的資金、測試順序,以及你不在時仍有效的風險限制。
恆溫器是這個循環的日常版本。它讀取溫度,對照設定值,開啟或關閉暖氣,一分鐘後再做同樣的事,旁邊沒有人守著。期貨自動交易系統對價格做的是同一件事:新 K 棒出現,收盤時評估規則,下一根 K 棒開盤時送出委託,再檢查部位與風險;接著下一根 K 棒出現,循環重來。每個環節都沒有人介入,所以規則寫得好不好,決定了後面的一切;壞規則會被完美地重複執行。若你初次接觸規則式交易,可先讀 演算法交易是什麼,以及為何多數規則會虧損,了解它的基礎。
六項條件分成兩組。前三項組成圖中的循環;後三項決定這個循環能否在真實帳戶中存活。
| 所需項目 | 內容 | 缺少時的後果 |
|---|---|---|
| 寫好的規則 | 程式無需人為判斷即可評估的進場、出場與部位大小條件 | 無從自動化;「看起來強就買」無法執行 |
| 價格資料 | 用於測試的歷史 K 棒,與用於交易的即時報價,兩者的交易時段設定相同 | 回測與實單系統看到不同的 K 棒,做出不同的決定 |
| 執行連線 | 交易平台連接經紀商,且該經紀商接受規則所用的委託類型 | 委託已經決定,卻始終送不到交易所 |
| 承受回撤的資金 | 保證金,加上足以應付比回測更差的虧損期的緩衝 | 帳戶被迫出場,而那段回撤本是策略能夠回復的 |
| 測試順序 | 固定順序的測試,每項測試開跑前先寫好通過規則 | 實單依據的是事後挑選的結果 |
| 風險限制 | 停損、單日虧損上限、部位上限、連線檢查與緊急停止開關 | 一個壞日子或一次斷線,就演變成相當於整個帳戶的虧損 |
以下各節依序說明這六項。若想要第一項的逐日計畫,30 天完成第一個演算法交易策略的路線已有完整安排。
期貨自動交易需要多少資金?
帳戶必須涵蓋交易所保證金,再加上回測出現過的最差回撤所需的緩衝。實單回撤通常比回測大,因此決定最低資金的是回撤,不是保證金。保證金是交易所與經紀商要求持有一口合約的押金,只是入場費,不是留在場上的成本。回撤是權益從高點跌到下一個低點、再創新高之前的跌幅。想想汽車的油箱:容量要依最長一段沒有加油站的路程來定,不是依第一公里。
實單回撤通常更差,原因在於篩選。你看到的回測,是你留下來的那一個;留下它,部分原因是它在那一段歷史上的回撤較小。下面這次執行把這點具體化。AlphaPrime(Valynox)在 NQ 日 K 棒上,自 2019-01-02 至 2025-06-30,多空皆做、一口,搜尋 1,024 個候選策略,只以 MACD 規則作為唯一的進場與出場條件,不設停損、停利或濾網。留下的那一個,是搜尋結束後依報酬相對回撤選出的。MACD 規則是以標準指標組成的替身;它本身不是期貨自動交易,只是示範候選策略走到這個階段時的樣子。
來源:AlphaPrime 產品引擎(CPU),2026-10-31 執行。NQ 日線,2019-01-02 至 2025-06-30,多空都做,1 口,每筆手續費 $20、滑價 $10。
| 項目 | 結果 |
|---|---|
| 淨損益(已平倉交易) | $96,490 |
| 最大回撤 | $41,205 |
| 交易筆數 | 146 |
| 勝率 | 56.16% |
| 獲利因子 | 1.373 |
| 平均每筆損益 | $660.89 |
| 在市場內時間 | 17.7% |
事後從 1,024 個中挑出最佳者,會讓表中每個數字都偏好看,包括 $41,205 的回撤。Bailey、Borwein、López de Prado 與 Zhu(2014)指出,大規模搜尋中的最佳結果會被搜尋本身墊高,候選策略越多,墊高越多。這裡並未說 MACD 規則賺到了那筆錢,也未說你會賺到。這組數字能給你的,是緩衝的起點:一口合約的帳戶至少要撐得住這個回撤,而且要更多。
合約規格會影響保證金這一塊。E-mini 那斯達克 100 期貨每指數點 $20,最小跳動點為 0.25 點,價值 $5.00(CME Group 合約規格)。交易所可能調整保證金、跳動點與交易時段的數值;請到交易所的合約頁面查當日數字,並用免費的期貨合約與損益計算機,把點數變動換算成你所交易合約的金額。
假設性範例
假設一口合約的交易所保證金為 $25,000,回測最大回撤為 $41,205。交易人為應付較差的實單表現,在回撤之外再加一半,緩衝定為 $41,205 × 1.5 ≈ $61,800。一口合約的帳戶下限約為 $25,000 + $61,800 ≈ $86,800。只願投入 $50,000 的交易人,不該改用較小的緩衝;實話是,這個策略在一口的規模下,不適合該帳戶。
想從權益清單讀出自己的回撤,可貼入免費的最大回撤計算機,它也會顯示每次回復花了多久。回復時間與回撤深度同樣重要:系統處於回撤中長達一年,對耐心的考驗不輸對帳戶的考驗。
自動交易期貨一定要會寫程式嗎?
你需要一份平台能執行的策略,取得方式有三種:自己寫程式、在平台的規則編輯器中建立規則,或生成策略後匯出原始碼。三種方式各以不同的方式在時間與掌控度之間取捨,沒有一種能省去理解規則內容的功課。
- 自己寫程式。你要學平台的語言,並逐一輸入每個條件。掌控度完整,上手最慢,每個錯誤都要自己找。語言若是通用型語言,這條路要花多少時間,可參考 Python 演算法交易需要什麼、難在哪裡。
- 使用平台的規則編輯器。你從選單挑選條件,平台在背後產生程式碼。上手較快,但規則僅限選單提供的範圍,策略也只能在該平台執行。
- 生成策略並匯出原始碼。研究軟體在你的資料上搜尋規則組合並加以檢驗,再把留下的策略寫成交易平台的原始碼。你在執行前先讀過匯出的程式碼,因此掌控度完整,上手速度取決於審閱所需的時間。AlphaPrime 會把留下的策略寫成 MultiCharts 的 PowerLanguage、TradingView 的 Pine Script v6、TradeStation 的 EasyLanguage、NinjaTrader 的 NinjaScript、MetaTrader 4 的 MQL4 與 MetaTrader 5 的 MQL5;平台匯出頁面列有目前支援的平台,選擇經紀商前應先核對這份清單。
無論走哪一條路,規則都必須明確。「成交量放大時買進突破」是想法;「收盤高於最近 20 根 K 棒的最高價,且成交量高於 50 根 K 棒的均量時,於下一根 K 棒開盤買進」才是規則。把想法變成規則,是建立系統的主要工作;從零建立量化交易流程的逐步做法在寫程式之前,先處理這一步轉換。
自動交易策略實單前要怎麼測試?
依固定順序測試,每一步開跑前先寫好通過規則,任一步未通過就在該處結束。順序是:計入手續費、滑價與下一根 K 棒成交的回測;未動用的樣本外(OOS)期間;推進分析視窗;固定筆數的模擬帳戶;最後是一口實單。每一步花的時間都比前一步多,早期就失敗的策略,能省下後面的步驟。
- 計入成本與下一根 K 棒成交的回測。每筆交易都計入手續費與滑價;收盤時決定的委託,在下一根 K 棒開盤成交,因為那是你能交易的第一個價格。上述 NQ 回測每筆交易計 $20 手續費與 $10 滑價。通過規則範例:扣除成本後的平均每筆損益,至少是一買一賣成本的數倍。
- 未動用的樣本外期間。樣本外(OOS)資料是未納入搜尋的那段歷史,只使用一次,規則不變。通過規則範例:樣本外平均每筆損益至少保有樣本內(IS)平均每筆損益的一半,且正負號不翻轉。
- 推進分析視窗。推進分析是這樣的測試:在一段歷史上最佳化參數,原封不動地用在接續的下一段,再往前移動並重複(Pardo,2008)。通過規則範例:多數視窗在樣本外為正,且沒有任何單一視窗撐起整體結果。
- 模擬帳戶。匯出的策略以模擬資金在即時 K 棒上執行,使用你將來實單所用的同一個平台與經紀商連線。通過規則範例:固定筆數的交易,例如 30 筆,成交與訊號須與回測在同樣 K 棒上會產生的結果一致。
- 一口實單。以最小的真實規模,交易固定筆數,觀察真實成交、真實滑價與你自己的反應。通過規則範例:實單每筆滑價在步驟 1 所假設的數字之內。
下圖是產品對同一次 NQ 回測產出的權益曲線。請觀察樣本外標記前後曲線的斜率,以及陰影回撤的深度:只是在搜尋期間描述雜訊的策略,通常會在那條線上改變形狀。

為什麼要先寫通過規則?因為看到結果之後,幾乎任何數字都能找到說法。知道淨損益之後,回撤看起來就「可以接受」;想讓策略過關時,樣本外表現弱的一段就成了「安靜的一年」。事先寫好的規則,把這個選擇權從已經愛上權益曲線的那個你手中拿走。
哪個平台能連接經紀商?委託單怎麼送過去?
委託單從策略程式碼送到交易平台,從平台經由經紀商連線送到經紀商,再從經紀商送到交易所,所以選平台要看它連接哪家經紀商、該連線接受哪些委託類型,而不是看圖表功能。圖表再漂亮,無法把停損單送到你的經紀商,也只是圖表,不是交易系統。
這條鏈有三個接點,每一個都是你在入金前要先解決的問題:
| 接點 | 可能的問題 | 實單前要檢查什麼 |
|---|---|---|
| 程式碼到平台 | 平台不執行你策略所用的語言 | 策略的原始碼語言是平台能執行的;平台匯出頁面列有支援的平台 |
| 平台到經紀商 | 經紀商沒有該平台的連線,或連線在交易時段中斷 | 經紀商公布了該平台的連線方式;平台會記錄斷線,並告訴你未成交委託如何處理 |
| 經紀商到交易所 | 規則所用的某種委託類型不被接受,或處理方式不同 | 停損單、停損限價單與括號委託的行為符合策略的假設,並確認停損單是掛在交易所,還是掛在經紀商的伺服器 |
從後端往回推。先從你要交易的交易所與合約出發,找出可交易該合約的經紀商,看這些經紀商連接哪些平台,最後才決定策略在哪裡執行。若順序反過來、先挑平台,常見的下場是策略在模擬帳戶中運作良好,卻沒有經紀商能接收真實委託。
第二個接點還有一件事:時區與交易時段設定。平台的即時 K 棒,必須與你回測所用的 K 棒採用相同的交易時段與時區。在某個時間收盤的 K 棒上測試,卻在另一個時間收盤的 K 棒上實單,就是不同的策略,上一節的任何關卡都攔不到這個問題。
期貨自動交易能完全無人看管嗎?
系統可以在你不在時下單,但絕不該在沒有限制的情況下運作;五層限制能避免一個壞日子或一次斷線,演變成相當於整個帳戶的虧損。想想建築物的防火措施:煙霧偵測器、灑水系統、防火門、警報與消防隊。每一層都在內層失效時發揮作用,外層也不在乎火是怎麼起的。
- 單筆停損。一筆交易允許承受的最大虧損,以掛出的委託單設定,而不只是規則在下一根 K 棒收盤時才檢查的條件。
- 單日虧損上限。虧損達到此數字後,系統在下一個交易時段前不再進場。它限制的是策略單純看錯市場的那一天。
- 部位上限。帳戶最多可持有的口數,在策略之外強制執行。它能擋下把同一個進場送出兩次的程式錯誤。
- 連線與資料檢查。以心跳確認新 K 棒持續送達、經紀商連線正常。一旦失敗,系統就知道自己看不見行情,可以停止送出委託。
- 緊急停止開關。緊急停止開關是單一動作,由你手動或自動觸發,無論策略怎麼說,都會取消所有未成交委託並平掉每個部位。當問題出在策略邏輯本身時,它是唯一仍有效的一層。
第一層是策略的一部分,會在回測中受到檢驗。其餘四層完全不在回測內,所以交易人容易忘記:績效報表裡看不到持有部位時、資料在 03:00 中斷會發生什麼事。請在平台或經紀商端設定它們,即使策略當機也會運作,並在模擬帳戶上逐一強制製造故障來測試:拔掉網路、送出重複進場、持有部位時按下緊急停止開關。
下一步:在模擬帳戶測試開始前,把五項限制寫成適用於你帳戶的數字,測試期間再逐一刻意觸發,並記下平台的反應。你從未看過它觸發的限制,只是你希望它存在的限制。
常見問題
開始期貨自動交易需要多少資金?
足以涵蓋所持合約的交易所保證金,再加上能應付比回測更深回撤的緩衝。回測回撤屬於你留下的那個候選策略,所以實單回撤通常更深。不少交易人會在回測回撤上再加一半以上,並把總額當成一口合約的最低資金;若這個總額與帳戶不合,代表這個策略在該規模下不適合該帳戶。
自動交易期貨一定要會寫程式嗎?
不必,但你需要一份平台能執行的策略。你可以自己寫程式、在平台的規則編輯器中建立規則,或生成策略後匯出原始碼。第三種方式讓你得到可閱讀的程式碼而無需自己輸入,實單前仍要先讀過。
期貨自動交易系統可以無人看管運作嗎?
它可以在你不在時下單,但仍應帶有無需你在場也能運作的限制:單筆停損、單日虧損上限、部位上限、連線檢查與緊急停止開關。這四個外層在平台或經紀商端設定,而不是在策略之內,所以策略本身出錯時仍然有效。在系統交易真實資金之前,先在模擬帳戶上逐一強制製造故障來測試。
哪個交易平台能連接我的經紀商?
從交易所與合約往回推:找出可交易該合約的經紀商,看這些經紀商公布了哪些平台的連線,再從中挑選。接著確認該連線接受你策略所用的委託類型,尤其是停損單,以及連線中斷時如何處理未成交委託。AlphaPrime 的平台匯出頁面列有匯出的策略可執行的平台。
參考文獻
- 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.
- CME Group. E-mini Nasdaq-100 Futures contract specifications (contract size $20 × index, minimum tick 0.25 index points = $5.00). cmegroup.com/markets/equities/nasdaq/e-mini-nasdaq-100.contractSpecs.html

