VALYNOXSTRATEGY RESEARCH TECHNOLOGY
AlphaPrimeAlphaPrime
策略學院 / 策略生成

程式單是什麼?下單方式、要不要寫程式、與條件單的差別

程式單是電腦程式依事先寫定的規則自動產生並送出的委託單;程式交易是整套流程,程式單只是最後那一筆委託。不一定要自己寫程式,但規則要看得懂、要先含成本回測過,才送出第一筆。

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

目錄
  1. 程式單是什麼?
  2. 程式單怎麼下?從開戶到第一筆委託的順序
  3. 程式單要寫程式嗎?
  4. 程式單跟自動下單(條件單)差在哪?
  5. 程式單常用的委託類型與風險控管有哪些?
  6. 下程式單之前,怎麼先回測規則?
  7. 常見問答
  8. 參考文獻

程式單是什麼?

程式單是由電腦程式依事先寫定的規則,自動產生並送到期貨商的委託單。人負責寫規則、啟動程式、事後對帳;何時進場、何時出場、送幾口,全部由程式判斷。程式交易(program trading)指的是整套流程,程式單只是這條鏈最後送出的那一筆委託。

把程式單拆開看,有三層分開的東西。策略規則是用文字就能寫清楚的進出場條件,例如「收盤站上 20 日均線就做多,跌破就平倉」。交易程式是把這些規則翻成電腦能執行的步驟,並且每根 K 棒結束時重新判斷一次的軟體。下單通道是期貨商提供的 API 或連線模組,程式透過它把委託送進期貨交易所。三層分開的好處很實際:虧錢時你才分得出是規則本來就不行、程式寫錯、還是連線斷掉。市面上常見的規則類型,例如趨勢跟隨與均值回歸,各自回測起來的樣子不同,量化交易策略的四種常見類型與回測差異有整理。

程式交易是由規則、程式與券商連線三層組成的鏈條,程式下單只是這條鏈最末端,程式送給券商的那一筆委託。 委託是最後一步 三層,末端一筆委託 程式交易 規則 程式 券商 程式委託 三層,三種故障。 所以:修復失效的那一層。
程式交易是整條鏈;程式單只是最後兩格之間送出的那一筆委託。

本文貫穿一個主張:程式單的價值不在「自動」,而在規則能被事先測試、事後對帳。一條沒回測過的規則,用程式送單只是把錯誤執行得更快、更準時。

程式單怎麼下?從開戶到第一筆委託的順序

在台灣下程式單的順序是固定的:先開戶並開通程式交易權限,再裝可接單的軟體,載入策略,用模擬帳戶跑一段時間並對帳,最後才切到實盤。順序顛倒最常見的後果,是策略在實盤才發現口數或商品代碼設錯。

  1. 期貨商開戶並開通程式交易權限。多數期貨商把 API 或程式交易當成另外的服務,要額外申請並簽署文件。開戶時就一併問清楚:支援哪些交易軟體、API 有沒有費用、模擬帳戶怎麼申請。
  2. 安裝可接單的交易軟體並連線。MultiCharts 以 PowerLanguage 撰寫策略,透過期貨商提供的連線模組接到帳戶。Touchance 則是多家台灣期貨商提供給客戶的下單軟體,可直接連線該期貨商的帳戶;它的功能、費用與能否跑策略,Touchance 是什麼、支援哪些期貨商一文有中性整理。選軟體的標準只有一個:它能接到你開戶的那家期貨商。
  3. 載入策略並設定商品、口數、時段。商品代碼、月份、每次進場口數、程式要不要跑夜盤,這些都在這一步寫死,而不是等開盤才調。
  4. 模擬帳戶跑至少數週並對帳。對帳是把程式自己記錄的進出場,逐筆對照期貨商回傳的成交回報,看價格、口數、時間是否一致。這一步是切實盤前的閘門。
  5. 切換實盤帳戶,並先設好單日最大虧損停機。第一天用最小口數,重複步驟 4 的對帳。
從開戶到第一筆實單程式委託的五個步驟:開戶、安裝軟體、載入策略、模擬並對帳作為關卡,然後以一口進行實單交易 先模擬,再實單交易 五個步驟,依此順序 1 開戶 2 安裝軟體 3 載入策略 4 模擬與對帳 關卡 5 實單交易,1口 對帳不符,不得實單。 因此:先確認每筆成交。
從開戶到第一筆實盤程式單的五個步驟;第四步的模擬對帳是進入實盤前的閘門。

如果你是從台指期開始,台指期程式交易從零到第一個策略把上面每一步在台灣期貨商的實際做法寫得更細;若想要一份有時間表的練習計畫,第一個演算法交易策略的 30 天路線把開戶、回測、模擬、實盤排成一個月的進度。

程式單要寫程式嗎?

不一定要自己寫程式,但一定要看得懂程式在執行的規則。到程式單有三條路:自己寫、用別人寫好的策略、或先用不寫程式的方式產生並回測規則,再匯出成平台能讀的原始碼。三條路差在你要寫多少程式碼,以及你能看到、能修改、能判斷多少。

比較項目自己寫程式使用現成策略不寫程式產生規則再匯出
需要寫程式嗎是否否
能否看到完整規則是部分(視作者是否公開)是
能否修改參數是部分是
出問題時能否自行判斷是否或部分是,前提是讀過規則
三種程式單路徑比較:自行撰寫需寫程式且能看到規則;現成策略不需寫程式但只能部分看到規則;生成後匯出不需寫程式且能看到規則 你需要規則,不需要程式碼 程式單的三種途徑 需寫程式? 看得到規則? 自行撰寫 是 是 現成策略 否 部分 生成後匯出 否 是 寫程式可選,看懂規則不可免。 所以:請手動檢查三筆交易。
三條到程式單的路:差別在寫多少程式碼,以及你能看見、能修改規則的程度。

「看得懂規則」不是會寫程式,而是能用一句話說出每筆單為什麼送出。做到這一點的最低門檻是:拿到策略後,自己挑出回測裡任意三筆交易,對照 K 棒說明進場和出場各符合哪一條規則。說不出來,就表示出問題時你也判斷不了是規則、程式還是連線的錯。走第三條路時,AlphaPrime (Valynox) 會把產生並回測過的規則匯出成可讀的策略原始碼,再由你載入交易平台送單;它支援哪些平台,請看策略原始碼匯出支援的交易平台。拿到原始碼之後,上一段的「挑三筆交易對照規則」仍然要自己做一次。

程式單跟自動下單(條件單)差在哪?

條件單和程式單都是自動下單,差別在誰判斷、判斷幾次、斷線時誰負責送單。條件單是你在期貨商的下單軟體裡手動設定一個觸發條件,例如「成交價到某個價位就賣出 1 口」,由監看行情的一方在條件成立時代你送出一次委託。程式單則是你自己的程式持續讀取行情、每根 K 棒或每筆成交都重新判斷一遍規則,自己決定進場、加碼、出場,而且進場和出場彼此連動。

比較項目條件單程式單
誰判斷條件期貨商主機(雲端條件單)或你的下單軟體自己的程式
判斷次數一次觸發,送完即結束每根 K 棒或每筆成交反覆判斷
進出場可否連動否,一張條件單對應一個動作是,出場規則知道目前有部位
電腦斷線時若由期貨商主機監看,主機仍會送單程式停止,重連後需先對帳再繼續
適合的用途單筆停損、單筆到價進場整套策略:進場、加碼、出場、口數
條件單與程式單:券商只檢查一次條件單,電腦關機後仍會觸發;您的程式每根 K 棒檢查程式單,電腦關機後即停止 自動化,但並不相同 條件單與程式單比較 條件單 程式單 檢查者 券商 您的程式 檢查頻率 一次 每根 K 棒 電腦關機 仍會觸發 停止 程式執行,伺服器承保。 因此:加掛伺服器端停損。
條件單與程式單都是自動下單,但判斷的人、判斷的次數與斷線時的行為完全不同。

斷線那一列最值得多看一眼。條件單若放在期貨商主機,你的電腦關機它照樣會觸發;程式單則隨你的電腦一起停。這在夜盤特別重要,因為程式要持續跑到隔天凌晨,而你人在睡覺。夜盤流動性較薄、滑價較大,對程式單的成交與回測各有什麼影響,盤後交易時段的流動性與回測陷阱有專文說明。常見的穩妥做法是兩者並用:程式單負責策略,另外在期貨商主機掛一張條件單當保險停損,部位一平倉就由程式取消它。

程式單常用的委託類型與風險控管有哪些?

程式單常送的四種委託是市價、限價、停損、停損限價,每一種都在「一定成交」和「價格確定」之間取捨;風控則至少要有四項,而且寫在程式的判斷迴圈裡,不是靠人盯盤。先看委託類型。市價單要求立刻以當下能成交的價格成交;限價單指定一個價格,只在那個價格或更好才成交;停損單在成交價觸及設定價位後轉成市價單送出;停損限價單則在觸發後轉成限價單,換取價格確定,代價是跳空時可能不成交。

委託類型是否一定成交價格是否確定程式單常見用途
市價是否依訊號立即進出場
限價否是在固定價位掛單等成交
停損觸發後是否停損出場、突破進場
停損限價否是避免跳空時以離譜價格成交
四種委託單各選一邊:市價單與停損單確保成交,但不確保價格;限價單與停損限價單確保價格,但不確保成交 成交或價格:擇一 程式送出的四種委託單 確保成交? 確保價格? 市價單 是 否 限價單 否 是 停損單 是 否 停損限價單 否 是 每種委託單各選一邊。 所以:回測你送出的委託單。
四種委託在「一定成交」與「價格確定」之間各取一邊;程式要為每個動作選對一種。

回測時的假設要和程式實際送的委託一致。回測若假設限價單只要價格碰到就成交,實盤卻常常排隊沒排到;回測若用收盤價成交,實盤的市價單卻吃到滑價。這兩個落差,就是模擬帳戶那幾週要對帳出來的東西。

風險控管有四項,缺一項都算沒完成:

  1. 單日最大虧損停機。當日已實現加未實現虧損超過一個事先寫定的金額,程式平倉並停止送單,到隔天才重新啟動。
  2. 最大口數上限。不管規則連續出幾次進場訊號,總部位不得超過上限。這一條擋的是程式邏輯出錯時的重複下單。
  3. 斷線重連。程式偵測到連線中斷後自動重連,重連成功前不送任何新單。
  4. 部位對帳。每次送單後、每次重連後,把程式認為的部位和期貨商回報的部位比對;不一致就停機,由人處理。
在策略訊號與送出委託之間,程式本身會執行四項檢查:單日損失上限、口數上限、連線正常、部位相符;任一項失敗,就不送出委託 檢查機制位於迴圈內 每筆委託都要通過四項檢查 訊號 單日損失上限 口數上限 連線正常 部位相符 送出 任一檢查失敗:不送單。 所以:把限制寫進程式,別只寫備忘。
四項風控都住在程式自己的迴圈裡,卡在「判斷規則」和「送出委託」之間,所以不需要有人盯著螢幕。

假設範例

帳戶 50 萬元,單日最大虧損停機設 1 萬元,口數上限 2 口。早上規則進場做多 1 口,中午又出訊號加碼 1 口,第三次訊號出現時程式檢查到已達 2 口,不送單。下午虧損累積到 1 萬 2 千元,超過 1 萬元的停機線,程式以市價平掉 2 口並停止送單,直到隔天才重新啟動。整個過程沒有人看盤,四條規則各擋下一次。

下程式單之前,怎麼先回測規則?

任何規則送出第一筆程式單之前,都應該先用含手續費與滑價、次一根 K 棒成交的回測跑過,再用樣本外資料和走動式分析檢查。回測是把規則放到歷史價格上重播一遍,看它會下哪些單、結果如何。含成本是因為程式單每筆都真的付錢;次一根 K 棒成交是因為程式在 K 棒收盤才做判斷,不可能用那根收盤價成交;樣本外是指沒參與挑選規則的那段歷史,只有它能公平打分數。

下面是一份真實的回測報表,用來示範怎麼讀。它測的是 NQ(那斯達克 100 期貨)日線,2019-01-02 至 2025-06-30,多空雙向各 1 口,每筆交易扣 $20 手續費與 $10 滑價。進出場只用一條 ADX 指標規則,沒有停損、沒有目標價、沒有任何濾網;它是用標準指標組成的替代規則,不是程式單這個主題本身,拿它只是因為結構簡單、好讀。

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

項目結果
淨利(已平倉)$102,875
最大回撤$80,685
交易筆數43
勝率58.14%
獲利因子1.436
平均每筆$2,392.44
在場時間41.52%

這組數字怎麼讀?它是搜尋器試過 1,024 個候選之後,依報酬對回撤留下的一個;事後從一千多個裡挑最好的,本身就會美化結果,Bailey 等人(2014)把這種挑選帶來的膨脹算得很清楚。所以 $102,875 的淨利不代表 ADX 規則賺了這筆錢,更不是任何人可以預期的數字。真正該看的是比例與樣本:最大回撤 $80,685 將近淨利的八成,表示這條規則要吞得下很深的回檔;43 筆交易在六年半裡算少,平均每筆 $2,392.44 很容易被兩三筆大單左右;在場時間 41.52% 表示超過一半的日子空手。這些是你在送出第一筆程式單前要回答自己的問題,報表的作用就是把問題攤開。

看權益曲線下方的回撤帶有多深、持續多久,以及標示的樣本外區段是否還維持和前段相近的斜率。
看權益曲線下方的回撤帶有多深、持續多久,以及標示的樣本外區段是否還維持和前段相近的斜率。 NQ・日線・2019-01-02 至 2025-06-30・CPU 引擎回測

一次全段回測只是第一關。接著要做兩件事:把一段沒參與挑選的歷史留作樣本外,用同樣成本設定跑一次,看平均每筆交易保留了多少;再用走動式分析(在一段資料上選參數、在下一段原樣執行、往前滾動重複)確認結果不是靠一段行情撐起來的,Pardo(2008)對這套方法有完整說明。AlphaPrime 的策略驗證把走動式分析列為固定步驟,且一個策略在前面的檢查不過關時就停止後面的檢查,讓走到最後的候選數量維持在少數。

你的下一步很具體:拿目前打算用程式單執行的那條規則,照上面同一組設定(每筆 $20 手續費、$10 滑價,或你期貨商的實際費用,次一根 K 棒成交)跑一次樣本外回測,把平均每筆交易、最大回撤與交易次數三個數字寫下來,再決定要不要送出第一筆程式單。

常見問答

程式單跟程式交易是同一件事嗎?

不是。程式交易是整套流程:寫規則、寫或取得程式、連到期貨商的下單通道、監控與對帳。程式單只是這套流程最後送出的那一筆委託。平常口語常混用,但出問題時要分開,因為規則錯、程式錯和連線錯的修法完全不同。

跑程式單電腦一定要一直開著嗎?

要。程式單由你自己的程式判斷並送出,電腦關機或斷線,程式就停止,新的進出場訊號都不會送出。所以程式裡要有斷線重連和重連後對帳,並且可以另外在期貨商主機掛一張條件單當保險停損,電腦關機時它仍會觸發。

程式單跟條件單可以一起用嗎?

可以,而且是常見做法。程式單負責整套策略的進場、加碼和出場;條件單放在期貨商主機,當作電腦斷線時的保險停損。要注意兩者的同步:程式平倉後要立刻取消條件單,否則條件單觸發時會多開一個反向部位。

模擬帳戶要跑多久才能切到實盤?

以對帳結果決定,不以天數決定。至少要跑到程式經歷過開盤、收盤、換月和一次斷線重連,而且每一筆程式記錄的成交都和期貨商回報一致,對帳連續數週沒有差異再切實盤。切過去的第一天用最小口數,重複同樣的對帳。

參考文獻

  • 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
  • U.S. Securities and Exchange Commission. Understanding Order Types (Investor Bulletin). https://www.investor.gov/introduction-investing/general-resources/news-alerts/alerts-bulletins/investor-bulletins-14