自营交易公司的账户遵循一套MetaTrader 5完全不了解的第二套规则:以固定初始余额为基准计算的最大亏损额、在经纪商时钟无法同步的特定整点重置的日交易限额、收益支付的一致性上限、最低交易天数、新闻禁令以及周五交易截止。 违反第一套规则,你就输掉一笔交易;违反第二套规则,你就输掉整个账户。
本库正是支撑上述机制的源代码。它可编译为任意EA,每次运行时针对一个冻结的账户快照检查八条规则,并最多仅输出一个指令——绝不会对同一糟糕时刻做出八种不同的反应。它本身不持有任何头寸。

压缩包包含内容
24 个头文件(.mqh)、一个封装类(CPropRulebook)以及一个演示专家顾问(PropFirmDefense.mq5),该演示程序将封装类与图表面板相连。 该演示程序已作为免费产品发布并编译到Market上:PropFirm Defense。本CodeBase条目提供的是该“守卫”程序的源代码版本,供希望获取类文件而非二进制文件的读者使用。
检查内容
- 每次运行都会检查八项规则——静态回撤、追踪回撤、日亏损、盈利目标、收益一致性、最低交易天数、新闻禁令期、周末持平。
- 一个行为与真实情况一致的追踪下限——它会随着峰值逐步上升,一旦余额达到“起始值加追踪值”,便会永久冻结,这正是追踪回撤账户的实际运作方式。
- 每日重置时间以公司所在时区为准,而非经纪商的午夜,因此发生在重置 边界两侧的亏损都会计入正确的日期。
- 派息规则绝不会平仓。 若因一致性或最低交易天数问题导致提款被暂缓,这不会使账户面临风险,因此系统会报告该情况而非采取强制措施。

运行机制
- 每次循环仅生成一条观察结果,由所有规则共享,并最多产生一条指令。若八条规则同时触发,仅会产生一项操作,而非八项。
- 可与任何操作协同工作——包括该账户上的任何EA、手动交易或复制信号。它本身不会建立任何头寸。
- 状态在重启后得以保留。 锚点、已消耗的预算和锁定状态均被持久化,因此VPS重启不会重置回撤额度。
- 所有阈值均可由您 在“输入”对话框中自行设置,并提供常见交易风格的预设作为起点。

架构说明(供希望复用组件的读者参考)
CPropRulebook 是调用方唯一需要的类。它由以下组件构成:
- CPropSnapshotBuilder—— 每轮处理冻结一个账户快照(权益、余额、持仓、浮动盈亏),确保每条规则基于相同数据进行判断。
- CRuleRegistry+CRuleCoordinator— 保存八个 IPropRule 实现,并将多个判定结果解析为至多一条指令。
- CProtectiveActionExecutor— 唯一被允许操作持仓的类,且仅在触及阈值时执行平仓操作。
- CGuardStateStore— 在终端重启后,持久化最低限价、已消耗预算和锁定状态。
- CTerminalAlgoSwitch— 终端全局“算法交易”按钮的可选执行器。当所需的 WinAPI 调用不可用时(如 Market 构建版本、Linux/Wine 环境或 AllowDllImport=0 设置),它会降级运行而非拒绝启动。
非交易策略
该组件不决定何时入场,也不对盈利能力作出任何承诺。它仅针对任何实际交易行为回答两个问题:我现在可以开仓吗?以及该账户当前是否存在任何超额风险。
事先声明的限制
- 预设数值仅为起点,并非合同约定。 自营交易公司的规则手册会随项目和层级而变化且各不相同。请根据您自身的协议核对每个阈值。
- 新闻规则需要终端的经济日历。 当日历不可用时(如在策略测试器中),该规则 将暂停执行。
- 当编译时未启用市场构建开关(PROP_MARKET_BUILD,在随附的演示程序中默认启用)时,CTerminalAlgoSwitch 会导入 user32.dll。 如果您编译自己的入口点且需要无 DLL 的路径(市场规则、AllowDllImport=0,或不支持 WinAPI 的平台),请在包含指令之前定义该宏。
本文为教育内容,不构成投资建议。交易存在亏损风险。
由MetaQuotes Ltd译自英文
原代码: https://www.mql5.com/en/code/77156
Range compression percentile
将当前时段迄今为止的波动范围与历史波动范围的完整分布进行对比——这是真正的百分位数,而非像ADR%那样仅与平均值进行比较——并在带百分位数刻度的紧凑实时面板上标注统计上的压缩或扩张情况。
MT5 Symbol Changer Profit Display
EMTOrdersUtility 是一款实时交易监控与符号切换工具,专为需要实时查看其在多种金融工具上持仓情况的活跃交易者而设计。
GDS Renko Replay Trainer
GDS Renko 回放训练器是一款免费的教学工具,用于在 MetaTrader 5 的历史 Renko 图表上练习手动决策。 加载历史时间段,向前回放并下达虚拟的买入或卖出交易。 您可以暂停、向前推进一个报价点,或跳转至下一个已完成的Renko砖块。每个虚拟头寸均设有止损和止盈,且该训练工具会记录您的交易会话结果。 该工具基于历史买价/卖价报价点构建固定大小的Renko砖块,并采用经典的两砖反转模式。 未来的价格 tick 不会用于绘制可见图表或执行虚拟交易。买入交易以卖价入场、以买价平仓;卖出交易则相反。在面板上输入的订单将等待下一个回放的有效 tick。止损和止盈会在每个 tick 时进行检查,包括价格跳空的情况。
Pending Panel MT5 — One-Click Pending Orders with OCO
A chart panel for MT5 that places Buy Limit, Sell Limit, Buy Stop and Sell Stop pending orders with one click. Volume, distance and optional SL/TP are set on the panel; OCO cancels the opposite order automatically. Includes bulk delete, a live order list and automatic handling of broker STOPS_LEVEL and filling mode. Execution tool only - no signals, no guaranteed results.