全能风控大师EA
多维度账户风控系统,自动执行平仓、停开、追踪止损,并配有图表交互面板。
MT5 真机运行截图 · 服务器把编译好的 EX5 挂到黄金 H1 图表上截的,你装上去看到的就是这个样子
#include <Trade\Trade.mqh>
#include <Trade\PositionInfo.mqh>
#include <Trade\AccountInfo.mqh>
#include <Trade\SymbolInfo.mqh>
#include <Trade\OrderInfo.mqh>
//--- 1. 通知与邮件
input group "=== 1. 通知与邮件 ==="
input bool EnableMail = false; // 发送邮件开关
input double MailNetHigh = 0; // 净值≥此值发邮件(0不触发)
input double MailNetLow = 0; // 净值≤此值发邮件(0不触发)
input int MailFreqMin = 60; // 邮件发送频率(分钟)
//--- 2. 账户净值风控
input group "=== 2. 账户净值风控 ==="
input bool EnableNetRisk = true; // 净值风控开关
input double NetHighStopTrade = 0; // 净值≥此值停止开仓(0不触发)
input double NetLowCloseAll = 0; // 净值≤此值清仓并停止开仓(0不触发)
//--- 3. 盈亏风控
input group "=== 3. 盈亏风控 ==="
input bool EnablePLRisk = true; // 盈亏风控开关
input double MaxFloatProfit = 0; // 总浮盈≥此值平仓(0不触发)
input double MaxFloatLoss = 0; // 总浮亏≥此值平仓(0不触发)
input double DailyLossLimit = 0; // 今日亏损≥此值平仓停开(0不触发)
//--- 4. 单数风控
input group "=== 4. 单数风控 ==="
input bool EnableCountRisk = true; // 单数风控开关
input int MaxBuyCount = 0; // Buy单数上限(0不限制)
input int MaxSellCount = 0; // Sell单数上限(0不限制)
//--- 5. 止损止盈追踪
input group "=== 5. 止损止盈追踪 ==="
input bool EnableSLTP = true; // 止损追踪开关
已显示前 35 行,共 350 行。完整源码仅对 xauusd.team VIP 开放查看与复制。
开通 VIP 查看完整源码作品说明
这是一个综合性风控EA,需求涵盖了净值监控、盈亏限制、单数控制、止损追踪、新闻规避等50余项规则。由于MQL5限制,EA无法直接关闭其他图表窗口(会引发安全机制),因此“停止EA”将实现为“强制平掉所有持仓并拒绝新仓留存”,从而达到风控保护目的。同时,我会在图表上绘制一个交互面板,提供手动一键平仓和恢复交易功能。
使用说明
- 安装方法:将代码保存为
RiskMasterPro.mq5,放入MQL5/Experts文件夹,在 MetaEditor 中编译,然后拖拽到 MT5 图表上。 - 参数配置:在 EA 属性的“输入参数”窗口中,根据需要开启对应的风控开关(如净值风控、盈亏风控),并设置阈值。0 表示不触发该规则。
- 图表面板:EA 运行后会在图表左上角生成一个黑底面板,实时显示当前净值、浮盈和交易状态。
- 一键平仓:点击面板上的“一键平仓”红色按钮,会立即平掉账户内所有持仓。
- 恢复交易:当风控触发“停止开仓”后,面板状态会变红并自动平掉后续新仓。待风险解除后,点击“恢复交易”按钮即可恢复正常监控状态。
- 新闻风控:需在参数中输入精确到分钟的时间字符串(如
2024.01.15 20:30),EA 会在该时间前后指定的秒数内强制平仓并停止开仓。 - 邮件通知:使用前需在 MT5 终端的“工具-选项-邮件”中配置 SMTP 服务器,开启开关后即可在净值触及阈值时收到推送。
- 多图表运行:此 EA 会监控整个账户的持仓情况。如果需要独立控制某个图表的持仓,请通过修改代码中的
PositionGetString(POSITION_SYMBOL)过滤条件实现。
AI 解读根据源码逐行分析写成,供参考,以实际运行为准
这是什么
全能风控大师是一个 MT5 账户级风险管理系统。它监控账户净值、浮盈浮亏、持仓单数和时间事件,当触发任何一项风控规则时,自动执行平仓、停止开仓或止损追踪。同时在图表左上角绘制实时面板,显示账户状态和浮盈,支持手动一键平仓和恢复交易。
逻辑原理
风控判断逻辑
EA 每个 tick 检查六大类风控规则,按优先级执行:
- 邮件通知:若净值≥MailNetHigh 或≤MailNetLow,发送邮件,频率由 MailFreqMin 控制(默认60分钟)。
- 账户净值风控:
- 若净值≥NetHighStopTrade,停止开仓(g_canTrade=false)但不平仓
- 若净值≤NetLowCloseAll,立即平掉所有持仓并停止开仓
- 盈亏风控:
- 总浮盈≥MaxFloatProfit,平掉所有持仓
- 总浮亏≥MaxFloatLoss,平掉所有持仓并停止开仓
- 今日亏损(当日开始余额 - 当前余额)≥DailyLossLimit,平掉所有持仓并停止开仓
- 单数风控:当前 Buy 单数>MaxBuyCount 或 Sell 单数>MaxSellCount 时,从新往旧平掉多余仓位。
- 止损追踪与保本:
- BreakEvenPoints:浮盈点数≥此值,自动将止损移至开仓价(保本)
- TrailingStopPoints:当价格更有利时,止损跟踪移动(Buy 时止损=当前 Bid-追踪点数,Sell 时止损=当前 Ask+追踪点数)
- 新闻风控:输入新闻发布时间后,在该时间前 NewsBeforeSec 秒(默认60秒)到发布后 NewsAfterSec 秒(默认60秒)内,停止开仓并平掉新开仓位。
停止交易状态
当 g_canTrade=false 时,CheckRules() 会在每个 tick 强制平掉所有持仓,形成"停止开仓且持续清仓"的状态,直到点击面板"恢复交易"按钮。
图表面板
面板显示:状态(允许交易/已停止开仓,绿/红)、当前净值、总浮盈(正数绿,负数红)。两个按钮:"一键平仓"(立即平所有仓)和"恢复交易"(解除停止状态)。
参数说明
1. 通知与邮件
- EnableMail(false):是否发送邮件通知
- MailNetHigh(0):净值≥此值发邮件,0 表示不触发
- MailNetLow(0):净值≤此值发邮件,0 表示不触发
- MailFreqMin(60):两次邮件间隔(分钟),防止轰炸
2. 账户净值风控
- EnableNetRisk(true):开关
- NetHighStopTrade(0):净值≥此值停止开仓(0 不触发),继续持有现仓
- NetLowCloseAll(0):净值≤此值平掉所有仓并停止开仓(0 不触发)
3. 盈亏风控
- EnablePLRisk(true):开关
- MaxFloatProfit(0):总浮盈≥此值平仓(0 不触发)
- MaxFloatLoss(0):总浮亏≥此值平仓并停止(0 不触发)
- DailyLossLimit(0):当日亏损≥此值平仓并停止(0 不触发)
4. 单数风控
- EnableCountRisk(true):开关
- MaxBuyCount(0):同时持有的 Buy 单数上限(0 不限制)
- MaxSellCount(0):同时持有的 Sell 单数上限(0 不限制)
5. 止损追踪
- EnableSLTP(true):开关
- BreakEvenPoints(0):浮盈≥此点数移止损至保本(0 不触发)
- TrailingStopPoints(0):追踪止损距离(点数),0 不触发
6. 新闻与时间风控
- EnableNewsRisk(false):开关
- NewsTime1/2/3(""):新闻时间,格式 "YYYY.MM.DD HH:MI",例如 "2024.01.15 20:30"
- NewsBeforeSec(60):新闻前多少秒停止开仓
- NewsAfterSec(60):新闻后多少秒仍停止开仓
怎么用
- 安装:代码保存为 RiskMasterPro.mq5,放入 MT5 的 Experts 文件夹,编译后拖拽到图表。
- 参数配置:右键图表→EA 属性→输入参数,根据需求打开各项开关并设置阈值。0 表示该规则不触发。
- 运行:EA 运行后会在图表左上角显示黑色面板,实时显示状态、净值、浮盈。
- 手动操作:点击"一键平仓"立即平掉账户所有仓位;点击"恢复交易"解除停止状态(仅当风控触发停止后需要)。
- 新闻风控:需提前在参数中输入具体发布时间,EA 会在前后指定秒数内自动停止。
- 邮件通知:先在 MT5 工具→选项→邮件中配置 SMTP 服务器,然后启用 EnableMail 并设置阈值。
适用场景
适合:任何品种、任何周期。这是账户级风控,不依赖具体品种或周期。特别适合多头寸交易、网格交易、日内剥头皮等持仓较多或风险较高的策略。
不适合:无。如果不需要某项功能,只需将开关关闭或参数置 0 即可。
风险提示
- 滑点与成交延迟:一键平仓和风控止损触发时,实际平仓价可能与触发价存在滑点,特别是高波动期间。
- 重绘风险:面板按钮点击状态在重新加载时可能重置,建议定期核实账户状态。
- 新闻时间精度:新闻时间需精确到分钟。如果时间输入错误或服务器时间与本地不同步,可能无法准确规避。
- 邮件配置失败:未正确配置 SMTP 时邮件发送会失败,但不影响其他风控功能。
- 单数风控的平仓顺序:超出限制时从旧往新平仓(PositionsTotal 倒序),可能不符合预期风险管理策略。
- 追踪止损的浮点精度:浮点运算可能导致止损价格精度丢失,特别是在低点差品种上。
- 多图表风险:此 EA 监控的是整个账户,若多个图表挂载此 EA,会相互干扰。建议仅在一个图表挂载。
常见问题
- 这个 EA 会重绘吗?
- 面板是静态对象,不会随价格变化重绘。但图表事件响应和按钮状态在 EA 重新初始化时可能重置,建议定期确认账户状态正确。
- 可以只用风控而不用其他功能吗?
- 可以。将不需要的功能开关关闭(如 EnableNetRisk=false)或参数置 0(如 MailNetHigh=0),该功能就不会触发。
- 新闻时间怎么输入?
- 格式必须为 "YYYY.MM.DD HH:MI",例如 "2024.01.15 20:30"。时间需精确到分钟,不支持秒。
- 能用在非黄金品种上吗?
- 可以。EA 使用账户级数据(净值、余额、浮盈),对品种无限制。风控规则对所有品种平等适用。
- 平仓时为什么没有按我期望的顺序?
- 单数风控超限时从旧往新平仓;一键平仓和其他风控都是遍历所有持仓逐个平掉。成交顺序还受成交速度影响,无法保证绝对顺序。
Risk Master Pro EA for MT5 – Multi-dimensional Account Protection with One-Click Close-All
A comprehensive risk management system that monitors account equity, profit/loss limits, position counts, and tracks trailing stops automatically. Features an interactive chart panel displaying real-time account status and one-click position closure for immediate risk control.
A short source preview is shown above for visitors; full source, copy and compiled EX5 files are available to VIP members.
评论
还没有人评论,来抢个沙发。