- 显示:
- 15
- 等级:
- 已发布:
-
需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务
核心理念
如果你在一个账户上运行多个EA,关键的数字并不是每个EA赚了多少钱,而是它们的风险在多大程度上能够相互抵消。
分别统计每个交易系统单独运行时最长的连亏期,并将这些数字相加。然后统计同一时期内整个账户最长的连亏期。第二个数字总是更小。它比第一个数字小多少,才是衡量你分散投资效果的唯一客观指标,而没有任何交易终端报告会显示这一数据。
本脚本可测量这一指标。它会读取您的已平仓交易记录,按魔术编号进行分组,并报告以下四项数据。
报告内容
1. 按交易系统统计。 对于通过最低交易次数筛选条件的每个魔法数字,分别统计其交易笔数、净收益和最大回撤。
2. 压缩率。 所有独立回撤之和与合并账户回撤之比。该比率接近1意味着各交易系统走势趋同,相当于你拥有同一策略的多个副本;比率较高则表明各系统的亏损期发生在不同时间点。
3. 相关性。 包含期损益的完整成对皮尔逊相关矩阵、平均绝对相关系数ρ、相关系数低于0.30的组合占比,以及相关性最高的组合名称。该矩阵在图表上以热力图形式呈现:浅色表示两个系统互不影响,红色表示它们同步涨跌,蓝色表示它们走势相反。
4. 蒙特卡洛模拟。 将同一时期的结果重新打乱,按随机顺序重排数千次。历史数据给你提供了一种月份排序方式。市场可以自由地以任何其他顺序呈现相同的月份,而当顺序改变时,最差的连跌期也会随之变化。 该脚本会报告该分布区间的第50、90和95百分位数的回撤值,并告知你的单个历史路径在该区间内的位置。大多数回测结果都落在较为有利的半区。
所有数据都会写入CSV文件,因此可以在电子表格中对矩阵进行热力图分析。
如何解读输出结果
压缩比是关键指标。两倍、三倍、十倍:这就是多元化在您的交易中,以您自己的货币计算所带来的收益。
平均绝对rho值能告诉你,这组策略组合是真正各不相同,还是仅仅看起来不同。若多对组合的该值均低于0.15,则说明这是一个真正的投资组合;若高于0.40,则意味着你只是在运行同一投资理念的不同变体。
蒙特卡洛百分位数则令人不安。如果你的历史回撤位于云图的第60百分位,那么三分之二的替代历史走势对你而言都比实际发生的情况更为有利。应根据云图的尾部情况规划仓位规模,而非仅依据单一路径。

输入参数
- InpGrain- 损益序列的分桶粒度:月度、周度或日度。月度是默认且最稳妥的选择:基于稀疏日度分桶计算的相关系数会因空单元格而被拉向零。当所选粒度导致过多分桶为空时,脚本会发出警告。
- InpMCRuns- 蒙特卡洛重排次数。默认值为 2000。小于 100 或大于 100000 的数值将被限制。
- InpMinTrades- 魔术数字,若已平仓交易数量少于该值,则该交易将从报告中剔除,并从组合投资组合中移除,以确保比较具有可比性。默认值为 20。
- InpRefBalance- 仅用于将蒙特卡洛回撤以百分比形式表示的基准余额。默认值为 10000。
- InpExportCSV- 将周期损益表和相关性矩阵写入 MQL5\Files 目录。文件名前缀为 PCA_,以确保不会覆盖其他工具的导出文件。
- InpDrawPanel- 在图表上绘制热力图。当值为 false 时,将移除先前运行留下的任何面板。
- InpMaskMagics- 将系统标记为 S01、S02 等,而非显示实际的魔术数字。此功能在截图时非常有用。
- InpPanelX、InpPanelY- 面板相对于左上角的偏移量,单位为像素。
- InpPanelMaxPx- 热力图网格的最大边长。单元格大小会根据系统数量进行调整;系统数量较少的投资组合将使用较大的单元格。
- InpPanelMaxSys- 超过此数量的系统将被跳过,因为网格所需的矩形数量会超过图表能够流畅重绘的范围。CSV导出文件仍包含完整的矩阵。默认值为64。
- InpMCSeed- 0 生成随机种子,其他任何值均可使蒙特卡洛百分位数结果可重复。当图表用于报告时,请使用固定种子。
注意事项与限制
回撤值基于所选粒度下的已平仓交易结果计算。它们不包含持仓头寸的浮动波动,而该波动幅度通常更大,在多品种系统中往往深达三分之一甚至更多。请将这些数值视为已实现回撤,并请注意,您的权益回撤情况实际上更为严重。
入场和出场交易均被计入。大多数经纪商对入场交易也收取佣金,若仅计入出场交易,则会无形中低估成本。
如果魔术数字 0 通过交易过滤器,则会被计入,脚本会在日志中注明。在大多数交易终端上,该分类包含手动交易以及任何保留默认魔术数字的 EA,因此不一定是单一交易系统。
相关性分析需要足够多的周期才有意义。两个系统若仅有六个月的重叠期,虽然能得出一个数值,但该数值并不可靠。
脚本执行完毕后,面板对象仍会保留在图表上,这正是您截图时所需要的。若要移除它们,请将 InpDrawPanel 设置为 false 后再次运行脚本。
该脚本不具备的功能
它绝不会下单、修改或平仓。它不进行任何预测,不生成交易信号,也不会连接任何网络或外部服务。它仅读取您的历史数据并报告其中内容。
纯 MQL5 编写,单文件结构,不依赖任何外部库。
由MetaQuotes Ltd译自英文
原代码: https://www.mql5.com/en/code/75606
Sessionvolatilityheatmap
以图表热力图的形式显示交易日每小时的平均价格区间,并在K线背后添加亚洲/伦敦/纽约交易时段的阴影——这样您就能清楚看到该交易品种何时真正出现波动,而不仅仅是凭空猜测。
GoldLondonBreakout
在亚洲时段,对XAUUSD进行区间锁仓,随后为伦敦开盘设置一个OCO突破组合(买入止损/卖出止损),止损位基于ATR计算,仓位大小按风险百分比确定。不使用任何指标,不进行主观判断——区间是经过测算的,而非凭空猜测。
SHK Heikin Ashi MACD Signal Arrows
一款 MetaTrader 5 图表指标,可绘制 Heikin Ashi 蜡烛图、显示经确认的买入和卖出箭头、支持可选的 MACD 柱状图背离过滤功能,并提供可配置的警报。
Trade Journal and Performance Analytics Dashboard
一个轻量级的图表内仪表盘,可读取您的已平仓交易记录,并显示胜率、盈利因子、连胜记录和权益曲线——无需输入策略参数,仅基于您自身的交易数据,并自动刷新。