执行模型

亦称:订单执行模式, 经纪商执行类型, 做市商与无交易员平台(DD vs NDD)

执行模型指经纪商处理订单的方式——自己做对手方接下订单,还是把订单路由至外部流动性——它决定了谁向谁付钱、怎么付,以及这个账户容得下哪些 EA。

执行模型 — MT5 glossary overview

一览

术语类型
经纪商术语
难度
进阶
适用场景
券商选择 · EA 评估 · MT5 操作

一句话讲清

你按下买入时,要么是经纪商自己卖给你,要么是它把订单转给别人、自己留下一笔手续费。这一个选择决定了你的成本以什么面貌出现、你亏损时谁在赚钱,以及经纪商会容忍哪种交易行为。

为什么重要

点差、佣金、重新报价、剥头皮禁令、执行质量——交易者对经纪商的每一句抱怨,追根溯源都落在订单去了哪里。先读懂模型,这些抱怨就成了同一个解释。

  • 它决定利益冲突是否存在。做对手方的经纪商从结构上就靠客户亏损赚钱;做路由的经纪商靠交易量赚钱。
  • 它解释定价。固定点差只有在有人吸收价格波动时才成立,而吸收的那个人就是对手方。
  • 它解释限制。最短持仓时间、剥头皮禁令和 last look 拒单,来自吸收不了快速订单流的账簿,而不是平台的限制。
  • 它是回测永远显示不出的那一个经纪商属性,因为测试器把每笔订单都按价格序列成交,不管真实盘上是谁在接单。

券商如何定义

  • 做市商,也叫交易员平台(Dealing Desk)或 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)计的偏差;价格移动超过偏差就返回 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 和无交易员平台(NDD)在多数地方是不受监管的用语,经纪商可以一边用这些词一边把大部分订单流内部消化。
  • 因为平台允许 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 个点)的标准档已经是 16 个点,所以 20 个点的过滤只给它留下 4 个点的余地,随后就开始跳过 K 线。
  • 在同一时间窗内把真实成交与回测对比。差距所在,就是执行模型、点差和滑点所在。

对你比较的每一家经纪商而言,把执行模型记为一个字段是值得的,这样各账户就能排在同一行上。这里的数字是如何收集的,见方法论页面。

常见误区

把做市商当作骗局的同义词

在严肃监管机构之下、提供负余额保护并公布条款的对手方经纪商,是一种正当的安排,而且常常是慢策略下小资金交易最便宜的方式。利益冲突是真实的,它是读条款的理由,不是假定对方违规的理由。本站记录的全部六家经纪商,包括那家做市商,都列出了负余额保护。

以为模型能从回测里读出来

策略测试器把每笔订单都按价格序列、按历史数据自带的点差成交。两个路由完全不同的账户会产生一模一样的测试器报告,所以关于执行,唯一存在的证据就是账户本身的记录。

以为一家经纪商只有一种模型

多数零售经纪商在不同账户类型上跑不同的模型,而且常常在同一个账户内按品种组区分。问题从来不是这家经纪商是什么,而是这个具体的账户和品种是什么。

无视客户协议

最短持仓时间、剥头皮限制,以及对按偏离市场价格成交的交易进行调整的权利,都写在合同里,不在平台里。一个被合同限制的 EA 会跑得很好,然后结果被撤销。

在 Market 执行账户上把 deviation 当作滑点上限

deviation 属于 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)(其中 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 标签。记录与真实账户之间的差距是滑点加上模型附加的部分;一个剥头皮构建会全部感受到,一个日线级别的 EA 几乎感觉不到。本站记录的六个账户按相同的字段排在同一行。

常见问题

我怎么知道自己的账户用的是哪种执行模型?
看经纪商怎么拿钱、订单怎么成交。每手明示佣金加接近零的点差,意味着账户送往外部并按原始价计价;点差较宽而没有佣金,意味着成本藏在报价里。然后打开该品种的 Market Watch(市场报价)→ Specification(规格):Execution(执行)字段写的是 Instant、Market、Request 还是 Exchange,成交类型写的是服务器接受什么。
交易员平台(DD)经纪商对 EA 不利吗?
取决于 EA。持仓数小时或数天的策略在任何模型下都能正常运行。每次只取几个 pip 的策略,才是交易员平台经纪商用合同限制的那种,所以入金前要弄清的不是质量,而是许可。
数据相同,为什么我的真实结果和回测不一样?
因为测试器按价格序列成交,而真实账户由对手方那边的人成交。点差、佣金、延迟和拒单行为都来自执行模型,而这些在测试器报告里一个都不存在。本站 33 份记录中只有一份带有实测的平均点差。
ECN 能保证没有重新报价吗?
Market 执行保证服务器要么成交、要么拒绝订单,而不是重新报价,按原始价计价的账户通常跑的是 Market 执行。拒单本身并不比重新报价更好——而且由于 Market 执行忽略 deviation 字段,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 执行的品种上无需标志即可使用。