作者:Dicky CCY|Ace Fortune 領財智庫 AI Trading Academy 講師、量化交易·盈利分裂教練
自動化不必一步到位,從一個只做三件事的小程式開始最快。有位學員第一次上課就說要做全自動系統,三個月後我問他跑過幾筆,答案是零。原因是他把「該怎麼做」和「怎麼讓機器照做」壓在同一張紙上,兩件事互相卡住。這篇要處理的就是這個順序,我會把它拆成幾個可以分開驗收的階段,從最笨的做法寫到能上實盤的完整流程。你在 ea外匯 這個題目上看到的混亂,多數不是策略不夠聰明,而是中間幾段被跳過了。先把順序講清楚,後面每一階的驗收標準才有意義。
一、先別寫全自動:三個台階的漸進路線
先問一個問題:你要機器替你決定,還是替你執行?多數人心裡想的是前者,嘴巴上說的是後者。於是一開始就往全自動寫,寫出來的東西沒經過任何一次真實驗證。我的路線是切成三個台階,每一階只新增一種能力,而且每一階都要能獨立跑一段時間。這個做法很工程:一次只改一個變數,出問題你才知道是哪個環節壞了。三個環節一起上,故障現場你連從哪裡開始查都沒有頭緒,最後只能整套丟掉重寫。這跟修水管一樣道理,你要先把總閥關掉再拆接頭,而不是拆到一半才回頭找閥門在哪。
| 台階 | 誰做決定 | 適合誰 |
|---|---|---|
| 第一階:報價提醒 | 你 | 還沒有固定規則、連自己一天看幾次盤都說不準的人 |
| 第二階:半自動 | 你按確認,機器送單 | 規則寫得出來、但對成交與滑點還沒概念的人 |
| 第三階:全自動 | 機器,你只做監控與停機 | 同一套參數已跑過樣本外與模擬盤、有回撤上限的人 |
第一階最笨,也最容易被跳過。它的做法是讓平台在條件成立時發通知,你自己手動下單,目的是把「我到底想在哪裡進」逼出答案。因為你按確認那一刻會猶豫,而猶豫的位置就是規則沒寫清楚的地方。第二階把送單交給機器,但保留確認視窗,這一階測的不是策略,是成交,你要記錄請求價與成交價差多少。第三階才把視窗拿掉,而它能不能上,取決於前兩階有沒有留下可以對照的紀錄。三階各有產出物:一份寫得出來的進場條件、一張記錄滑點的帳單、一條回撤上限,ea外匯 的課上我把它們列成必交作業,交不出來的不進下一階。

二、第一支 EA 只該做三件事
第一支 EA 只該做三件事:算手數、按規則進場、掛固定止損與止盈。這三件之外的東西,包括移動止損、分批加倉、多品種同時跑、新聞過濾,全部先別加。不是因為它們沒用,而是它們每一個都會讓你出問題時多了三種可能的原因。程式的除錯成本跟變數數量不是線性關係,兩個條件同時錯還可靠對照找出來,五個條件同時錯你只能猜。我見過最常見的失敗版本,是第一個版本就寫了七個功能,跑三天出現一次不該進場卻進場,然後他花兩週也找不到是哪個條件放行的。
手數這件事我先給一組假設,你可以整套換成自己的。帳戶 5,000 美元,單筆風險定在本金的 1%,也就是 50 美元。止損設 30 點,0.01 手在歐元兌美元上每點大約 0.1 美元。所以每 0.01 手碰到 30 點止損時的虧損是 30 × 0.1 = 3 美元。把 50 除以 3 得到 16.7,向下取整是 16 個 0.01 手,也就是 0.16 手。這條算式沒有神奇的地方,它只是把「我願意虧多少」換成「我該下多少」,而多數人是反過來先決定手數,再回頭接受那個虧損金額。
向下取整這一步最容易被省掉,而它省掉的是你自己的安全邊際。16.7 寫成 0.17 手,單筆風險就從 50 美元變成 51 美元,看起來只多一塊,但這一塊的意義是你訂的 1% 已經破了,往後每一次僥倖都會鼓勵你再破一次。另一個錯誤是把 0.16 手記成公式,下次止損改成 15 點手數沒跟著調,風險掉到 0.5%,看似保守,實際上是把算好的期望值砍掉一半。止損距離一改手數就要重算,這兩件事永遠綁在一起。槓桿是另一個乘數,同樣 0.16 手在 1:100 與 1:500 的帳戶裡佔用的保證金差五倍,而佔用少只代表你還有空間再開一筆。根據 投委會對槓桿式外匯的基本認識,這類產品的虧損可以超過本金,算最壞情況時不能只看止損那 30 點。
三、交易規則要寫到機器看得懂
人說「均線交叉就進場」,聽的人自動補上週期、補上價格、補上沒收盤算不算。機器不會補,它只會照字面做,於是你看到的結果跟你腦子裡想的永遠差一截。一條規則要拆成三個欄位:用什麼比什麼、用哪個價格、什麼時點判定。三個少一個,這條規則就不能交給機器。這也是我在 ea外匯 課堂上花最多時間的一段,因為學員總以為自己已經寫清楚了。
均線交叉為什麼機器不能直接用
一句話要拆成至少五個決定:快線慢線各幾期、用收盤價還是中間價、K 線未收時交叉算不算、兩線相距多少才算有效、同一根 K 線內反覆交叉怎麼處理。每一個問題你沒回答,程式就用預設值替你回答,而預設值通常不是你想要的。我幫學員核對帳單時看過很典型的一種:他以為做的是日線交叉,程式卻在每根新報價上重算。結果同一段行情進出十幾次,成本吃掉全部利潤。這不是策略錯,是那五個問題他只答了兩個。
時間窗口要連時區一起寫
時間窗口更容易出錯,因為它牽涉兩個時鐘。你的電腦用本地時間,經紀商伺服器用另一個時區,資料商的歷史檔又是第三個,你不指定,程式就會拿伺服器時間去比對你寫的「晚上八點到十一點」。結果你以為在做倫敦盤,實際跑的是別人的下午盤,而不同時段的點差與流動性差很遠。交易時段與點差怎麼篩選訊號 把各時段的成本差異拆開算過,同一套策略放在錯的時段,光點差就能把邊際吃光。所以時區、日光節約、週五收盤前多久停止開新倉,三個要寫在同一行註解裡。
四、回測不要信曲線,要看四個數字
回測曲線好看只說明一件事:在那段歷史裡這套規則剛好對得上。它不說明下一段還對得上,也不說明你是靠什麼賺的。我看過太多人拿一張往上走的圖問能不能上實盤,我先問樣本期多長,答案常常是三個月。三個月的單邊行情裡幾乎任何一套順勢規則都會往上走,那不是策略有效,是市場配合。所以要看的不是形狀,是四個可以被算出來的數字,而且四個要一起看。
| 指標 | 合格線 | 為什麼是這條線 |
|---|---|---|
| 盈利因子 | 1.3 以上 | 1.0 是不賺不賠且未計成本,1.3 才留得住手續費與滑點的空間 |
| 最大回撤 | 20% 以內 | 超過這個數字,多數人會在最低點停手,策略再對也執行不下去 |
| 勝率 | 不設單獨門檻 | 40% 配 2:1 可以活,70% 配 0.3:1 一樣會死 |
| 平均盈虧比 | 1.5 以上 | 低於這個,你需要極高勝率才撐得住連續虧損 |
盈利因子是總獲利除以總虧損,1.3 的意思是每虧一塊最後拿回一塊三,扣掉真實成本之後還有剩。最大回撤要看自己的承受能力,但兩成是實務上的分界。因為多數人在回撤超過兩成時會開始改參數,而那一刻改參數等於把回測作廢。勝率單獨看沒有意義,它必須跟盈虧比配對,40% 配 2:1 長期是正的,70% 配 0.3:1 一次大虧就把十次小賺吐回去。平均盈虧比低於 1.5 的系統需要極高勝率才成立,而高勝率通常靠很窄的止盈撐出來,那種結構最怕跳空。
這四個數字還有一個用法:當成上實盤前的門檻,而不是事後解釋的工具。先寫下你要的最低值,跑出來低於這個值就不往下走,而不是看到數字不好再回頭調參數去湊。我在 ea外匯 的作業裡要求學員把這四個數字寫在回測報告第一頁,寫不出來的代表他還沒看懂自己跑出來的東西。
五、驗證順序:歷史、樣本外、模擬盤、小額實盤
驗證順序不能顛倒,因為每一段要排除的東西不一樣。歷史段排除的是規則根本無法執行,樣本外排除的是參數只對這一段有效,模擬盤排除的是執行環境吃掉利潤,小額實盤排除的是你在真錢面前會改規則。順序不能換的另一個理由,是後面的階段都在假設前面已經成立,前面的假設錯了,後面的結果全部要重來。
四段各要跑多久
長度我用筆數與行情覆蓋度定,不用日曆天數。歷史段至少五年,而且要包含一次單邊趨勢與一次長時間盤整,只有趨勢的樣本會讓所有順勢策略看起來都很好。樣本外留最後兩到三成不要碰,參數在樣本內調好之後只跑一次,跑完定案,不能回頭再調。模擬盤至少四到八週或五十筆,重點不是賺賠,是比對訊號價與成交價的差距。小額實盤用最小手數跑三十筆,這一段的任務只有一個:確認你在真錢面前還照規則做。
四段加起來通常半年以上,這個時間成本省不掉,因為它買的是「知道自己在什麼情況下會失效」。有人把四段壓成兩週,直接從回測跳小額實盤,前二十筆運氣好是賺的。於是他放大到五倍手數,然後在第三十筆遇到策略本來就該避開的行情。他買到的不是經驗,是一個錯誤的結論。訊號從產生到成交之間發生了什麼 把中間那幾十毫秒逐段拆開,模擬盤那一段最好先讀過再開始記數字。
六、執行環境這件事
EA 本身幾乎不吃效能,一個普通策略跑在十年前的舊機器上也不會慢半拍,所以買機器不是為了讓它算得快。它要解決的是三個很土的問題:機器會不會關、線會不會斷、單子要走多遠。三個裡面任何一個沒解決,策略再好都只是一條畫在紙上的曲線。順序是先問在線,再問斷線,最後才問距離。順序換了就會漏掉最貴的那一項,而這一項在 ea外匯 的環境章節裡我永遠放在最後講。
延遲怎麼換成錢
延遲要換成錢只有一條路:先換成點,再乘頻率與每點價值。假設家用網路到經紀商執行伺服器來回 200 毫秒,同區域機房大約 20 毫秒,兩者差 180 毫秒。再假設每多 100 毫秒,成交價平均偏離 0.1 點,這個比例在一般市價單上大致成立,事件行情會更差。180 除以 100 等於 1.8,1.8 乘以 0.1 點等於 0.18 點,這就是每一筆多付的價差。而它不會出現在手續費那一欄。一天 5 筆、一年 250 個交易日,5 × 250 = 1,250 筆,1,250 乘以 0.18 等於 225 點。以 0.1 手每點約 10 美元計,225 × 10 = 2,250 美元,扣掉一年約 300 美元的機器費用,淨省 1,950 美元。
這條算式有三個假設要自己換掉:每點價值要用合約規格核對,0.1 手在歐元兌美元上大約每點 1 美元,跟假設的 10 美元差一個量級,那 1,950 就要整體縮小;一天 5 筆對高頻算少、對波段算多;0.1 點的偏離要用自己帳單的成交價減當時中間價得出。三個換完,你會得到一個屬於你的答案,而它跟 1,950 差多遠,就代表你該多早處理這件事。

機房要選在經紀商旁邊,不是選在你家旁邊。很多人第一個動作是找離香港最近的機房,理由是延遲低。這個理由只對一半,因為延遲是兩點之間的事,你離機房近不代表機房離經紀商近。正確順序是反過來:先確認經紀商的執行伺服器在哪個城市,再挑同區域的機房。問不到的時候,這本身就是訊號,值得把公司全名與牌照號碼抄下來,到 證監會的警示名單 對一次,再回頭看宣傳頁上的名字是否一致。
七、六個最常踩的坑
過度優化排第一,把參數調到回測最漂亮的那一組,等於讓參數去記住那段歷史的每一個轉折,換一段行情就失效。判斷方法是把參數前後各動一格,如果績效大幅改變,這組參數就是擬合出來的。忽略成本排第二,點差、佣金、隔夜利息、滑點四項都要進回測,只扣點差會讓短線策略看起來可行,實際被成本吃光。沒有回撤上限排第三,上實盤前就要寫下回撤到多少就停,寫不出來的人會在回撤最深那一刻憑感覺決定,而那一刻的感覺一定最差。
用錯經紀商的報價排第四,同一分鐘不同經紀商的報價可以差幾個點。回測資料跟你實盤的報價來源不一致,訊號就會在實際不成立的位置觸發。把模擬盤當形式排第五,模擬盤的成交幾乎沒有滑點,用它驗證策略會過關,用它驗證執行會騙自己。參數一改就不回測排第六,改一個參數看起來只影響一點,實際上它會改變進場頻率,而頻率一變,成本結構與回撤特徵全部跟著變。這六個坑的共同點是同一個:把「看起來對」當成「驗過」。監管機構對這類問題的提醒一直很直接,美國商品期貨交易委員會關於降低外匯交易風險的說明 講的也是同一件事:先確認你面對的是什麼,再談怎麼做。
八、手動與自動怎麼混著用
手動與自動不是二選一,是分工問題。我的分法是看這件事能不能被寫成可驗證的條件:進場、出場、手數寫得出來就交給機器;判斷今天這個品種適不適合做、判斷報價有沒有異常、判斷要不要停機,這三件留給人。原因是後面這三件需要的是「現在跟平常不一樣」的判斷。而它的依據通常不在圖表裡,在你有沒有看過足夠多的異常。
具體到操作,我會留三個人工確認點。開盤前看一次財經日曆與持倉,決定今天要不要暫停;單筆虧損超過預設值時機器照規則停手,人負責確認是規則問題還是行情問題;連續虧損達到上限,停機由機器執行,復機由人決定。三個點的共同邏輯是:可以自動的是動作,不能自動的是「要不要繼續」。這條界線我在 ea外匯 的風控章節裡畫得很清楚,越線的人通常不是不會寫程式,是不願意承認有些事機器判斷不了。
九、結論
從小開始,先跑通再優化,這條路沒有捷徑。三個台階走完大約半年,第一支 EA 只有三個功能,四段驗證一段都不能跳。這四件事加起來就是完整的入門流程,缺任何一塊你都會在實盤上補課,而實盤的學費比課堂貴得多。我寧可學員花三個月寫一支很笨但每條規則都寫死的程式,也不要他花三週弄出一支看起來很聰明、卻沒人知道它為什麼進場的程式。
所以我的判斷很直接:第一次做自動化,就別想著一次做到全自動,那條路通常做不到,而且會讓你連第一筆單都跑不成。什麼情況下我會改口?當你已經有一份手動執行超過兩百筆、每筆進出理由都能寫成條件的紀錄,那時候可以直接跳到第三階,因為你已經有規則,缺的只是執行。
立即 WhatsApp 聯繫小風團隊免費諮詢:+852 5378 5383 網站:https://aitrading.ace-fortune.com/EA
常見問題
投資涉及風險,過往表現不代表未來回報。本內容僅供教育參考,不構成任何投資建議。


