一、MQL5 Freelance 是什么?

MQL5 Freelance 是 MQL5 生态里用于发布开发需求、寻找 MetaTrader 程序开发者的服务入口。MQL5 官方的 Freelance 页面定位就是为 MetaTrader 平台订购交易机器人、技术指标和算法交易应用,分类里也包括 Experts、Indicators、Scripts、Libraries、Integration、Converting 等类型。平台术语与客户端能力可与 MetaTrader 5官网 说明对照。

简单说,如果你想把某个 MT5 想法做成 EA、指标、脚本或辅助工具,可以在这类平台发布需求,让熟悉 MQL4 / MQL5 的开发者接单。

但它不是「找人帮你赚钱」的地方。它更像是一个技术开发服务市场。你提出规则,开发者按照需求写代码、调试、交付文件。至于这个规则本身在市场中是否有效、是否适合你的账户、能不能承受风险,不是开发者写完代码就能自动解决的。

MQL5 是 MetaTrader 5 的编程语言,官方说明中也提到,它可以用来开发 Expert Advisors、技术指标、脚本和函数库。也就是说,Freelance 解决的是「把想法程序化」的问题,不是替用户判断这个想法是否一定可行。

二、什么时候适合找人定制 EA 或指标?

不是所有想法都适合立刻定制 EA。一般来说,比较适合找人开发的情况有几类。

交易想法不能一步变成 EA:中间需要把规则写清楚、整理成需求文档,再经开发、测试与验收;下图概括这一路径。

从交易想法到 EA 的流程图:模糊想法需先整理为可判断的入场出场、止损止盈与风控规则,写成需求文档后由开发者编码,再经策略测试器回测与模拟账户验证、功能验收,最后才能评估是否适合实盘,不能跳过规则整理与测试直接上线
图 1:从交易想法到 EA 的流程图。

规则已经比较清楚

比如你能明确说出:

  • 用哪个品种;
  • 看哪个周期;
  • 入场条件是什么;
  • 出场条件是什么;
  • 止损止盈怎么处理;
  • 是否允许加仓;
  • 什么情况下暂停交易;
  • 什么情况下不再开新单。

规则越清楚,开发越容易落地。

重复操作很多,想减少手动执行

如果你每天都做同样的图表检查、提醒、订单管理或复盘记录,脚本、指标或 EA 可以帮助减少重复劳动。比如自动提醒、自动画线、批量管理订单、导出数据等,不一定都要做成自动交易 EA,有时做成指标或脚本更合适。

想把已有指标或逻辑程序化测试

有些用户不是要直接实盘,而是想把一套规则做成 EA,用策略测试器看历史表现,或者在模拟账户里观察执行情况。这个场景相对更适合定制。

什么时候不适合急着定制?

如果你的想法还停留在:

  • 「看到感觉差不多就进。」
  • 「行情强的时候追一下。」
  • 「感觉不对就出。」
  • 「亏多了就少做,赚了就多做。」
  • 「开发者帮我优化到稳定盈利。」

这类描述很难直接写成程序。程序不懂「感觉差不多」,它需要明确条件。

若你其实只需要购买或租用成品、而非从零定制,可先阅读《MT5 Market 购买指标和 EA 前要看什么?授权、试用和风险提醒》,分清「买现成工具」与「找人写代码」两条路径。

三、定制 EA 前应该准备哪些策略规则?

写 EA 最怕需求模糊。你以为自己说清楚了,开发者理解的可能完全不同。开发 EA 前,至少要把下面几类规则写出来。

1. 品种

你打算让 EA 用在哪些品种上?比如只用于 EURUSD,还是黄金、指数、多个外汇货币对都要支持?不同品种的报价位数、点差、合约大小、最小手数、交易时间都可能不同。如果你不写清楚,开发者可能按默认情况写,后面换品种就出现问题。

2. 时间周期

EA 是看 M5、M15、H1,还是 D1?信号来自当前图表周期,还是固定周期?这点很重要。因为同一个指标,在不同周期上数值完全不同。你说「均线金叉入场」,但不说周期,开发者没法知道到底是哪张图上的均线。

3. 入场条件

入场条件要写得像程序能判断的句子。比如:

「当上一根 K 线收盘价高于 20 日均线,并且 RSI 大于 50 时,下一根 K 线开盘后买入。」

这比「价格走强就买」清楚得多。

4. 出场条件

出场条件同样要明确。是固定止盈止损?反向信号出场?时间到出场?盈利达到某个金额出场?还是指标条件变化出场?不要只写「合适的时候平仓」。程序不知道什么叫合适。

5. 止损止盈

止损止盈要写清楚单位和逻辑:

  • 按点数;
  • 按价格;
  • 按账户货币金额;
  • 按 ATR 或其他指标;
  • 是否允许移动止损;
  • 是否使用保本;
  • 是否分批止盈;
  • 是否没有止损。

如果没有止损,也要明确写出来,并说明是否真的接受这种风险。不要让开发者猜。

6. 仓位规则

仓位规则不能只写「自动控制」。你需要说明:

  • 固定手数;
  • 按余额比例;
  • 按风险百分比;
  • 最小手数限制;
  • 最大手数限制;
  • 连续亏损后是否降低手数;
  • 是否允许加仓;
  • 是否允许反向持仓。

仓位规则写不清,EA 就很容易和你的预期不一样。

7. 交易时间

是否限制交易时段?是否避开周五收盘前?是否避开新闻前后?是否只在某个服务器时间段运行?MT5 里的时间通常和服务器时间有关,不一定等于你本地时间。需求文档里要说明用哪个时间标准。

8. 风险限制

这部分很多人最容易漏掉,但它很重要。例如:

  • 单日最多交易几次;
  • 单日最大亏损后停止;
  • 最大持仓数量;
  • 最大浮亏限制;
  • 点差超过多少不交易;
  • 滑点允许范围;
  • 同一品种是否只允许一单;
  • EA 出错时是否停止开单。

这些不是让 EA 变得「稳赢」,而是避免它在异常情况下失控。

四、需求文档应该怎么写?

需求文档不需要写得像论文,但要让开发者看完能直接判断能不能写。可以按这个结构准备。

EA 需求文档应包含的要素示意图:品种与时间周期、入场与出场条件、止损止盈规则、仓位计算、交易时段限制、点差与滑点等风控过滤、异常处理与可调参数列表,以及项目目标与 MT5/账户环境说明
图 2:EA 需求文档应该包含什么。

1. 项目目标

说明你要开发的是:

  • EA;
  • 指标;
  • 脚本;
  • 面板工具;
  • 现有 EA 修改;
  • MT4 转 MT5;
  • 指标转 EA。

不要一上来只写「做机器人」。机器人到底要做什么,才是关键。

2. 使用环境

写清楚:

  • MT5 还是 MT4;
  • 净额账户还是对冲账户;
  • 目标品种;
  • 目标周期;
  • 是否需要多品种;
  • 是否需要 VPS 运行;
  • 是否依赖第三方指标。

3. 入场规则

用编号写,不要写成一大段感觉描述。例如:

条件 A:上一根 K 线收盘价高于某均线;条件 B:指标数值大于某阈值;条件 C:当前没有同方向持仓;全部满足后,下一根 K 线开仓。

4. 出场规则

写清楚每一种退出情况:止损;止盈;反向信号;时间平仓;盈亏金额限制;手动干预后 EA 是否继续管理。

5. 参数列表

哪些内容要做成可调参数?比如:均线周期;RSI 周期;止损点数;止盈点数;固定手数;最大点差;交易开始/结束时间;Magic Number;允许买入 / 允许卖出开关。参数写清楚,后续测试会方便很多。

6. 异常处理

异常处理不要省。例如:

  • 下单失败是否重试;
  • 点差过大是否跳过;
  • 价格无效是否等待下一根 K 线;
  • EA 重启后是否继续管理旧单;
  • 手动平仓后是否重新开单;
  • 多个图表同时运行如何避免重复下单。

这些看起来麻烦,但是真正运行 EA 时,很多问题都出在这里。

五、为什么「按感觉交易」很难直接写成程序?

很多手动交易者会说:「我平时就是看图感觉位置差不多,然后结合指标和形态判断。」这在人工看盘时可能是一种经验,但程序需要明确条件。

主观感觉转成程序规则示意图:左侧模糊表述如感觉趋势强、位置差不多、快到压力位需拆解为右侧可判断条件,例如价格在均线上方、ADX 阈值、距离水平线或前高前低的点数范围、均线斜率等,程序才能执行
图 3:主观感觉转成程序规则示意图。

开发者不能把「感觉强」「位置差不多」「快到压力位」「行情不太对」直接写成代码,除非你把它们翻译成可判断的规则。

比如:

「感觉趋势强」可以拆成:价格在 50 均线上方;均线斜率大于某值;ADX 大于某数值;最近 N 根 K 线高点抬高。「位置差不多」可以拆成:距离某水平线小于 X points;距离前高前低小于某范围;距离均线不超过某点数。

这不代表这些规则一定有效,只是它们终于变成了程序能理解的语言。很多 EA 定制失败,不是开发者不会写,而是用户没有把「主观判断」转成「客观条件」。

六、如何和开发者沟通测试、修改和验收?

定制 EA 不是一句「写好了发我」就结束。比较稳妥的流程应该包括需求确认、开发、测试、反馈、修改和验收。

开始前确认需求

在开发前,把需求文档发给开发者,并让对方确认理解。如果开发者对规则有疑问,要先讨论清楚,不要等代码写完再改核心逻辑。

中途确认关键逻辑

复杂 EA 可以分阶段确认:是否能识别信号;是否能正确下单;是否能正确设置 SL/TP;是否能按时间过滤;是否能按最大点差过滤;是否能避免重复开单;是否能识别已有持仓。不要等全部做完才发现最基本的入场规则理解错了。

测试时要记录问题

反馈问题时,不要只说「不对」「没开单」「效果不好」。更有用的反馈是:发生时间;品种;周期;当时指标状态;预期应该发生什么;实际发生了什么;截图;Experts / Journal 日志;回测报告或测试记录。越具体,开发者越容易定位问题。

验收时看功能,不是看收益

验收 EA,应该先看功能是否符合需求,而不是看短期盈利。比如:入场/出场条件是否按文档执行;参数是否可调;风控限制是否生效;异常情况是否处理;日志是否清楚;是否有重复下单问题;是否能在目标账户模式下运行。

开发服务的验收重点是「代码是否按规则工作」,不是「未来是否盈利」。交付的 .ex5 或源码需放进当前 MT5 终端实例的数据文件夹对应子目录并在 Navigator 中加载;路径与刷新方法见《MT5 数据文件夹与 MQL5 路径说明》。

七、为什么要先在模拟账户和策略测试器中验证?

EA 写好后,不要直接放到真实账户。先用策略测试器和模拟账户验证,是基本步骤。

MetaTrader 5 内置策略测试器,可用于对 EA 进行测试和优化;官方自动交易页面也强调平台支持交易机器人、技术指标以及策略测试等自动交易相关功能。

策略测试器能看什么?

它可以帮助你检查:EA 是否能跑完整个历史区间;是否按规则开仓和平仓;是否存在明显逻辑错误;参数变化后行为是否合理;回撤、交易次数、持仓时间等基本表现;日志是否报错。但回测不是未来保证。历史数据质量、点差设置、滑点模拟、参数优化都会影响回测结果。

模拟账户能看什么?

模拟账户更适合观察实时环境下的行为:是否按实时行情执行;是否有延迟;是否在点差扩大时乱开单;是否和经纪商品种规则兼容;是否会频繁报错;是否会重复下单;是否能稳定运行。模拟测试不是为了证明它一定赚钱,而是先确认它不会明显乱动。

八、定制 EA 的常见误区

误区一:开发者能把想法自动变成稳定盈利系统

开发者能写代码,但不能替市场配合你的规则。如果规则本身没有经过验证,代码写得再好,也只是把未验证规则自动执行。

误区二:需求越模糊,开发者越能发挥

这通常只会增加误解。你不写清楚,开发者只能猜。猜错了,后面就会反复修改。

误区三:只要回测好看就可以实盘

回测好看不代表实盘可靠。过拟合、理想点差、样本太少、忽略滑点,都可能让回测结果失真。

误区四:EA 写好就不用管了

EA 需要监控、日志排查、参数管理和版本记录。市场环境变化、平台更新、经纪商规则变化,都可能影响 EA 行为。

误区五:越多功能越好

新手经常想一次性加很多功能:多品种、多周期、加仓、风控、新闻过滤、面板、推送、自动优化。功能越多,逻辑越复杂,错误和沟通成本也越高。更稳妥的方式是先做最小可用版本,确认核心规则没问题,再逐步增加功能。

九、如何避免把开发服务误解成盈利保证?

这点非常重要。Freelance 定制解决的是软件开发问题,不是投资结果问题。开发者的职责通常是把你的规则写成代码,让 EA 按规则运行。至于这个规则是否能在未来市场中表现良好,需要你自己测试和承担风险。

你可以要求开发者:按需求实现功能;提供源码或交付文件;修复明显 bug;解释参数;配合测试;修正和需求不一致的逻辑。

但你不应该把开发服务理解成:保证盈利;保证回撤很低;保证未来有效;保证适合所有账户;保证替你优化出稳赚参数。只要看到有人把「写 EA」包装成「包盈利」,就要谨慎。

十、找开发者前的需求文档清单

在发布需求前,可以先把下面这些写出来:

  1. 我要开发的是 EA、指标、脚本还是工具?
  2. 用于 MT5 还是 MT4?
  3. 目标账户是 Netting 还是 Hedging?
  4. 适用品种有哪些?
  5. 使用哪个时间周期?
  6. 入场条件是什么?
  7. 出场条件是什么?
  8. 止损如何设置?
  9. 止盈如何设置?
  10. 仓位如何计算?
  11. 是否允许加仓?
  12. 是否允许反向持仓?
  13. 是否限制交易时间?
  14. 是否设置最大点差过滤?
  15. 是否有每日亏损限制或最大交易次数?
  16. 是否需要移动止损、保本、分批平仓?
  17. 是否依赖其他指标或外部文件?
  18. 是否需要推送、邮件或日志?
  19. EA 重启后如何处理已有订单?
  20. 验收标准是什么?

如果这些问题你还回答不上来,先别急着找开发者。先把规则整理清楚,会比直接谈价格更重要。

十一、总结:先写需求,再找开发者

MT5 Freelance 可以帮助用户把 EA、指标、脚本或工具想法做成程序。MQL5 生态确实提供了面向交易机器人和技术指标的开发服务入口,也有大量熟悉 MetaTrader 的开发者。

但定制 EA 靠不靠谱,很大程度取决于你有没有准备清楚需求。你只说「帮我做个自动交易机器人」,开发者很难知道你真正想要什么。你把入场、出场、止损、仓位、时间、风控、异常处理和验收标准写清楚,沟通就会顺很多。

记住一句话:开发者能把规则写成代码,但不能替你证明规则一定有效。

定制完成后,也不要急着上真实账户。先用策略测试器检查逻辑,再用模拟账户观察实时行为,确认没有明显问题后,再决定下一步。本文不构成投资建议,也不承诺任何收益。

正文结束前附一张找开发者前的检查清单速览图(与第十节条目呼应),发布 Freelance 需求前可逐项核对。

EA 定制前检查清单信息图:明确开发类型与 MT5/MT4、Netting 或 Hedging 账户、品种周期、入场出场与止损止盈、仓位与加仓规则、交易时间与点差过滤、每日亏损与最大交易次数、依赖指标与验收标准,规则未理清时先整理再找人开发
图 4:EA 定制前检查清单图。

FAQ:Freelance 定制 EA 常见问题

1)Freelance 和 Market 有什么区别?

Freelance 是按你的规则找人写程序;Market 是购买或租用他人已做好的成品。两者都不保证盈利,路径不同。

2)需求只写「做个 EA」可以吗?

不够。至少写清品种、周期、入场出场、止损止盈、仓位与风控,否则沟通成本会很高。

3)开发者要包盈利能信吗?

要谨慎。开发服务解决的是实现规则,不是承诺市场结果。

4)EA 交付后怎么验收?

对照需求文档看功能是否实现,用策略测试器与模拟账户验证行为,并查看 Experts / Journal 日志,而不是只看短期盈亏。

5)规则还模糊,应该先定制还是先整理?

先整理。把主观描述拆成可判断条件,或先用模拟/回测验证思路,再发布 Freelance 需求。