MT5指标编译通过 · EX5 38KB 自动发布 6 0

多品种趋势跟踪ATR风控EA

si55038036·1 天前发布

双均线趋势+ATR止损+固定风险仓位,支持多品种分散与总风险控制

多品种趋势跟踪ATR风控EA

MT5 真机运行截图 · 服务器把编译好的 EX5 挂到黄金 H1 图表上截的,你装上去看到的就是这个样子

TrendFollowATR_Multi.mq5预览 35 / 429 行
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#property copyright "XAUOF 指标工坊"
#property version   "1.20"

#include <Trade\Trade.mqh>

//==================== 可调参数 ====================

//--- 交易品种
input string InpTradeSymbol  = "";       // 交易品种,留空=当前图表品种(如 XAUUSD、EURUSD)
input int    InpMagicBase    = 20240602; // 魔术号基数(多图表挂载时自动按品种生成唯一号)

//--- 趋势判定
input int    InpFastMA       = 50;       // 快线均线周期,推荐 50
input int    InpSlowMA       = 200;      // 慢线均线周期,推荐 200
input ENUM_MA_METHOD InpMAMethod = MODE_EMA; // 均线类型,推荐 EMA

//--- 入场
input double InpPullbackATR  = 0.5;      // 回踩距离 = ATR × 此值,推荐 0.5
input int    InpATRPeriod    = 14;       // ATR 周期,推荐 14
input double InpMinATRPercent= 0.05;     // ATR 占价格最小百分比,低于此值不开仓,推荐 0.05

//--- 止损止盈
input double InpStopATR      = 2.0;      // 初始止损 = ATR × 此值,推荐 2.0
input double InpTrailATR     = 3.0;      // 移动止损距离 = ATR × 此值,推荐 3.0
input double InpTrailStartATR= 1.5;      // 浮盈超过 ATR × 此值后启动移动止损,推荐 1.5
input int    InpTrailMinStep = 5;        // 移动止损最小改善点数,低于此值不修改,推荐 5

//--- 仓位管理
input double InpRiskPercent  = 0.5;      // 本品种每笔风险占净值百分比,推荐 0.5(多品种时)
input double InpMaxLot       = 5.0;      // 单笔最大手数上限,推荐 5.0

//--- 全局风控(多品种共用)
input double InpTotalRiskCap = 2.0;      // 所有品种合计风险上限(%),推荐 2.0
input int    InpMaxTotalPos  = 3;        // 所有品种同时持仓上限,推荐 3
input double InpMaxDrawdown  = 20.0;     // 账户最大回撤保护(%),超过则停止开新仓,推荐 20

已显示前 35 行,共 429 行。完整源码仅对 xauusd.team VIP 开放查看与复制。

开通 VIP 查看完整源码
MT5 运行截图 · 完整视图带价格轴和时间轴的整张图表(约 150 根 H1 K 线),上面的封面是它最近 80 根 K 线的放大视图
多品种趋势跟踪ATR风控EA 在 MT5 上的真实截图

作品说明

那几行是我在正文里写的伪代码片段,不是 EA 里的真实代码——你大概是把它们复制进文件了。EA 里对应的正确写法是 InpPullbackATR * atr。下面给出完整可编译版本,同时把之前提到的 4 处关键优化一并改进去。

使用说明

  1. 编译:保存为 TrendFollowATR_Multi.mq5,放进 MQL5/Experts/,F7 编译。之前报错是因为把正文里的伪代码片段复制进了文件,本版是完整可编译代码。
  2. 本版改动:入场改为「碰过均线即算回踩」;新增时间过滤、回撤保护、保证金约束、移动止损最小步长;ATR 过滤改为按价格百分比自适应。
  3. 多品种挂载:每个品种开一个 H1 图表,EA 分别拖上去,InpTradeSymbol 留空即用图表品种。
  4. 风控参数:InpTotalRiskCap(总风险 2%)、InpMaxTotalPos(总持仓 3)、InpMaxDrawdown(回撤 20% 停开仓)是三道全局防线,别关。
  5. 单品种风险:多品种时 InpRiskPercent 用 0.3–0.5,单品种可用 1.0。
  6. 时间过滤:默认周五 22 点后、周一 1 点前不开新仓,按你平台服务器时间调整。
  7. 回测:用「每笔 tick」模式跑 2–3 年,重点看最大回撤和连亏笔数。
  8. 风险提示:极端行情下多品种会同步下跌,分散会失效,总风险上限是最后防线。
✅ 自动修复后已通过服务器编译校验(共修 1 轮)。

AI 解读根据源码逐行分析写成,供参考,以实际运行为准

这是什么

这是一个跑在 MT5 上的趋势跟踪 EA。它用两条均线判断大方向,等价格回踩快线时进场,止损距离由 ATR 决定,手数按你设定的风险百分比反推。

它最大的特点是「多品种」:你可以把同一个 EA 分别挂到多个品种的图表上,它们共用一套全局风控——总风险上限、总持仓上限、账户回撤保护。

逻辑原理

方向:快线在慢线上方只做多,快线在慢线下方只做空。均线默认用 EMA,快线 50、慢线 200。

入场:不是均线一交叉就进,而是等回踩。多头方向下,上一根 K 线的最低价碰到快线附近(距离 = ATR × 回踩系数),并且上一根收盘价重新站上快线,才买入。空头反过来。

过滤:ATR 占价格的比例低于设定值就不开仓,避免行情太死的时候进场。另外还有时间过滤,周五尾盘和周一早盘不开新仓。

止损:开仓时按 ATR × 2.0 挂初始止损。浮盈超过 ATR × 1.5 后启动移动止损,跟踪距离是 ATR × 3.0,每次修改至少要改善 5 个点,避免频繁改单。

仓位:先算这笔单子能亏多少钱(净值 × 风险百分比),再除以止损距离对应的每手亏损,得到手数。同时受保证金约束(用 90% 可用保证金反推上限)、单笔最大手数、最小手数和手数步长限制。

全局风控:开新仓前依次检查——本品种已有持仓就不开、当日开仓次数是否用完、是否在允许交易时间、账户回撤是否超限、所有品种总持仓数是否到顶、所有品种合计风险加上这一笔是否超过总风险上限。

参数说明

  • InpTradeSymbol(空):交易品种,留空就用当前图表品种。
  • InpMagicBase(20240602):魔术号基数,多图表挂载时按品种名自动生成唯一号。
  • InpFastMA(50):快线周期。
  • InpSlowMA(200):慢线周期。
  • InpMAMethod(MODE_EMA):均线类型。
  • InpPullbackATR(0.5):回踩距离 = ATR × 此值,越大越容易触发。
  • InpATRPeriod(14):ATR 周期。
  • InpMinATRPercent(0.05):ATR 占价格最小百分比,低于此值不开仓。
  • InpStopATR(2.0):初始止损 = ATR × 此值。
  • InpTrailATR(3.0):移动止损距离 = ATR × 此值。
  • InpTrailStartATR(1.5):浮盈超过 ATR × 此值后启动移动止损。
  • InpTrailMinStep(5):移动止损最小改善点数,低于此值不改单。
  • InpRiskPercent(0.5):本品种每笔风险占净值百分比。
  • InpMaxLot(5.0):单笔最大手数上限。
  • InpTotalRiskCap(2.0):所有品种合计风险上限(%)。
  • InpMaxTotalPos(3):所有品种同时持仓上限。
  • InpMaxDrawdown(20.0):账户最大回撤保护(%),超过则停止开新仓。
  • InpMaxTradesDay(2):本品种每天最多开仓次数。
  • InpSlippage(20):允许滑点(点)。
  • InpTimeFilter(true):是否启用时间过滤。
  • InpFriStopHour(22):周五几点后不开新仓(服务器时间)。
  • InpMonStartHour(1):周一几点前不开新仓(服务器时间)。

怎么用

保存为 .mq5 文件放进 MQL5/Experts/ 目录,F7 编译。

多品种挂载:每个品种开一个 H1 图表,把 EA 分别拖上去,InpTradeSymbol 留空即用图表品种。魔术号会自动按品种区分,不会互相干扰。

信号不用手动看,EA 自己判断进出场。你主要盯的是全局风控参数和账户回撤。

适用场景

适合趋势性强的品种,比如黄金、主要货币对,H1 及以上周期。多品种分散挂载是它的设计初衷。

不适合震荡行情——均线来回穿越会连续止损。也不适合数据稀疏、点差大的品种,ATR 过滤和滑点设置要相应调整。

风险提示

均线是滞后指标,趋势反转时信号会晚。回踩入场在震荡市里假信号多。

极端行情下多品种会同步下跌,分散会失效,总风险上限是最后一道防线,别关。

回撤保护只停止开新仓,不会平掉已有持仓。

时间过滤用的是服务器时间,不同平台可能不一样,要自己核对。

回测建议用「每笔 tick」模式跑 2–3 年,重点看最大回撤和连亏笔数。

常见问题

这个 EA 会重绘吗?
不会。它取的是上一根已收盘 K 线的均线、ATR 和收盘价,信号确定后不会变。
可以用在 XAUUSD 以外的品种吗?
可以。代码里没有限制品种,InpTradeSymbol 留空就用图表品种,多品种分别挂载即可。不同品种的 ATR 和点值不同,建议先回测。
MT4 能用吗?
不能。这是 MQL5 代码,用了 CTrade 类和 PositionGetTicket 等 MT5 专有函数,只能在 MT5 上编译运行。
参数默认值适合什么周期?
默认快线 50、慢线 200、ATR 14,配合 H1 使用比较常见。换周期需要自己测试,代码里没有绑定周期。
多品种挂载时风险怎么算?
每个品种按 InpRiskPercent 单独算手数,所有品种合计风险受 InpTotalRiskCap 限制,总持仓数受 InpMaxTotalPos 限制。多品种时建议把单品种风险调到 0.3–0.5。

Multi-Symbol MA Trend Following EA with ATR Risk Control (MT5)

An MT5 expert advisor that trades in the direction of a fast/slow moving average cross, enters on ATR-based pullbacks, and sizes every position from a fixed percentage of equity. It adds three account-level guards: a total risk cap, a maximum number of open positions, and a drawdown stop, so several symbols can run at once without stacking risk.

A short source preview is shown above for visitors; full source, copy and compiled EX5 files are available to VIP members.

评论

后可以留言,比如反馈用着怎么样、想加什么功能。

还没有人评论,来抢个沙发。