- 9/3/2026
- 9/3/2026
- 9/3/2026
风险提示。 自动化执行并不能降低市场风险。杠杆货币产品可能会迅速亏损,而遵循错误规则的软件比人类亏损得更快。在投入资金之前,请先在虚拟账户上进行测试。
简短回答
EA 代表专家顾问(Expert Advisor)。在外汇交易中,它是一个运行在兼容平台内的软件程序,负责监控传入的价格数据,根据预先设定的规则检查数据,并在满足这些规则时执行开仓、管理或平仓操作。
这就是其核心概念。输入规则,输出交易指令,在执行时刻无需人工点击任何操作。
EA 可以包含的内容包括:入场条件、出场条件、保护性止损水平、利润目标、头寸规模以及限制操作时间的过滤器。它不能包含的内容是:判断力。结果取决于规则的质量、现行的外汇市场状况、经纪商的执行质量、交易成本以及你选择的风险设置。
我应该尽早说明一点。本页面此前声称使用自动化无需任何先验经验和编程能力。这两个说法都过于绝对,目前已在下方进行了修正,而非直接删除。

名称上的混淆
有几个术语指代大致相同的东西,这经常会让初学者感到困惑:
| 术语 | 含义 |
| EA | 标准缩写,广泛用于 MetaTrader 文档和论坛 |
| 外汇机器人 | 营销术语,通常指商业销售的封装版 EA |
| 算法系统 | 更广泛的概念,涵盖任何基于规则的交易 |
| MQL 程序 | 实际的代码文件,使用 MetaQuotes 语言编写 |
它们高度重叠。“机器人”一词通常出现在销售场景中,这本身就是一个值得注意的信号。
它是如何运作的
在交易平台保持开启期间,分为六个阶段持续循环:
| 阶段 | 发生的操作 |
| 数据监控 | 读取传入的报价、指标值以及任何其他编程输入 |
| 信号生成 | 检查当前是否满足入场或出场条件 |
| 下单 | 在允许且条件匹配时,向经纪商发送交易指令 |
| 风险应用 | 应用成交量、保护水平、目标和风险敞口限制 |
| 头寸管理 | 监控所有未平仓头寸,并随条件变化做出反应 |
| 无任何操作 | 老实说,大部分时间都是如此,因为有效的信号非常罕见 |
最后一行不是在开玩笑。新用户经常会因为隔夜没有出现订单而认为系统出故障了。通常并没有故障,只是条件未达成。
哪些可以自动化,哪些不可以
本页面的旧版本称任何手动方法都可以转换为 EA。这并不完全正确,这种区别非常重要。
当每一个决策都可以表达为一个客观、可测试的条件时,自动化才能生效。“当随机指标(Stochastic)向上穿越 20 时买入”可以清晰地转化为代码。但“当图表看起来正在构建基底时买入”则不行,因为两个阅读同一张图表的人对于是否存在基底可能会产生分歧。
因此,诚实的表述是:当一个手动方法的入场逻辑、出场逻辑、头寸规模和风险控制都能被写成精确的规则,且软件每次都能以同样的方式进行评估时,该方法才能转换为 EA。
许多主观外汇方法都无法通过这项测试。一些交易者在尝试转换时会发现,他们的操作方法从未像他们想象中那样具有系统性。虽然这可能让人感到不适,但却是很有用的信息。
运行位置及其重要性
大多数零售外汇 EA 都托管在 MetaTrader 上,代码被编译成一个文件并存放在平台的 Experts 文件夹中。
这会产生三个实际后果:
- 平台必须保持开启: 关闭 MetaTrader 后,交易将停止。就市场而言,你的规则也将不再存在。
- 你的电脑必须保持运行: 处于睡眠状态的笔记本电脑相当于一个增加了额外步骤的关闭平台。
- 你的连接必须稳定: 网络中断意味着错失入场时机,更糟糕的是,会导致未受控的未平仓头寸。
这就是为什么在自动化讨论中经常提到交易 VPS。将平台托管在永不休眠的远程机器上可以消除上述三种故障模式,并将该机器放置在靠近你经纪商服务器的位置,可以减少订单路由的延迟。一旦账户余额达到一定阈值,许多经纪商都会提供免费托管服务。
远程托管是强制性的吗?对于任何需要持仓过夜或进行短线交易的系统,我认为实际上是必须的。对于每场交易仅检查一次日线 K 线的系统,可能不需要。
GBPUSD 示例
以下是本文最初描述的交易系统,已按照原始资料尽可能精确地陈述。
| 组件 | 详情 |
| 货币对 | GBPUSD |
| 图表周期 | M15 |
| 入场条件 | 随机指标 (Stochastic oscillator) |
| 出场条件 | 布林带 (Bollinger Bands) |
| 保护性出场 | 是,自动应用 |
| 参数 | 用户可调节 |
| 历史头寸 | 超过 900 |
| 测试模型 | 仅开盘价 |
现在是缺失的部分,我不会凭空捏造。
原始文章展示了余额曲线和交易计数,但没有公布背后的条件。这些条件决定了 900 个头寸代表的是真实的优势还是人为产物:
| 未披露的变量 | 为什么它会改变局面 |
| 测试开始和结束日期 | 2018 年的条件与近年相比有巨大差异 |
| 初始存款 | 将货币数值转化为有意义的百分比 |
| 每笔头寸的成交量 | 固定手数或百分比风险会改变一切 |
| 点差和佣金 | 在 M15 周期上,成本会在 900 次入场中产生复合效应 |
| 滑点假设 | 模拟通常假设没有滑点 |
| 数据源 | 来自不同经纪商的数据在质量和完整性上有所不同 |
| 净利润和利润因子 | 缺失,因此无法判断一致性 |
| 最大回撤 | 决定你是否能坚持下去的数字 |
| 胜率 | 缺失 |
| 样本外部分 | 没有任何东西能将拟合曲线与真实优势区分开来 |
| 前测结果 | 未公布模拟账户或实盘对比 |
我的看法,以事后之明:没有这些数据的余额图只是装饰。任何向你展示余额图的人,都应该要求查看其余数据。
为什么“仅开盘价”值得警惕
原始文章中的这个细节值得提取出来,因为大多数初学者都会忽略它。
MetaTrader 的策略测试器提供几种建模模式。“仅开盘价”是最快的,它每根 K 线评估一次条件,假设你的订单在每根新 K 线的开盘价成交。
对于某些缓慢的系统来说是可以的。但对于其他任何情况都是误导性的,因为它从未模拟 K 线内部发生的情况。一个在 M15 K 线运行 11 分钟后触发的保护性止损,在模拟中根本不会触发。目标也是如此。结果往往看起来比现实更平滑、更美好。
如果一个系统依赖于 K 线内退出(大多数系统都是如此),那么基于跳动点(tick-based)的模式会提供更诚实的局面,尽管完成时间要长得多。任何公布仅开盘价结果的人都应该显著说明这一点,至少原始文章是这么做的。
自动化 vs 手动执行
| 功能 | EA | 手动 |
| 下单 | 基于规则,启用时自动执行 | 交易者点击 |
| 情绪干扰 | 在执行期间减少 | 通常很显著 |
| 监控 | 只要平台开启,就是持续的 | 受注意力及睡眠限制 |
| 适应性 | 除了编程规则外,没有其他适应性 | 交易者解释新情况 |
| 可复现性 | 可在历史数据上测试 | 难以持续复现 |
| 失效模式 | 代码错误、连接中断、配置错误 | 犹豫、干预、疲劳 |
| 利润保证 | 无 | 无 |
请注意,最后一行适用于两列。自动化改变的是你可能犯的错误类型,而不是错误是否会发生。
EA 不是指标,也不是信号服务
三者截然不同,但经常被混淆:
- 指标在你的图表上计算并显示内容。它负责绘图,但绝不会下单。
- EA 评估条件并可以据此采取行动,直接通过平台下单。
- 信号服务 向你发送提醒,或将他人的头寸复制到你的账户中。决策是由他人做出的。
EA 可能会使用几个指标作为输入,但在本质上仍然不同,因为只有 EA 才有权限操作你的账户。
安装步骤
简而言之,因为这值得专门讲解:
- 打开平台,选择“文件”,然后选择“打开数据文件夹”。
- 将编译好的文件放入 MQL4 或 MQL5 的 Experts 子文件夹中。
- 重启或刷新导航面板。
- 将其拖动到正确的交易对和周期图表上。
- 在“工具”中选择“选项”,允许算法交易。
- 确认图表角落出现笑脸图标。
错误的交易对或错误的周期会导致测试结果与实际测试内容毫无关系。这听起来显而易见,但每周都在发生。
相关阅读:[internal link: how to install an Expert Advisor in MetaTrader]。
测试:先历史,后前测
分为两个阶段,跳过第二阶段会导致我所看到的绝大多数失望。
历史模拟在过去的数据上运行你的规则,生成余额曲线、交易计数和汇总数据。这对于排除明显的失败很有用。但也极易误导自己,因为可以不断调整参数直到曲线看起来很漂亮,这个过程会可靠地产生一个拟合噪声的结果。
前向测试在当前条件下在模拟账户上运行相同的规则,生成没有人针对其进行优化的全新头寸。速度较慢,成就感较低,但信息量大得多。是以周为单位,而非以天为单位。
只有在完成这两者之后,我才会考虑进行小额实盘交易,即便如此,第一个实盘月也会教给你这两个阶段都未曾预见的知识。例如新闻期间的滑点。隔夜结算时的点差扩大。模拟成交与真实成交之间的差距。
自动化真正能提供帮助的地方
- 一致地执行规则,避免因犹豫不决而错失最佳入场时机,这往往是手动交易者面临的痛点。
- 在毫秒级内做出反应,而不是在你偶然看向屏幕时才反应过来。
- 同时监控多个交易对,这是人类很难做好的事情。
- 在情绪干扰造成最大破坏的瞬间,消除情绪干扰。
- 使一套规则具有可测试性,因为代码在相同数据上会产生相同的决策。
最后一点好处常被低估。将规则编写成代码会强制要求精确度,而模糊的思维框架则永远不需要这种精确度。
局限性与风险
提供一个平衡的观点,因为 2018 年的版本过于倾向于推广:
- 糟糕的交易规则会高效地实现亏损: 软件并不知道今天的情况是否感觉不对劲。
- 模拟结果会夸大实盘结果:有时甚至会严重夸大,特别是在使用弱建模模式时。
- 成本会不断累积: 数百个头寸产生的点差、佣金和隔夜融资成本,其累积方式是曲线图很难显示的。
- 环境会发生变化: 为趋势市场构建的系统在波动率骤降时会失效,并且会在失效过程中不断下单。
- 配置错误是无声的: 错误的成交量、错误的图表、错误的参数集,没有任何东西会向你发出警告。
- 技术故障时有发生: 平台崩溃、更新、连接中断、托管订阅到期。
- 过去的盈利并不代表未来: 它仅仅是过去条件的证据,仅此而已。
同时运行多个系统
常见的建议是建议在同一个交易账户上挂载多个 EA 以实现多样化。我之前的说法认为这样做可以分散风险并改善结果,这大大夸大了其作用。
在相同的交易时段使用相关的指标交易同一个交易对的多个系统并不是独立的。它们可能同时买入相同的行情并一起亏损。统计你运行了多少个系统,并不能告诉你风险是否真的得到了分散。
以下内容能为你提供参考:
| 测量指标 | 它揭示了什么 |
| 系统间的收益相关性 | 数值接近 1.0 意味着你实际上只有一个头寸 |
| 入场时间重叠 | 同时暴露的风险会造成风险集中而非分散 |
| 共享的指标系列 | 相似的输入会导致同时失效 |
| 组合投资组合的回撤 | 通常比任何单一数值显示的都要深 |
| 方向性偏差 | 全多头投资组合就是一个杠杆赌注 |
将投资组合作为一个整体进行测试。在五个相关的系统中增加第六个系统,只会增加风险敞口,而不会降低任何风险。
在信任之前进行评估
这是我会应用于任何提供的 EA 的清单:
- 入场和出场规则是公开的,还是只公开了结果?
- 使用了哪种建模模式进行模拟?
- 测试期是否涵盖了不同的市场阶段,还是仅涵盖了一个有利的阶段?
- 是否有样本外测试段?
- What is the maximum drawdown, and could you sit through it?
- How many positions? Fewer than a few hundred proves little.
- Were spread, commission, and slippage included?
- Does forward-test evidence exist, or only historical figures?
- Who benefits if you buy or download it?
Anything failing question one is not worth reaching question two.
你需要经验还是编程技能?
这里有两个更正,因为这篇文章的早期版本在这两点上都错了。
- 经验: 自动化将盯盘和手动下单从你的交易日中移除。但它并不能移除你对头寸规模、回撤、保护水平、交易成本、平台设置、经纪商条件、测试限制以及模拟与实盘结果之间差距的理解需求。一个对这些都不了解的人,就像是在操作一台自己无法评估的机器。
- 编程: 策略构建软件确实可以在你不写一行代码的情况下生成可运行的文件,这种工作流适合很多人,这也是为什么最初的说法并非毫无根据。但自定义修改、调试异常行为以及审查他人的代码仍然需要编程知识。所以:入门不需要,但偶尔需要。
常见问题解答
EA 可以与任何经纪商配合使用吗?
通常情况下是一致的,但并不总是完全相同。该文件通过你的经纪商提供的交易平台进行连接,因此由于点差、执行速度、代码名称和数字惯例的不同,同一段代码在不同公司可能会产生不同的结果。一些公司会限制某些自动化外汇行为,特别是快速剥头皮交易,甚至有些公司会在条款中禁止这些行为。在假设在别处测试过的东西在你的账户上表现一致之前,请务必检查合约规格和账户协议。
EA 是否保证盈利?
不保证。任何声称保证盈利的卖家都值得你立即远离。软件执行规则的速度和一致性比人工更快,这确实是一个优势,但如果将一致性应用于无利可图的交易逻辑,只会更可靠地产生亏损。历史结果反映了特定成本假设下的过去情况。多个司法管辖区的监管机构已对那些宣传保证回报的自动化系统公司采取了行动,这足以说明此类承诺有多普遍。
如果我在持仓期间断网了会发生什么?
现有订单会保留在你的经纪商处,因此已在服务器上设置的保护水平将继续有效。停止的是管理功能:在你的系统重新连接之前,它无法关闭头寸、调整水平或开设新头寸。代码原本要在未来条件下执行的操作将根本不会发生。这种差距是使用远程托管而非个人电脑的主要实际理由,特别是对于需要在多个交易时段内持仓的系统。
EA 可以交易货币以外的工具吗?
可以。只要交易工具在提供范围内且平台支持该代码,相同的代码结构也可用于指数、贵金属、能源以及股票差价合约。调整通常是必要的,因为不同资产类别之间的点值、典型波动性和交易时段存在显著差异。一个为 GBPUSD 调优的系统在没有重新思考参数的情况下,在黄金上的表现将是不可预测的。请分别测试每种工具,不要假设设置可以通用。
我需要多少钱才能开始?
金额应足以让最小可用头寸规模代表你余额的一个合理比例。如果一次常规的逆向波动在最小成交量下就会导致账户面临至少几个百分点的风险,那么无论规则多么优秀,该账户对于该工具来说都太小了。请从最坏情况下的风险敞口进行倒推计算,包括多个系统同时开启的可能性,然后增加缓冲资金。资金不足是初学者早期失败的最常见原因之一。
我可以修改别人编写的 EA 吗?
只能通过源文件进行修改。编译后的文件无法进行有意义的编辑,因此购买不提供源代码的软件会让你永久失去调整能力。如果提供源代码,任何更改都会使之前发布的测试结果失效,并且之后重新运行完整的测试序列是必须的。微小的参数微调看似无害,但实际上往往并非如此,因为数值之间的相互作用只有在进行适当模拟时才会显现。
在实盘运行前,我应该进行多久的前测?
时间应长到能产生具有统计意义的头寸数量,而不是固定的日历周期。一个每周平均两次入场的系统需要数月时间才能产生具有统计学意义的结果,而短时间框架的方法可能在几周内达到类似的计数。观察其行为是否与历史模拟相符,因为早期的偏差通常表明成本假设过于乐观。与失败的代价相比,在这里保持耐心是廉价的。
MQL4 和 MQL5 有什么区别?
它们分别是 MetaTrader 4 和 MetaTrader 5 背后的编程语言,未经转换,为其中一个编写的文件无法在另一个上运行。MQL5 处理不同的订单和头寸模型,这会影响对冲和部分平仓的工作方式。转换现有代码是可能的,但通常并不简单,且数以千计的旧系统仍仅支持 MQL4。在选择平台时这一点很重要,因为你可用的库高度取决于这一决定。
Disclosure: Educational content only, not a recommendation to trade or to use any specific software. Consider your circumstances and, where appropriate, seek guidance from a regulated professional before committing capital to automated systems.

Petko Aleksandrov



