均值回歸
均值回歸 EA 在價格偏離其均值達到可測量的距離後逆勢進場,目標是價格回歸。這個標籤只描述進場。本站公開的六檔當中,勝率從 40.26 % 到 79.17 %,盈虧比相差六倍,可六檔的獲利因子卻都落在 1.25 到 1.50 之間。
機制
EA 測量價格相對移動平均線或布林中軌偏離了多遠,通常以標準差或 ATR 單位計算,再用處於極端區域的擺盪指標確認這次拉伸。進場逆著行情方向;目標是均值本身,停損設在會推翻回歸假設的價位之外。真正決定成績單形狀的,是這兩個出場之間的距離。目標貼近進場會帶來高勝率和遠低於 1 的盈虧比;目標放在完整均值處則相反。本站公開的六檔均值回歸 EA 每月交易 1.5 到 5.45 次,中位獲利單持倉 48 到 187 小時。
適配性
最適合那些大部分時間待在區間內、並會回到可定義中樞的商品——歷史上是瑞郎交叉盤。不過本站公開的均值回歸 EA 實際跑在 AUD/CAD、USD/JPY、GBP/AUD、GBP/JPY 和 EUR/GBP 上。在趨勢階段的動能貨幣上結構性地不適用:拉伸會繼續拉伸,逆勢部位被迫扛著一段不會回頭的行情。ADX 低於 25 這類趨勢過濾幾乎是必備。適合能夠接受長連虧的交易者——這些紀錄中最糟的是連續十一筆虧損——並且會先看停損距離、再看勝率。
備註
均值回歸押的是彈性而不是動能:一個被拉離均值很遠的價格,彈回來的可能性大於繼續拉伸。EA 會等待一個統計上顯著的偏離——通常是相對移動平均線或布林中軌的 1.5 到 2.5 個標準差。它用處於極端區域的擺盪指標確認這次拉伸,隨後逆著行情進場,目標就是均值本身。
這描述的是進場,而進場正是買家能看懂的那部分。通常被硬安在它頭上的那句描述——均值回歸系統贏下大多數交易,偶爾虧一筆大的——是一個關於數字的主張,而不是關於機制的主張。這意味著它可以被檢驗,而不是被複述。拿我們自己的資料、也就是本站公開的六檔均值回歸 EA 去檢驗,這句話在其中兩檔身上成立。本頁講的是這台機器在 MetaTrader 5 裡如何搭建、那些紀錄關於結果形狀說明了什麼,以及在投入資金之前如何對它做壓力測試。
運作方式:進場是一段距離,出場才是成績單
進場這一側是一次測量,而三種常見構造幾乎可以互換:
- 相對移動平均線的偏離。 價格距離某條均線達到設定數量的 ATR 單位或標準差,被當作「這段行情已經過度延展」的陳述。便宜,而且整套策略一行寫完。
- 觸及布林通道或收盤於通道外。 同一個想法,只是偏離已經替你算好。收盤於通道外比觸及更嚴格,它改變交易筆數的幅度大於改變勝率的幅度。
- 帶有狀態過濾的擺盪指標極值。 RSI 或隨機指標越過閾值,並以足夠低的 ADX 讀數為條件,用來說明市場並不處於趨勢。這個過濾器就是「均值回歸 EA」與「一路對抗趨勢直到被全部停損出場的 EA」之間的差別。
成績單真正成形的地方是出場,而出場有兩個:位於均值或均值附近的目標,以及位於推翻假設的價位之外的停損。每筆交易的期望值是 勝率 × 平均獲利 − (1 − 勝率) × 平均虧損。這是算術,不是發現——但有用的推論是:一旦兩個出場距離被固定,這兩項就不再彼此獨立。把目標拉近進場,多數交易會在雜訊把它們震出去之前觸及目標:勝率上升,平均獲利縮到平均虧損之下。把目標推到完整均值處,能走完全程的交易變少:勝率下降,盈虧比升到 1 以上。
兩者都是均值回歸;兩者都在逆著一次拉伸進場。它們卻給出看起來像兩種不同策略的成績單,下面的數字就是這件事在現實中的樣子。
公開的均值回歸紀錄說明了什麼
表中每一個數字都來自各 EA 頁面上公開的已平倉交易清單——合計 1,994 筆,來自始於 2019 年、延續到 2026 年 3 月的紀錄。完整的回測執行、參數與測試條件公布在本站的方法論頁面。
| EA | 商品 / 週期 | 交易數 | 勝率 | 盈虧比(平均獲利 ÷ 平均虧損) | 獲利因子 | 中位持倉,獲利 ÷ 虧損 | 最長連虧 |
|---|---|---|---|---|---|---|---|
| Beacon | AUD/CAD M15 | 384 | 79.17 % | 0.32 | 1.25 | 0.41× | 3 |
| Ballast | EUR/GBP H1 | 307 | 78.50 % | 0.37 | 1.40 | 0.49× | 3 |
| Lanternfish | USD/JPY M5 | 407 | 62.65 % | 0.75 | 1.29 | 2.91× | 3 |
| Windrose | AUD/CAD H1 | 101 | 59.41 % | 0.90 | 1.31 | 0.56× | 4 |
| Lattice Weave | GBP/AUD H1 | 492 | 46.34 % | 1.74 | 1.50 | 2.66× | 11 |
| Tidewell Slack | GBP/JPY M15 | 303 | 40.26 % | 2.00 | 1.35 | 1.62× | 10 |
由此得出四點,而坊間說法一點都沒預測到。
高勝率不是這套策略的屬性。 六檔橫跨 40.26 % 到 79.17 %,沒有一檔落在這套策略慣常被推銷時所用的 65-75 % 區間。它們的中位數 61.03 %,高於本站公開的趨勢跟蹤 EA 的中位數(55.90 %)。無論是什麼把均值回歸 EA 與趨勢 EA 區分開來,它都沒有出現在多數買家用來排序的那一欄裡。
勝率和盈虧比是同一個旋鈕的兩頭讀數。 把六檔按勝率排序,盈虧比會自己排成完全相反的順序。79.17 % 的勝率配 0.32 的盈虧比,接著 78.50 % 配 0.37,62.65 % 配 0.75,59.41 % 配 0.90,46.34 % 配 1.74,40.26 % 配 2.00。六中有六,沒有例外。這不是關於市場的發現。這是目標相對停損移動時必然發生的事——也是為什麼一個不帶盈虧比的勝率幾乎不攜帶任何資訊。
這個旋鈕轉不動的是獲利因子。 盈虧比在組內相差六倍。而獲利因子是 1.25、1.29、1.31、1.35、1.40 和 1.50——整組都在 0.25 的跨度之內。而且六檔裡最高的那個勝率依然產生最低的那個獲利因子,其餘的排序則毫無規律。把目標放近,買到的是一份看起來更平滑的成績單,代價付在獲利尺寸上;放遠則相反;兩者都沒有變成一條實質上更好的規則。
回歸是獲利單慢慢完成的事。 這套策略被描述為快速停利、扛住虧損,那樣的話中位獲利持倉時間應當短於虧損持倉時間。這在六檔裡對三檔成立。Beacon 持有獲利單的時間是虧損單的 0.41×,Ballast 是 0.49×,Windrose 是 0.56×,與宣傳相符。另外三檔把獲利單多持有了 1.62× 到 2.91×,組內中位數是 1.09×,而趨勢組是 1.10×——只有六份紀錄時,兩組在這條軸上無法區分,而持有獲利單更久的那一半,正是把目標放在完整均值處的那一半。
市場條件:均值回歸什麼時候有回報,什麼時候沒有
| 條件 | 有利於均值回歸 EA | 不利於均值回歸 EA |
|---|---|---|
| 市場狀態 | 有可定義中樞、價格會回來的區間 | 不斷延展的方向性行情 |
| 波動率 | 高但無方向——K 線寬闊,淨位移為零 | 擴張並且朝一個方向持續跟進 |
| 拉伸本身 | 由會耗盡的流量造成——清淡時段、過度反應 | 由重新定價該商品的資訊造成 |
| 交易頻率 | 有足夠多的區間觸碰來取樣這個優勢 | 趨勢月份,有效訊號寥寥且個個做錯 |
| 持倉成本 | 回歸很快,資金成本無關緊要 | 部位逆著行情扛了好幾天,為犯錯支付隔夜利息 |
糟糕的環境不是下跌的市場,而是有方向的市場,這正是趨勢跟蹤在區間裡失效方式的精確鏡像。這種對稱性,才是把兩者放在一起看而不是當作替代品的誠實理由:它們在不同的天氣裡虧錢。這也是連虧為什麼會扎堆的原因。連續十一筆虧損不是十一個互不相干的錯誤;那是同一條規則十一次撞上同一段趨勢行情。
造成偏離的原因,和偏離的幅度同樣重要。在清淡時段被稀薄流動性拉開的價格,是回歸的候選。被利率決議拉開的價格已經被重新定價,不存在可以回去的舊均值。沒有任何指標能區分這兩種情況,這就是為什麼新聞過濾在這裡比在順勢進場的策略裡更重要。
同樣的彈性假設也驅動著統計套利:它交易兩個相關商品之間的價差,而不是單一商品相對自身均值的偏離。假設完全相同——只是被用在一種關係而不是一個價格上——失效方式也一樣:關係一旦不再成立,它就恰好在那一刻崩掉。在 EUR/GBP 這樣的單一商品上,被假定的關係就是該商品自身歷史與其均值之間的關係。
MT5 中的參數與設定
| 輸入項 | 常見起點 | 它控制什麼 |
|---|---|---|
MA_Period / BB_Period | 長到讓均值成為一個價位,而不是價格的落後複本 | EA 把什麼當作價格應當回歸的那個值 |
Deviation(σ 或 ATR 倍數) | 1.5–2.5σ,或按波動率縮放的等價值 | 價格要拉伸多遠進場才成立——控制交易筆數的旋鈕 |
RSI_Period / 閾值 | 僅作確認,不單獨充當扳機 | 過濾掉仍在加速的拉伸 |
ADX_Max | 25 左右,要測試而不是假定 | 抑制趨勢中的進場——本頁最重要的一個輸入 |
TakeProfit(到均值的距離) | 均值本身,或到均值距離的一部分 | 與停損一起決定勝率和盈虧比 |
StopLoss | 位於會推翻回歸的價位之外 | 均值回歸與意外馬丁格爾之間的分界線 |
MaxSpreadPoints | 略高於該商品的正常點差 | 極端與寬點差總是結伴而來;這一項擋掉最差的成交 |
OncePerBar | 收盤邏輯請設為 true | 防止一根拉長的 K 線反覆觸發同一個訊號 |
有三條 MT5 特有的現實,決定一份漂亮的回測能否在實盤接觸中活下來:
- 停損有最小距離,而這套策略本來就想要一個寬停損。 讀取
SymbolInfoInteger(symbol, SYMBOL_TRADE_STOPS_LEVEL)並據此夾住;對靠近現價的改單,同樣處理SYMBOL_TRADE_FREEZE_LEVEL。一個被券商悄悄拒絕的停損,會把一筆風險確定的交易變成一筆曝險無限的交易。 - 點差恰好在這套策略進場的地方變寬。 它所對抗的那些極端,往往出現在流動性清淡的條件下。用平均點差跑出來的測試,會高估一檔進場集中在點差最差時段的 EA 的優勢。請用貼近實際的點差或真實 Tick 測試,並且先讀建模品質再讀利潤。
- 持倉時間比這套策略的名聲所暗示的更長。 這些紀錄裡的中位獲利單持有 48 到 187 小時。這讓
SYMBOL_SWAP_LONG和SYMBOL_SWAP_SHORT成為一項真實成本而不是捨入誤差,而三倍隔夜息的日子各家券商並不相同。
- 固定進場距離和過濾器,然後別再動它們——你即將測量的成績單主要由兩個出場造就,一次改動全部只會讓你什麼也學不到。
- 用近目標和完整均值目標分別測試同一個進場,並記下各自的勝率、盈虧比和獲利因子。那個對比才是你真正在做的選擇。
- 從推翻假設的那個價位去設停損,而不是從一個整數出發,並夾到該商品的最小停損距離。
- 在同一段時間內,把 ADX 或狀態過濾器開著跑一遍、關著跑一遍。如果差別不大,說明測試期內沒有真正的趨勢,那份結果是未經檢驗,而不是穩健。
- 讀一讀所得成績單裡的最長連虧,並在投入任何資金之前決定:兩倍長的連虧你坐得住嗎。
失效模式:均值回歸 EA 是怎麼虧錢的
- 拉伸繼續拉伸。 這套策略虧錢的常規方式。每一次進場都逆著一段不會回頭的行情,而由於規則會反覆重新滿足條件,虧損是成塊到來的。表中那串十一筆虧損就是這種失效模式,不是 EA 壞了。
- 均值搬了家。 被重新定價的商品有了新的均值,舊的那個不再是一個價位。EA 仍在測量到一個已經不再有意義的數字的距離。
- 為了躲開虧損而撤掉停損。 把停損放寬,或者用攤平成本取而代之,會把一套風險確定的策略變成一個帶著好故事的網格。資金曲線立刻好看起來,尾部風險則變成無限。
- 把勝率當成安全邊際。 在 79 % 勝率、平均虧損為平均獲利三倍的結構下,只有命中率維持住,這套策略才有償付能力。
- 在錯誤的 K 線上測量成本。 進場集中在點差最寬的極端處,跨越多日的持倉要付隔夜利息。兩者在一份設定了固定平均點差、且不計資金成本的測試裡都是看不見的。
- 參數被擬合到一段區間樣本上。 在沒有趨勢的時期裡最佳化出來的偏離閾值,到了下一個時期就是錯的。相鄰取值給出差異巨大的結果,正是這個數字是被擬合出來、而非被選擇出來的跡象。
如何在 mt5depot 搭建並壓力測試一檔均值回歸 EA
要組裝上面描述的這台機器,你並不需要寫 MQL5。一個偏離度量、一個擺盪指標確認、一道 ADX 閘門、一個位於均值的目標、一個位於極端之外的停損,全都是無程式碼建構器裡的模組。自己動手搭的理由在於:真正要緊的測試不是「它賺不賺錢」,而是在同一條進場規則上比較兩種目標擺放,而沒有任何賣家頁面會替你跑這個對比。
- 用近目標和均值目標各測一次同一個進場,比較勝率、盈虧比和獲利因子,而不是只比淨利潤。
- 加入趨勢過濾器,並在關閉過濾器的情況下也測一遍成績單,這樣你才知道它究竟在做什麼。
- 從推翻假設的價位去設停損,並夾到該商品的最小距離,好讓測試器和實盤帳戶對得上。
- 用真實 Tick 歷史配合貼近實際的點差來測試,因為進場集中在點差最寬的地方;並且要讀這次執行的建模品質。
- 把真實持倉期間的隔夜利息計入——這裡紀錄中的中位獲利單是以天計持有的,不是以分鐘計。
- 讀最長連虧,並確認回測期間至少包含一段持續的、與策略對著幹的趨勢。
均值回歸與趨勢的對比
| 均值回歸 | 趨勢跟蹤 | |
|---|---|---|
| 假設什麼 | 被拉伸的價格會回到它的均值 | 已確立的方向會延續 |
| 相對行情的進場 | 逆著它,在極端處 | 順著它,在確認之後 |
| 何時虧錢 | 市場走出趨勢,拉伸繼續拉伸 | 市場進入區間,行情反覆折回 |
| 典型出場 | 位於均值或其附近的固定目標 | 移動停損或訊號反轉 |
| 最壞情況 | 一筆部位、或一串部位,扛著一段不會回頭的行情 | 一長串尋常的虧損 |
| 公開勝率中位數 | 61.03 %(六檔 EA) | 55.90 %(五檔 EA) |
| 公開最長連虧中位數 | 3.5,最長 11 | 4,最長 9 |
| 複雜度 | 中級——風險由兩個出場距離承擔 | 入門——輸入項少,難在坐得住 |
整體上沒有哪一邊更安全,而它們的失效模式幾乎互補:一個需要靜止,另一個需要運動。這是同時執行兩者的真實理由,但有一條表格無法呈現的但書。一檔均值回歸 EA 和一檔用固定停利的趨勢 EA,並不像它們的標籤所暗示的那樣不同,因為那時兩者都依賴價格停在規則所說的地方。在認定持有兩檔 EA 就已經分散了什麼之前,先確認每一個出場究竟在做什麼。
EA 目錄
本目錄中 12 個 均值回歸 EAs
相關文章
常見問題
- 什麼是均值回歸 EA?
- 均值回歸 EA 會等到價格偏離自身均值達到一個可測量的距離,然後逆著這段行情進場,目標是價格回歸。這個距離通常表示為相對布林中軌的標準差,或相對移動平均線的 ATR 單位,並用處於極端區域的 RSI、隨機指標之類的擺盪指標作為確認。停損放在這樣一個價位之外:一旦觸及,就說明這根本不是拉伸,而是一段趨勢的開始。就進場而言,它是趨勢跟蹤的天然反面,並且在相反的天氣裡失效。
- 均值回歸 EA 的勝率高嗎?
- 並不可靠地高,而這正是關於該策略最常見的錯誤假設。本站公開的六檔均值回歸 EA 紀錄到的勝率是 79.17 %、78.50 %、62.65 %、59.41 %、46.34 % 和 40.26 %。沒有一檔落在人們描述均值回歸時慣用的 65-75 % 區間裡,而六檔的中位數 61.03 % 高於本站公開的趨勢跟蹤 EA 的中位數(55.90 %)。勝率來自目標相對停損放在哪裡,而不是來自進場是逆勢這一事實。
- 哪些商品適合均值回歸 EA?
- 教科書答案是結構性區間震盪的交叉盤——EUR/CHF、USD/CHF、EUR/GBP——因為一個不斷回到中樞的商品,才給了策略可回歸的對象。我們自己公開的均值回歸 EA 裡,只有一檔跑在那份清單上的商品,即 EUR/GBP;其餘五檔跑在 AUD/CAD、USD/JPY、GBP/AUD 和 GBP/JPY 上。這說明要求比商品名稱更窄:真正重要的是那個具體商品在它自己的週期上,花在回歸上的時間是否多於花在延展上的時間。請在你打算交易的商品上驗證這一點,而不是照搬一份商品清單。
- 均值回歸與網格或馬丁格爾 EA 有何不同?
- 區別在停損。三者都會在不利行情面前累積或持有曝險,而且只要市場配合,三者看起來都在獲利。均值回歸 EA 在一個可測量的極端處開一筆部位,如果回歸假設被推翻,就以既定的虧損平掉。網格或馬丁格爾 EA 應對不利行情的方式是繼續加碼,於是虧損只有在帳戶無力支撐下一次加碼時才被實現。如果一檔以均值回歸名義出售的 EA 沒有停損,或者在虧損部位上攤平成本,那它就是披著這個標籤的另一種策略。
- 均值回歸 EA 的連虧會有多長?
- 比這套策略的名聲所暗示的更長。本站公開的六份紀錄中,最糟的一次是連續十一筆虧損,出現在勝率 46.34 % 的那檔 EA 上。六檔最糟連虧的中位數是 3.5,略低於趨勢跟蹤組的 4,但尾部更長:六檔裡有兩檔達到 10 和 11,而趨勢跟蹤的最大值是 9。逆勢策略遭遇壞天氣時是一整塊連著來的,因為擊敗一次進場的那個趨勢行情,同樣會擊敗下一次。請在為帳戶入金之前讀連虧,而不是在經歷它的時候。
- 為什麼該看獲利因子而不是勝率?
- 因為在這些紀錄裡,勝率會動,獲利因子幾乎不動。六檔公開的均值回歸 EA 在勝率上橫跨 40.26 % 到 79.17 %,在盈虧比上相差六倍。可它們的獲利因子是 1.25、1.29、1.31、1.35、1.40 和 1.50——整組只有 0.25 的跨度。六檔裡最高的那個勝率反而產生了最低的那個獲利因子。勝率和盈虧比描述的是出場被放在哪裡;獲利因子更接近這套規則真正賺到的東西。
Glossary