请观看如何免费下载自动交易
请在Twitter上找到我们!
加入我们粉丝页
有趣的脚本?
因此发布一个链接 -
让其他人评价
喜欢这个脚本? 在MetaTrader 5客户端尝试它
EA

GridCapitalCalculator - MetaTrader 5EA

Gianluca Gangemi
Gianluca Gangemi
  • MQL5 / MetaTrader 5 developer 在  Freelance
  • 意大利
  • 581
MQL5 开发者,专注于 MetaTrader 5 自动化:智能交易系统(EA)、风险控制,以及从 MT5 到 Python 的研究流程。

我编写的 EA 具备服务器端止损、保证金水平保护、敞口上限,以及终端或 VPS 重启后的状态恢复——这些正是决定一个系统能否存活的部分,而不仅仅是能否编译通过。

我的主要工作是验证:真实 tick 回测、在第一次运行之前就固定的样本内/样本外划分,以及能够指出结果何时只是噪声的样本外检验。我不会把优化结果的第一行交给您,并且会以书面形式告诉您哪些结论是数据无法支持的。
| Chinese English Русский Español Deutsch 日本語 Português 한국어 Français Italiano Türkçe
显示:
17
等级:
(1)
已发布:
MQL5自由职业者 需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务


每个运行网格交易、马丁格尔策略或任何均价策略的人都会问同一个问题——“我的账户资金是否足够? ”—— 而几乎所有人都给出了错误的答案。

通常的答案是上一级网格的亏损额。但这并不是导致账户爆仓的真正原因。真正导致账户爆仓的是保证金水平触及经纪商的强制平仓线,而此时交易头寸仍处于未平仓状态,表面上看起来似乎还有挽回的余地。

该专家顾问会计算出真实的数值,然后将算术结果转化为有用的信息:它会扫描该交易品种自身的M1历史数据,统计此前曾发生过多少次如此大幅度的价格波动。

该程序严格 为只读模式。它绝不会开仓、平仓或修改持仓。

它存在的目的是为了纠正以下三个错误,而这些错误都倾向于让人产生错误的安全感

  • 一条包含 N 个子段的链在第 × N 步时不会处于浮动状态。 最旧的子段距离当前位置 (N−1) 步,下一个距离 (N−2) 步,以此类推,因此总距离为step × N(N−1)/2。以 10 个子段为例,这意味着 45 步的亏损,而非 10 步。
  • 持仓在浮动期间也会锁定保证金。 强制平仓是将 净值与已用保证金进行比较,因此该分数的两部分会同时对你不利——亏损不断扩大,而缓冲空间却在缩小。
  • 强制平仓是一个百分比,而非零。 账户 并不需要损失全部资金。在常见的50%阈值下,损失一半的净值就已经足够触发强制平仓。

报告内容

行 含义
完整链段跨度 从最新区段到最旧区段的价格距离。
当链条完整时显示为浮动 以账户货币计价的“步长 × N(N−1)/2 ”数值 。
锁定的保证金 来自 OrderCalcMargin,非推导值——只有交易终端才知道您的经纪商的规则。
完整的链是指 浮动头寸加上保证金,占权益的百分比。
导致头寸平仓的不利行情 价格朝不利方向波动到何种程度时,经纪商才会采取行动。
此时持有的头寸 发生时实际存在的仓位数量。
过去N天内的次数 如此大幅度的波动发生频率,以真实的M1K线为计数单位。

为什么最后两行比其余内容更重要

“你需要86美元的浮动空间”是一种抽象概念。“过去100天内发生了71次86美元的波动,平均每1.4天一次”则是一个决策依据。 频率是从累计极值开始计算的,并在每次事件后重置,因此一次持续下跌仅计为一次,而非按每根K线计数——该数据始终与天数保持可比性。

而此时“仓位敞口 ”解答 了一个人们常争论却未曾量化的问题:如果账户在交易链填满前就耗尽资金,你的仓位上限就永远无法达到,无论提高还是降低它都毫无意义。

本文将阐明三个容易出错的细节

  • 每价格单位的资金量 源自 该交易品种的点值和点差,而非合约规模。差价合约(CFD)指数、金属和货币对对“合约规模”的定义各不相同,而盈利货币与账户货币不一致的交叉货币对,其点值中已包含所需的汇率换算。
  • 对冲头寸通常不会使保证金翻倍。 在 对冲账户 中, 经纪商通常只对较大的一方收取保证金,而非两者之和——以真实账户为例,6个多头加2个空头头寸的保证金收取额为6,而非8。 该EA通过读取SYMBOL_MARGIN_HEDGED来判断,当无法读取该规则时,它会假设最严格 的情况 ,因为涉及自身安全时的假设绝不应过于乐观。
  • 随着价格波动,链式头寸会逐步填补。 计算 完整链式头寸所需的保证金时,会在仅存在两个头寸的时刻,按 N 个头寸的保证金标准计费。 对于小额账户且步长较大时,这种配置会产生“你已经出局”的错误提示,而其实际结果只是普通的价格波动。该EA会在每个包含k个交易腿的区间内进行求解,并采用第一个自洽的解——即在该价格下链式头寸确实包含k个交易腿的解。

输入参数

输入 含义
InpGridStep 两段之间的距离,以价格(而非点数)为单位。
InpLots 每段的合约数量。
InpMaxLegs 每条链的交易腿数——您的上限。
InpBothSides 多头和空头链是否同时运行。
InpEquity 假设的净值。设为 0 时将使用真实账户,这样您就可以测试目前尚未持有的仓位规模。
InpStopOutLevel 强制平仓百分比。输入0将向经纪商查询。
InpHistoryDays 要扫描的M1历史数据天数。0表示跳过频率检查。

On InpEquity。 将其 设置为 账户中不存在的数值正是该功能的要点,而非权宜之计:它能回答“此配置实际上需要多少资金”这一问题,而无需先进行入金。

它无法做到什么

这并非回测,也无法说明策略是否盈利。它只回答一个问题:在给定的配置和账户条件下,价格可以反向波动到什么程度才会导致经纪商强制平仓,以及这种程度的波动有多常见。

此外,该工具也不模拟价格回升的情形。能够存活的交易链是指价格最终回到了该点位——而该工具衡量的是价格偏离的幅度,这正是决定当价格回调时你是否还能留在市场中的关键因素。

由MetaQuotes Ltd译自英文
原代码: https://www.mql5.com/en/code/76972

AI Prompt Writer - Simple AI Assistant Customization AI Prompt Writer - Simple AI Assistant Customization

通过一个简单的提示文件,您可以自定义 MetaTrader 5 AI 助手,选择其语言、个性、菜单和行为。

Session Range Desk MT5 Session Range Desk MT5

一款基于交易时段区间突破的EA,具备ATR过滤、止损距离调整、可选的持平平仓/部分平仓功能,以及共享图表工作台。支持对冲账户;作为教育资源,附有记录在案的执行和协调限制。

加速震荡(AC) 加速震荡(AC)

加速/减速技术指标(AC)用于衡量当前驱动力的加速和减速。

离散 离散

离散技术指标由价格和交易量的变化决定。