- 显示:
- 24
- 等级:
- 已发布:
-
需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务
PropGuard 1.02 —— 自营交易公司账户的账户级风险管理工具
在任意图表上部署一个实例,即可监控账户中的所有持仓(无论是由EA还是手动交易开仓),并在触及公司设定的日亏损限额或最大亏损限额之前平仓所有头寸。1.02版本新增了资金规模上限、止损要求以及每笔头寸的风险上限。
为何是 1.02 版:来自我个人账户的数据
我一边使用自己的EA进行交易,一边手动操作一个100k的FTMO账户。我交易日志中四天的记录(共46笔手动交易)揭示了两点,仅靠每日和最大亏损限额是无法捕捉到的:
- 17笔交易在未触发止损的情况下平仓。其中持仓时间最长的一笔持续了2小时22分钟。
- 一笔18手GER40交易设置了94点的止损,亏损1,933——仅此一笔交易就达到了3%日亏损限额的约三分之二。
截图在策略测试器中重现了这两笔交易(仅限测试器的版本会开启这两笔交易;附带的代码即为防护代码),其中 InpRequireStopLoss 设为 true,InpMaxRiskPerPos 设为 750,且仓位规模上限已关闭,因此仅止损规则生效: 18手设有止损的头寸立即被缩减至750的上限,而8手未设止损的头寸则在62秒后被平仓。
其作用
每日亏损。 在重置时间(默认服务器时间01:00,即FTMO的00:00 CE(S)T),系统会记录权益值。 如果当日权益下降幅度超过 InpDailyLossPct 乘以 InpInitialBalance,则所有头寸将被平仓,挂单被删除,并且如果启用了 InpBlockAfterBreach,任何新开的头寸也会被平仓,直至下一次重置。 请将警戒线设置在公司规则之下:5% 规则时设为 4%,3% 规则时设为 2.5%,以便在平仓时留有滑点空间。
最大亏损。 有三种衡量方式(InpMaxLossMode):
- 静态:基于初始余额(经典的两步评估法),
- 追踪法:以历史最高权益为基准,每 tick 更新一次,
- 日均余额追踪法:以每日重置时记录的最高余额为基准。这是FTMO“一步挑战赛”在午夜重新计算止损底线的方式,且该底线绝不会下移。
当亏损达到 InpMaxLossPct 时触发保护机制(10% 规则下默认值为 8%)。
仓位上限以金额为单位,而非手数。 按手数设定上限在不同交易品种间毫无意义: 15手指数差价合约(价格为25,000)的价值约为430,000,15手另一指数(价格为7,700)的价值约为115,000,15手欧元/美元的价值约为1,750,000。 PropGuard 会将每笔头寸按“手数 × 当前价格 × 每手一点的价值”(以账户货币计)进行计算,并进行比对:
- InpMaxNotionalPerPos:单笔头寸价值超过此限额时将被平仓。
- InpMaxNotionalTotal:当所有持仓总价值超过此限额时,将平仓最新建立的头寸,然后是次新的头寸,以此类推,直至符合限额。
为何以金额为单位:无论交易品种为何,300,000的头寸若价格波动1%,收益或损失即为3,000。若每日限额为3,000,则应将该数值设为限额。 旧的 InpMaxLotsPerPos 参数仍然存在(0 表示关闭),供需要设置手数上限的用户使用。
止损要求。 启用 InpRequireStopLoss 后,任何在开仓后 InpStopGraceSeconds 内仍未设置止损的仓位将被平仓。60 秒的时间足以输入止损指令。
每笔头寸的风险上限。 InpMaxRiskPerPos 表示单笔头寸从开仓价到止损价之间可承担的最大风险金额。如果止损设置的风险超过该上限,PropGuard 会将其调整至风险恰好等于该上限的距离。如果系统检测时市场价格已超过该距离,则直接平仓。 该上限以账户货币计价,因此适用于所有交易品种。止损位已处于盈利状态的头寸将保持不变。
最佳交易日信息。 启用 InpBestDayInfo 后,日志会在每次重置时显示盈利最高的一天所占所有盈利日总和的比例。FTMO 的“1-Step”规则要求,在通过挑战时,该比例不得超过 50%。此功能仅供参考,不触发任何操作。
此外: 交易时段和周五收盘时间(服务器时间)、来自MT5经济日历的高影响新闻过滤器、需排除的魔术号码、每项操作的推送通知,以及MQL5/Files中每个账户的CSV日志。 状态(当日开盘、触发标志、当日最高余额)保存在终端全局变量中,因此触发后重启不会在下次重置前重新启动交易。
输入参数
- InpInitialBalance — 百分比所针对的账户规模。
- InpDailyLossPct、InpMaxLossPct、InpMaxLossMode —— 两个限额以及最大亏损的计算方式。
- InpResetHour、InpResetMinute — 公司按服务器时间进行的每日重置时间。
- InpMaxLotsPerPos、InpMaxNotionalPerPos、InpMaxNotionalTotal — 头寸规模上限(0 = 关闭)。
- InpRequireStopLoss、InpStopGraceSeconds — 止损要求。
- InpMaxRiskPerPos — 以账户货币计的每笔头寸风险上限(0 = 关闭)。
- InpBestDayInfo — 日志中的最佳交易日比率。
- InpCloseOnBreach、InpBlockAfterBreach — 触发限额时的处理方式。
- InpUseWindow、InpWindowStartHour、InpWindowEndHour、InpFridayClose、InpFridayCloseHour — 时间规则。
- InpUseNewsFilter、InpNewsCurrencies、InpNewsMinutesBefore、InpNewsMinutesAfter — 新闻窗口。
- InpPushAlerts、InpMagicToIgnore。
示例:FTMO 1-Step 100k(每日3%,10%追踪止损,最佳单日收益50%): InpInitialBalance 100000, InpDailyLossPct 2.5, InpMaxLossPct 8, InpMaxLossMode 每日余额追踪止损, InpResetHour 1, InpMaxNotionalPerPos 300000, InpMaxNotionalTotal 450000, InpRequireStopLoss true, InpMaxRiskPerPos 750, InpBestDayInfo true.
示例:两步法 200k(每日 5%,静态 10%):InpInitialBalance 200000, InpDailyLossPct 4, InpMaxLossPct 8, InpMaxLossMode static, InpResetHour 1.
注: 在策略测试器中,EA会在开始时开仓并平仓一个最小手位的头寸,以便观察平仓逻辑的运行情况;而在真实或模拟账户中,它绝不会开仓。测试器没有经济日历,因此新闻过滤器在此处处于非活动状态。 时间规则采用服务器时间;夏令时变更后请检查重置时间,因为经纪商的午夜时间与服务器时钟的日期变更并不总是同步。

由MetaQuotes Ltd译自英文
原代码: https://www.mql5.com/en/code/77710
ImpulseCandle - impulse bar marker with ATR body filter and volume confirmation
标记推动力K线:实体长度至少为ATR乘以系数,实体长度至少占K线波动范围的设定比例,收盘价接近极值,可选的 tick 量确认。看涨推动力K线下方显示绿色箭头,看跌推动力K线上方显示红色箭头。 仅显示已收盘K线,不重绘。信号存储在两个缓冲区中,因此专家顾问可通过iCustom读取这些信号。
Stormbreaker ADX - Supertrend and DMI Trend EA
一款适用于MetaTrader 5的顺势交易专家顾问,结合了Supertrend的趋势方向与ADX和DI的确认信号。采用基于ATR的止损策略,每笔交易的风险控制在净值0.5%以内。
NeonDesk - Neon Manual Trading Panel with Multi-Timeframe Bias
可拖拽至图表上的手动交易面板,具备多时间周期偏好、ATR止损/止盈提示、追踪止损以及一键“买入/卖出/全部平仓”功能。
Gold Breakout EA for XAUUSD H4 +90 Percent in a 2020 to 2026 Backtest
一款适用于黄金的“乌龟”式突破型EA。当H4K线在上升趋势中收盘价高于20根K线的高点时买入,止损设为2个ATR,目标价设为2R。 在XAUUSD上进行了2020年1月至2026年9月的回测:以10,000为本金、1%风险率,盈利9,029.72;盈利系数1.77;最大回撤11.38%;7年中6年盈利。
