多品种趋势跟踪ATR风控EA
双均线趋势+ATR止损+固定风险仓位,支持多品种分散与总风险控制
MT5 真机运行截图 · 服务器把编译好的 EX5 挂到黄金 H1 图表上截的,你装上去看到的就是这个样子
#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 查看完整源码作品说明
那几行是我在正文里写的伪代码片段,不是 EA 里的真实代码——你大概是把它们复制进文件了。EA 里对应的正确写法是 InpPullbackATR * atr。下面给出完整可编译版本,同时把之前提到的 4 处关键优化一并改进去。
使用说明
- 编译:保存为
TrendFollowATR_Multi.mq5,放进MQL5/Experts/,F7 编译。之前报错是因为把正文里的伪代码片段复制进了文件,本版是完整可编译代码。 - 本版改动:入场改为「碰过均线即算回踩」;新增时间过滤、回撤保护、保证金约束、移动止损最小步长;ATR 过滤改为按价格百分比自适应。
- 多品种挂载:每个品种开一个 H1 图表,EA 分别拖上去,
InpTradeSymbol留空即用图表品种。 - 风控参数:
InpTotalRiskCap(总风险 2%)、InpMaxTotalPos(总持仓 3)、InpMaxDrawdown(回撤 20% 停开仓)是三道全局防线,别关。 - 单品种风险:多品种时
InpRiskPercent用 0.3–0.5,单品种可用 1.0。 - 时间过滤:默认周五 22 点后、周一 1 点前不开新仓,按你平台服务器时间调整。
- 回测:用「每笔 tick」模式跑 2–3 年,重点看最大回撤和连亏笔数。
- 风险提示:极端行情下多品种会同步下跌,分散会失效,总风险上限是最后防线。
✅ 自动修复后已通过服务器编译校验(共修 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.
评论
还没有人评论,来抢个沙发。