執行模型

亦稱:訂單執行模型, 經紀商執行類型, 交易室與無交易室, 執行模式, 訂單執行模式, DD 與 NDD

執行模型是經紀商處理訂單的方式——自己充當對手方接下訂單,或把訂單路由至外部流動性——它決定了誰付錢給誰、怎麼付,以及這個帳戶容得下哪些 EA。

執行模型 — MT5 glossary overview

一覽

術語類型
經紀商術語
難度
進階
適用情境
券商選擇 · EA 評估 · MT5 操作

一句話講清

你按下買入時,要麼是經紀商自己賣給你,要麼是它把訂單轉給別人、自己留一筆手續費。這一個選擇決定了你的成本以什麼面貌出現、你虧損時誰在獲利,以及經紀商願意容忍哪種交易行為。

為什麼重要

點差、佣金、重新報價、剝頭皮禁令、執行品質——交易者對經紀商的每一項抱怨,追根究柢都回到訂單去了哪裡。先讀懂模型,這些抱怨就變成同一個解釋。

  • 它決定了利益衝突到底存不存在。對手方經紀商在結構上就靠客戶虧損賺錢;路由型經紀商靠成交量賺錢。
  • 它解釋了定價。固定點差只有在有人吸收價格波動時才做得到,而那個人就是站在你對面的一方。
  • 它解釋了限制。最短持倉時間、剝頭皮禁令與 last-look 拒單,來自無法吸收快速訂單流的帳簿,而不是平台的限制。
  • 它是回測永遠顯示不出來的那一項經紀商屬性,因為測試器對每一筆訂單都直接用價格序列成交,不管實盤時是誰在接單。

券商如何定義

  • 造市商,也叫交易室或 B-book:經紀商自己做交易的對手方,因為由它自己吸收差價,所以可以報固定點差。
  • STP,直通式處理:經紀商把訂單傳給外部流動性提供商,並把加價折進報價裡,而不是另外收費。
  • ECN:訂單以原始報價遇上一個由多方參與者組成的池子,經紀商按手數收取明示的佣金。
  • 混合型:多數零售經紀商把一部分訂單流送往外部、其餘內部消化,按客戶或按商品區分。這是常態,不是例外。
  • 在多數司法管轄區,標籤是經紀商自己選的。經紀商怎麼拿錢——加價還是明示佣金——才是可觀察的事實,而且同一家可以兩種都用:XM 掛著造市商標籤,同時又有一個原始報價加每手 $3.5 的 Zero 帳戶。

各家券商的差異

  • 同一家經紀商按帳戶類型不同,這很常見:標準帳戶內部消化,原始帳戶對外路由。以下比較的六個經紀商都列出了一個 $0 層級與一個佣金層級。
  • 同一個帳戶內按商品不同。主要貨幣對對外路由、異國貨幣對或指數內部消化,是常見的切法。
  • 按執行模式不同。Market Watch(市場報價)→ 在商品上按右鍵 → Specification(規格)會顯示 Execution 為 Instant、Market、Request 或 Exchange;決定會不會出現重新報價的是這個欄位,而不是行銷頁面。
  • 按成交策略不同。同一個視窗列出伺服器接受的成交類型——Fill or Kill、Immediate or Cancel、Return——它們在不同經紀商之間、以及同一家的不同帳戶類型之間都不一樣。
  • 按合約不同。關於自動交易、剝頭皮與持倉時間的政策雖然源自模型,卻寫在客戶協議裡。

對 EA 表現的影響

  • 在 Instant 執行下,請求帶著一個價格與一個以 point(MT5 的最小報價單位)為單位的偏差;價格移動超過偏差就會回傳 10004 TRADE_RETCODE_REQUOTE。在 Market 執行下,伺服器按當前價格成交,這兩個欄位都被忽略。
  • EA 送出商品不允許的成交類型,每一筆訂單都會拿到 10030 TRADE_RETCODE_INVALID_FILL。用 SymbolInfoInteger 讀取 SYMBOL_FILLING_MODE 並據此選擇類型;旗標只涵蓋 Fill or Kill 與 Immediate or Cancel,而 Return 是 Market 與 Exchange 執行的屬性,不是旗標。
  • 大於零的 stops level 會拒絕放在它裡面的停損或停利,回傳 10016 TRADE_RETCODE_INVALID_STOPS。對手方帳簿往往會設一個;很窄的剝頭皮停損可能在策略真正開跑前就失敗。
  • 策略測試器沒有執行模型。它的 Delays 設定以毫秒模擬延遲,但成交仍來自價格序列,用的是歷史資料所攜帶的點差。
  • 此處每一份清單都寫明其紀錄來自哪份歷史資料——33 份中有 30 份寫明 Exness MT5 M1 歷史——所以紀錄裡的成本是同一個場所的成本,不管你入金到哪個帳戶。

入金前要確認什麼

  • 經紀商在你將入金的那個帳戶上怎麼拿錢:點差裡的加價,還是每手明示的佣金。這六家經紀商在一個層級上寫明 $0,在佣金層級上寫明每手 $3 到 $7。
  • MT5 商品規格中的 Execution 欄位與成交類型,要看 EA 實際交易的那個商品、在你將開立的那種帳戶類型上。
  • 該商品的 stops level 與 freeze level,對照 EA 會送出的最小停損或停利。
  • 客戶協議中關於自動交易、最短持倉時間與剝頭皮的條款——行銷頁面不是合約。
  • 經紀商是否公布執行或滑價統計,以及那些數字有多新。本站的實盤點差紀錄表至今仍是零列。

常見風險

  • 按標籤挑選。ECN、STP 與無交易室在多數地方都是不受監管的用語,經紀商可以一邊用這些詞、一邊把大部分訂單流內部消化。
  • 因為平台允許 EA 就以為帳戶對 EA 友善。平台永遠允許;真正限制它們的是客戶協議。
  • 部署之後才發現有最短持倉時間,此時剝頭皮 EA 已經跑過,交易被取消或調整後才退回來。
  • 把固定點差讀成成本優勢。固定定價意味著對手方承擔波動,而它會把這一點算進價格裡。

範例

在六家指名經紀商各自的免佣金層級上交易一標準手 EUR/USD,以及測試器會以什麼價格成交同一筆訂單。這些數字是各經紀商公布的典型值,不是我們的實測。

Exness Standard(標籤:ECN)
0.7 pip,$0 佣金
目錄中最低的標準層級點差;原始層級另加每手 $3.5。
TitanFX Standard(標籤:ECN)
1.0 pip,$0 佣金
Blade 層級收每手 $7——此處明示佣金中最高的一個。
AXIORY Standard / FXGT Mini / HFM Premium(標籤:STP)
1.1 / 1.2 / 1.2 pip,$0 佣金
佣金層級為每手 $3 到 $3.5。
XM Standard(標籤:造市商)
1.6 pip,$0 佣金
此處最寬——而同一家經紀商的 Zero 帳戶卻是原始報價加每手 $3.5。
測試器的成交價
M1 歷史資料所攜帶的點差
六個帳戶不管入金到哪一個都完全相同,這正是模型從不出現在測試器報告裡的原因。

來源:這六家經紀商各自記錄的 executionModel、baseSpreadEurUsd 與 commissionPerLot 欄位。每手 $1 的佣金相當於一標準手 EUR/USD 的 0.1 pip,所以明示佣金可以換算成與點差相同的單位。

計算 每手 $3.5 ÷ 每 pip $10 = 0.35 pip · 每手 $7 ÷ 每 pip $10 = 0.7 pip (一標準手 EUR/USD,按每次收費計)

結果 六個免佣金層級之間 0.7 到 1.6 pip——一份回測,六種不同成本

怎麼使用

從經紀商怎麼拿錢與訂單怎麼成交來辨認模型,然後把它對到策略真正需要的東西,而不是對到聽起來最先進的那個標籤。

區間 含義
原始報價加明示佣金,Market 執行 成本明確,伺服器從不重新報價。適合頻繁交易與小目標。
帶加價的浮動點差,Market 執行 對外路由,成本折進報價。對於以數十 pip 計的目標夠用。
固定點差,Instant 執行 對手方模型。慢策略可以用;部署前先讀持倉時間條款。
任何寫明最短持倉時間的模型 剝頭皮 EA 在這裡跑不了,不管它的紀錄多漂亮。
  • 先讀付費機制。它辨認模型的可靠程度,勝過經紀商使用的任何名稱。
  • 第一筆訂單之前先打開商品規格:Execution、成交類型、stops level。三個欄位就能決定 EA 的請求究竟能不能成功。
  • 把模型對到交易頻率。日線級別的 EA 幾乎感覺不到它;每次只取幾 pip 的 EA 則由它決定生死。
  • EA 的點差過濾要按帳戶設定,而不是按回測。此處的版本出廠時設在 20 到 60 point;一個 1.6 pip 的標準層級已經是 16 point,所以 20 point 的過濾只剩 4 point 的餘裕,之後就會開始跳過 K 棒。
  • 在同一個時間窗內把實盤成交與回測比對。差距所在,就是執行模型、點差與滑價所在。

把執行模型記為每個要比較的經紀商的一個欄位,這樣不同帳戶才能在同一列上對齊。這裡的數字是怎麼蒐集來的,寫在方法論頁面上。

常見誤解

把造市商當成詐騙的同義詞

在嚴格監管機構之下、附負餘額保護並公布條款的對手方經紀商,是一種合法的安排,而且對慢策略的小額交易來說往往是最便宜的方式。利益衝突是真的,這是讀條款的理由,不是預設有不當行為的理由。此處記錄的六家經紀商,包括那家造市商,都列出了負餘額保護。

相信模型可以從回測讀出來

策略測試器對每一筆訂單都用價格序列、按歷史資料所攜帶的點差成交。兩個路由完全不同的帳戶會產出一模一樣的測試器報告,所以帳戶本身的紀錄是關於執行唯一存在的證據。

以為一家經紀商只有一種模型

多數零售經紀商在不同帳戶類型上跑不同的模型,而且常常在同一個帳戶內按商品群組再分。問題從來不是這家經紀商是什麼,而是這個具體的帳戶與商品是什麼。

忽略客戶協議

最短持倉時間、剝頭皮限制,以及調整在偏離市場價格上成交的交易的權利,都寫在合約裡,不在平台裡。一個被合約限制的 EA 會跑得很完美,然後結果被反轉。

在 Market 執行帳戶上把偏差當成滑價上限

偏差屬於 Instant 執行,在那裡它限制伺服器重新報價前價格可以移動多遠。在 Market 執行下伺服器忽略這個欄位,所以依賴它的 EA 完全沒有滑價保護;剩下的只有下單前的點差過濾與下單後對 POSITION_PRICE_OPEN 的檢查。

深入說明

本站的紀錄關於執行說了什麼

每份清單都寫明其紀錄來自哪份歷史資料,並在版本有設定時寫明出廠的點差過濾。 這些欄位就是一份測試器報告留下的全部執行足跡。

33 份公布的 EA 紀錄,比較 6 個經紀商數字
寫明以 Exness MT5 M1 歷史為來源的紀錄33 份中 30 份
以真實 tick 執行的紀錄(Model 4)33 份中 22 份
以 M1 K 棒生成 tick 執行的紀錄(Model 0)33 份中 10 份(1 份未寫明模式)
出廠附點差過濾的版本33 份中 14 份,設在 20–60 point(MT5 的最小報價單位;其中 6 份為 40)
帶有 tick 記錄平均點差的紀錄33 份中 1 份(19.14 point,GBPJPYm,在測試器內)
按寫明模型分的經紀商ECN 2 · STP 3 · 造市商 1
這些經紀商免佣金層級的 EUR/USD 點差0.7 到 1.6 pip,$0 佣金
我們跨經紀商實測的實盤點差0 列

三十份紀錄共用同一個場所的歷史資料,所以它們內部的成本是同一家經紀商的成本; 把同樣一手拿到上面六個經紀商之間比較,就會看到另一個免佣金層級的成本超過兩倍, 而這還在任何路由問題出現之前。點差過濾是唯一一行從測試器搬到實盤時原封不動的東西: 它讀取 SymbolInfoInteger(_Symbol, SYMBOL_SPREAD),並在實盤點差寬於版本出廠時 固定的 MaxSpread 輸入值時跳過訊號,所以這個輸入值應該按你入金的帳戶設定, 而不是按回測設定。

相關術語與接下來要查什麼

照此處各頁面的做法讀成本——先看標準層級的點差, 再看原始層級的佣金,兩者都看完之後才看 ECN 標籤。紀錄與 實盤帳戶之間的差距是滑價加上模型附加的部分;一個 剝頭皮版本會感受到全部,一個日線級別的 智慧交易系統則幾乎感受不到。此處記錄的六個帳戶 都以相同的欄位對齊。

常見問題

我怎麼知道自己的帳戶用的是哪種執行模型?
看經紀商怎麼拿錢、訂單怎麼成交。每手明示佣金加接近零的點差,代表帳戶對外路由並按原始報價定價;點差較寬又不收佣金,代表成本藏在報價裡。然後打開該商品的 Market Watch(市場報價)→ Specification(規格):Execution 欄位會寫 Instant、Market、Request 或 Exchange,成交類型會寫伺服器接受什麼。
交易室經紀商對 EA 不好嗎?
要看 EA。持倉幾小時或幾天的策略在任何模型上都跑得好。每次只取幾 pip 的策略才是交易室經紀商用合約限制的對象,所以入金前要弄清楚的不是品質,而是許可。
資料相同,為什麼我的實盤結果和回測不一樣?
因為測試器用價格序列成交,而實盤帳戶由站在對面的那一方成交。點差、佣金、延遲與拒單行為全都來自執行模型,而這些在測試器報告裡一個都不存在。在本站,33 份紀錄中只有一份帶有實測的平均點差。
ECN 保證沒有重新報價嗎?
Market 執行保證伺服器對訂單只會成交或拒絕,而不會重新報價,而原始報價的帳戶通常跑 Market 執行。拒單本身並不比重新報價更好——而且因為 Market 執行忽略偏差欄位,EA 必須在送出前過濾點差、在成交後檢查成交價格。
模擬帳戶沒問題,為什麼我的 EA 在真實帳戶上拿到 10030 invalid fill?
兩個帳戶允許的成交類型不同。Fill or Kill、Immediate or Cancel 與 Return 由經紀商的執行設定按商品逐一設定,硬編碼某一種類型的 EA 在任何不允許它的帳戶上都會失敗。啟動時讀取 SYMBOL_FILLING_MODE,並根據商品回報的內容選擇類型;旗標涵蓋 Fill or Kill 與 Immediate or Cancel,而 Return 在 Market 與 Exchange 執行的商品上不需旗標即可使用。