EA程式上實盤前必做:五道檢查與除錯順序

EA程式上實盤前必做:五道檢查與除錯順序

2026-11-02

作者:Dicky CCY|Ace Fortune 領財智庫 AI Trading Academy 講師、量化交易·盈利分裂教練

寫完不等於可以掛上去,這句話我在課堂上講到自己也嫌囉嗦。一套 ea程式 在接到真實資金之前,有五件事必須逐項做完:樣本外檢驗、參數凍結、最小手數試跑、斷線行為確認、日損上限寫進程式。五道裡少任何一道,前面寫的每一行邏輯都等於裸奔。因為最後讓你虧錢的位置,通常不在你寫得最用力的那段程式碼,而在你根本沒有寫進去的那幾條規則。先問一個問題。你的系統上一次改動是幾時,改完之後有沒有人重新核對過,它跟三個月前是不是同一套東西?答不上來的話,你手上拿著的不是一套 ea程式,是一堆還在變動的參數。

先把範圍劃清楚,免得跟另一件事混在一起。判斷一套系統值不值得信任,那是另一個題目,它涉及策略邏輯、回撤深度、成本結構這些體質問題。這篇處理的是相反的一端:從寫完到掛上去之間,還有哪幾個工程環節沒有收尾。我在課堂上見過太多人把這兩件事當成一件,結果系統本身沒毛病,卻死在部署的細節上。而這些細節有一個共通點:它們全部不會出現在回測報告裡。下面五道檢查,每一道我都會交代查甚麼、怎麼查、查不過怎麼辦,最後再給一組你可以自己驗算的覆蓋率。

五道檢查是甚麼?先看整張表

先把答案放前面,後面逐道拆,這五道的次序不是憑感覺排的,它由失效發生在哪一層決定。訊號層兩道、執行層兩道、資金層一道,愈靠後的層,出事時離本金愈近。

檢查 查甚麼 怎麼查 查不過怎麼辦
樣本外 未參與調參的那段數據是否站得住 按時間切開,最後三成完全隔離 減參數或換框架,不重切樣本
參數凍結 掛上去的版本與驗過的版本是否同一版 抄五項快照並存檔 版本對不上就重驗一次
最小手數 固定成本與單位換算是否正確 用 0.01 手跑兩星期,逐筆核對佣金 對不上先改說明書,不改程式
斷線行為 斷網與重啟之後它會做甚麼 手動斷網五分鐘,逐項對照 行為不可預期就加外部監控
日損上限 單日最多虧多少,由誰執行這條線 在程式碼裡找停止開倉的判斷 沒有就補,補不了不要掛
桌前的人拿著筆,對照筆電上的走勢圖,逐格勾選手上的檢查表。

讀這張表要特別留意最後一欄。多數人卡住不是因為查不出問題,而是查出來之後選擇先掛上去再說,理由通常是資金已經準備好、時間已經排好、群組裡已經有人在跑。這三句話的共同點,是把檢查當成一個可以事後補的動作。而這五道之所以必須放在掛上去之前,是因為有幾道一旦通了真錢,原貌就查不出來了。

為甚麼是這五道,而不是別的五道?

判準只有一條:能不能在不通真錢的情況下查完。回撤深度、滑點容忍度、連續虧損時的心理承受,這些要真錢跑過才有答案,所以它們不屬於這張清單。樣本外、參數凍結、最小手數、斷線行為、日損上限,全部可以在模擬帳戶或 0.01 手之下查完,所以它們必須在掛上去之前完成。把可以提前查的事情留到之後查,等於用本金買一個本來免費的答案,而本金這種東西,買錯一次就會少一格。

第一、二道:樣本外與參數凍結

一套 ea程式 的樣本外檢驗,本質是一場不給你提前看題的考試。做法很機械:歷史數據按時間切開,前面七成開發與調參,最後三成完全隔離。這三成一次都不准碰,等參數定稿之後才跑一次。假設你手上是三年數據,最後三成大約是十個月,這十個月裡最好包含一段單邊行情與一段橫行震盪,否則你只是換了一個市況繼續自我安慰。查不過的時候,唯一正確的反應是縮減參數數量或換時間框架,不是把切點往前移。重切樣本等於把考題提前給考生,成績會好看,能力沒有增加。

參數凍結常被誤解成以後不准改,它真正的意思是改之前先留下一份可以對照的紀錄。我在課堂上要求學員抄下五項快照:完整參數表、點差與佣金假設、下單手數、平台與帳戶類型、以及交易品種的完整名稱。最後一項最少人做,也最常出事,因為同一個貨幣對在不同報價來源之下會帶不同後綴,合約規格、最小停損距離與點值都可能不一樣。回測跑的是沒有後綴那個,實盤掛的是有後綴那個,兩者根本不是同一份合約,手數照抄,風險就跟著放大。我幫學員核對帳單時,這一類落差出現的次數比策略錯誤多,而它幾乎不會被當成錯誤,因為畫面上看起來一切正常。

樣本外要留多長才夠?

三成是底線,不是標準答案,真正的判準是這段時間裡發生過幾次你策略最怕的市況。一套順勢系統最怕連續假突破,樣本外那十個月若只出現過兩次,那個數字的參考價值就很薄;一套逆勢系統最怕單邊趨勢,樣本外若剛好全是震盪,它會漂亮得讓你誤判。所以切完之後先數一數最怕的市況出現了幾次,兩次以下就補數據。

交易員在夜間桌前,螢幕上的時間軸被切成兩段,後段被遮住。

第三、四道:最小手數與斷線行為

最小手數不是為了省錢,是為了把固定成本的比例放大到你無法忽略。假設最低佣金每筆 1 美元、每手來回 10 美元、止損 20 點,兩個手數攤開差距就很清楚。0.01 手的時候,每點值 0.1 美元,20 點風險等於 2 美元,佣金 1 美元,成本佔該筆風險 1 ÷ 2 = 50%。0.5 手的時候,每點值 5 美元,20 點風險等於 100 美元,佣金 5 美元,佔比 5 ÷ 100 = 5%。同一套策略、同一個止損距離,成本佔比相差 10 倍(50% ÷ 5% = 10)。差別只來自最低收費這個不會隨手數縮小的固定項。

被放大的只有固定費用,這一點值得重讀一次。點差是按比例走的,1 點點差在 0.01 手是 0.1 美元,在 0.5 手是 5 美元,相對風險兩邊同樣是 5%。所以點差不會因為手數小而變貴,會變貴的只有最低收費那一筆。最小手數試跑的功能不是驗證獲利,而是把你在正常手數之下看不見的那一截成本,用 10 倍的放大率攤在眼前。看不見的成本不會消失,只會在你加大手數之後按比例回來。順帶一提,這也是我反對用 0.01 手跑三個月就宣稱策略有效的原因:樣本夠小、成本夠貴,那三個月的成績沒有辦法外推到真實手數。

斷線重連之後,程式會做甚麼?

這件事只能實測,不能靠推論,因為它同時取決於程式怎麼寫、平台怎麼處理、以及你用的是本機電腦還是虛擬主機。要確認的行為有四項:原有持倉是否保留、未成交掛單是否還在、重連之後會不會因為訊號仍在而重複開同一方向的倉、以及 ea程式 本身是否自動重新附掛到圖表上。測試方法很土,手動斷網五分鐘,或直接把交易平台關掉再開,然後逐項對照。代價也算得出來:假設斷線八分鐘,期間行情走了 15 點,0.5 手每點 5 美元,15 × 5 = 75 美元。這筆錢佔一個 10,000 美元帳戶的 0.75%,一年遇到三次就是 2.25%,它不是策略虧的,是流程沒有收尾。

第五道:日損上限為甚麼要寫在程式裡?

因為這道檢查有一個特性:人在場,反而更容易失效。連續虧損之後,人會開始找理由。例如這一筆訊號看起來特別好,這一筆只差幾個點。每一個理由單獨看都合理,合起來就是當日風險失去上限。寫在程式裡的那條線不需要理由,它只認一個數字,到了就停止開倉,不管執行的人當時多有信心。投委會的投資者教育資料 講得很直白,槓桿會把價格的輕微變動同時放大到盈利與虧損兩邊。所以上限應該按帳戶淨值的百分比設,而不是按固定點數或固定金額設。

寫在程式裡與寫在心裡,差在哪裡?

差在執行者的狀態:心裡那條線要在虧損中做決定,程式那條線在虧損前就決定完了。我自創的三線風控法裡,第三線就是日損上限,而且我一定要求它寫在程式碼裡。我不接受我會自己盯住這種答案,因為盯住這個動作需要一個沒有在虧錢的人來做,而事發當時那個人不存在。把 12 筆連續止損攤開算一次:帳戶 10,000 美元、單筆風險 1% 即 100 美元。假設訊號平均每 20 分鐘出現一次,一個單邊反轉日連續觸發 12 次同向訊號並全部止損,沒有上限就是當日 -12%,即 1,200 美元。有 3% 上限,第 3 筆之後停止,當日最多 -300 美元,12% ÷ 3% = 4,差距四倍。若這種日子連續五個交易日出現,無上限累積 -60% 即 6,000 美元,有上限 -15% 即 1,500 美元。倍數不變,但 4,500 美元的差距,決定你還有沒有下一季。

【核心算式】五道檢查各擋掉多少種失敗

覆蓋率這種東西,不寫假設就等於沒有數字,所以先講清楚三個前提。第一,失敗只按三個環節發生:訊號層、執行層、資金層,每層列 4 個具體失效點,合共 12 個。第二,每個失效點在單邊市與震盪市都會發生,所以情境失效為 12 × 2 = 24 個。第三,覆蓋以失效點乘市況計算,兩道檢查若指向同一個失效點,只算一次,重複的部分標為冗餘。換句話說,這張表算的是一套 ea程式 從寫完到上實盤之間,有多少種失敗是你有機會提前擋住的。

檢查 覆蓋層 失效點 情境失效 新增覆蓋
樣本外 訊號層 4 8 8
參數凍結 訊號層 2 4 0(與樣本外重疊)
最小手數 執行層 2 4 4
斷線行為 執行層 2 4 4
日損上限 資金層 2 4 4
合計 三層 12 24 20

把新增覆蓋加起來:8 + 0 + 4 + 4 + 4 = 20,24 − 20 = 4。淨覆蓋率 20 ÷ 24 = 83.3%,未覆蓋率 4 ÷ 24 = 16.7%。參數凍結那一格寫 0,不是它沒有用。它的作用不在擴大覆蓋面,而在時間點上多補一次。樣本外擋的是第一次失效,參數凍結擋的是第三次改參數之後的漂移。兩者指向同一批失效點,但發生的時間不同。這也是為甚麼五道全做完仍然有意義,冗餘覆蓋在工程上叫容錯,不叫浪費。

再看少做一道會怎樣。拿掉日損上限,覆蓋變成 16 ÷ 24 = 66.7%,未覆蓋 33.3%,是完整版的兩倍(33.3 ÷ 16.7 = 2)。拿掉斷線行為,數字一樣是 66.7%,因為兩道各值 4 個情境失效。只做樣本外與最小手數,覆蓋 12 ÷ 24 = 50%,未覆蓋 50%,正好是完整版的三倍(50 ÷ 16.7 ≈ 3)。這組倍數不是用來嚇人,是用來排補救次序的:如果時間只夠補一道,補哪一道能讓未覆蓋率減半,答案就在這幾個除法裡。

清單怎麼寫,才不會被自己繞過?

清單最大的敵人不是懶,是彈性。我見過三種繞過自己的方式,它們都不像作弊,所以特別危險。第一種是事後補簽,查的時候沒過,掛上去之後回頭把那一格打勾。第二種是把大致符合當成通過,例如滑點比假設多一點點、樣本外差一點點,兩個一點點加起來就是一個不合格的系統。第三種是把清單交給另一個人簽,而那個人只負責簽名,不負責判斷。三種方式的共同點是同一個動作,就是把一個可以判定的條件,換成一個可以商量的心情。

清單要寫成判斷題,不是感想題

寫法有格式,每一項都要具備三個欄位:判準、證據、不通過的後果。感想題長這樣:滑點是否可以接受。判斷題長這樣:最近 40 筆成交的平均滑點是否低於回測假設的 0.5 點,證據是平台成交明細的匯出檔,不通過則暫停並重新核對執行環境。前者要靠感覺回答,後者只有兩個答案。我還會在清單最上面加一行字,寫明這張紙由簽署人自己承擔。因為責任一旦模糊,人就會開始找彈性。而彈性這東西,在虧損之前是體貼,在虧損之後是帳單。順帶一提,如果你連策略誤解這一層都還沒釐清,清單寫得再漂亮也只是形式,可以先看 EA 程式五個常見誤解的拆解 把觀念對齊。

上實盤第一星期,該看哪幾個數字?

第一星期不是用來看賺賠的,是用來對帳的。四個數字就夠:實際平均滑點與回測假設的差距、成交筆數與訊號筆數的差、單筆風險的實際值、以及日損上限被觸發的次數。成交筆數那一項,漏單或重複下單都會在這裡露出來;單筆風險那一項,要用成交價與止損價反推,看是否仍是本金的 1%。這四個數字都不需要判斷行情,只需要把兩份文件放在一起對:一份是你的說明書,一份是平台的成交明細。

一百筆以下沒有統計意義,這句話我在課堂上講過很多次。所以第一星期看到正回報不必高興,看到負回報也不必停機,你要看的是偏差的方向與量級。滑點長期高於假設,先懷疑執行環境而不是策略。成交筆數長期少於訊號筆數,先看持倉上限與保證金佔用。單筆風險實際值大於設定值,通常是手數或止損距離其中一項沒有按規則走。這三個偏差任何一個持續出現,都代表你的 ea程式 在跑一個跟你以為不同的版本。而版本錯了的成績,好壞都沒有意義。

五道全過之後,還有三種風險擋不住

第一種是跳空。寫在 ea程式 裡的日損上限是日內煞車,而跳空發生在開盤第一秒,煞車來不及踩。假設上限設 3%,一次週末跳空讓價格直接穿過止損,成交價比止損差 0.8%。當日實際虧損 3.8%,等於上限的 126.7%(3.8 ÷ 3 = 1.27)。這個數字不是要你把上限調低,是要你知道上限保護的是連續虧損,不是價格缺口。

第二種是相關性。兩個品種各自看都合格,同時持有時卻往同一個方向走,風險不是相加,是被同一件事放大。這一層我在 多品種相關性與分散的拆解 裡算過一次,結論是同向持倉的實際曝險要用相關係數折算,而不是把手數相加。第三種是結構改變:你調參時那個市場,跟現在的市場已經不是同一個,波動率的制度換了,訊號的密度跟著換。三種風險沒有一道檢查能擋,所以五道全過之後仍然要留一筆不動用的緩衝。至於平台與帳戶本身,開戶前到 SFC 的持牌人及註冊機構名冊 核對一次,再掃一遍 證監會的無牌公司警示名單。這兩步不花錢,只花十分鐘。

落點:今晚只改一個地方

今晚不要改策略,去程式裡找那一段達到日損上限就停止開倉的判斷。找到它,順手把上限寫成帳戶淨值的百分比而不是固定金額,因為淨值會變,固定金額不會跟著變。找不到它,明天不要掛實盤,這不是保守,是把一個已知的缺口留在門外。前四道都可以慢慢補,補的過程還有模擬帳戶擋在中間。第五道沒有補丁,它保護的正是你無法預先計算的那一段,也就是人在虧損中會做出決定的那一段。

我的判斷到這裡不留退路:五道裡只能先做一道,做日損上限。其餘四道排在它後面,包括看起來最像基本功的樣本外。我會改口的條件只有一個,就是當帳戶規模大到單日 3% 已經是一個你會皺眉的絕對金額。那時候上限要按金額重算而不是按百分比,因為在那個規模下,百分比保護的是比率,不是你的生活。

立即 WhatsApp 聯繫小風團隊免費諮詢:+852 5378 5383 網站:https://aitrading.ace-fortune.com/EA

常見問題

投資涉及風險,過往表現不代表未來回報。本內容僅供教育參考,不構成任何投資建議。

分享到:
null

Ace Fortune 2018年成立於香港,早期研究方向包括面向 PI(個人專業投資者)的大數據智能指標及選股器,以及運用量化模型研究交易策略。
今天,我們將這份系統思維,延伸至 AI 工具與程式交易教育,讓新手學習運用 AI Agent 輔助整理資料、編撰程式與檢查邏輯。
從理解工具到動手實作,讓科技更容易入門,支持個人增值與成長。Let Intelligence Empower Your Growth. 

null
© 2026 Weber All Right Reserved