
在芝加哥商品交易所(CME),黄金设有每日维护休市时段。休市结束后首小时的交易涨幅往往超出随机波动所能解释的范围,且在长达11年的样本中,这一现象在每个日历年都会出现——而当天其余各小时的走势则基本持平。
该专家顾问在市场重新开盘时买入,持仓固定时间,并设置基于波动率调整的服务器端止损,除此之外不再进行任何操作。每交易日仅进行一笔交易。不进行均价法、不采用网格交易、不使用马丁格尔策略、不进行回本操作。
数据,以及在我发现成本模型有误后的数据
基于11年每小时数据的测算,在开盘时入场并持仓两小时:
| 按研究中计入的成本计算 | 按测试人员测得的成本 | |
|---|---|---|
| 每笔交易 | +3.34 个基点 | +1.60 个基点 |
| t统计量 | 7.40 | 3.42 |
| 胜率 | 59.3% | 50.8% |
| 盈利系数 | 1.63 | 1.30 |
| 盈利年份 | 11年中的11年 | 11年中的10年 |
左侧一栏是我若在多数人停手的地方停止分析,原本会发布的内容。 随后,在MetaTrader自带的策略测试器中进行的真实 tick 回测显示, 重新开仓时的真实往返成本约为60点,而非我研究中计算的19点 —— 因为M1K线图中的点差 字段 是按K线汇总的,导致重新开仓时的点差被低估了大约三倍。
经过这一修正后,该策略的优势依然存在,但强度已不足原来的半数, 而胜率则变成了靠有利的回报率而非高频交易支撑的“抛硬币”式结果。右侧一栏才是真实的数据,也是本EA构建的基础。
它不是什么
这并非一种谋生手段,源文件的标题在描述任何参数之前就已明确指出这一点。 以承受 20% 回撤的资金规模计算,该策略年化 收益约为+3.3%,最大回撤为 4.6%, 夏普比率为 1.23,每年约 200 笔交易——这也意味着大约每 9 年中会有 1 年出现亏损。 以0.01手计算,这相当于每年约130个货币单位,而该数字衡量的是仓位规模,而非策略本身。
若仅单独考察其2.5年的回测窗口,t值为+1. 12—— 不显著 。 该策略两年盈利的回测结果本身并不能证明什么;真正起决定性作用的是这11年的样本数据。
在我对其产生信任之前,该结果经历了哪些考验
上述任何一项都可能让该策略彻底失败,之所以将它们列出,是因为如果没有人尝试过突破这些考验,那么所谓的“结果”便不成立:
- 这并非跳空。 记录 显示, 突破时的平均跳空 幅度为 −0.011——该波动发生在市场开盘 时。
- 这并非K线构建的伪影。 通过独立获取的M1K线 重建 小时线后,在所有73个重叠交易日中,其结果与H1序列均精确一致至0.0000。
- 这也不是异常值。 剔除1%极端值后的 均值为 +0.70,而全样本 均值为 +0.75;中位数为+0.48。
- 这也不是点差标准化 造成的——虽然这本应 是显而易见的陷阱,因为MT5 K线采用买入价,而开盘后的点差更宽:但点差在整个小时内保持平稳,因此无法解释该效应的任何部分。
- 这并不需要精确的重新开盘价位。 晚15分钟 入场 仍有收益,晚30分钟 入场 仍有收益,但晚45分钟则不再有效。
- 每周开盘价并不属于该策略的范畴。 周日 的数据为+1.11个基点,t值为0.88——与噪声无异——而日数据则为+3.90个基点,t值为8.32。这就是为什么 存在 InpSkipMonday参数,且其默认值为true。
输入参数及其设定依据
| 输入 | 含义 |
|---|---|
| InpEntryHour | 重新开放的服务器时间。采用服务器时间是经过深思熟虑的:该经纪商的时钟遵循美国夏令时,因此重新开放时间全年固定在某个服务器时间点,而如果采用UTC触发机制,则每年会发生两次一小时的偏移。 |
| InpEntryWindowMin | 仅在该整点后的这几分钟内进行建仓。 |
| InpHoldHours | 在按时平仓前持仓的小时数。 |
| InpSkipMonday | 跳过每周的重新开放。请参见上文的周日数据。 |
| InpLots | 固定手数。绝不调整仓位。 |
| InpStopAtrMult | 止损 = 此值 × 每小时平均波动范围。默认值为 2.0,而非第一个版本使用的 1.5 —— 详见下文。 |
| InpRangeBars | 以均值波动范围为单位的H1K线数。480约等于20个交易日。 |
| InpMaxSpreadPts | 若点差恶化至此值以下,则拒绝入场。 |
关于止损倍数。 按 修正后的成本计算,1.5×可带来+1.60个基点(t值为3.42),而2.0×可带来+1.91(t值为4.07),且触发率从2.6%降至1.3%。 点差进一步扩大时收益仍会持续提升——但止损仍需保留,因为“移除止损会改善回测结果”这种逻辑,恰恰是让马丁格尔策略看似盈利的原因。止损的作用是限制尾部事件;而时间止盈则限制其余情况。
在相信上述任何内容之前,请先进行测试
并且必须基于真实 tick 数据,以每个 tick 为单位 进行测试。在我另一段代码中,同一套规则在同一时期内,采用 1 分钟 K 线建模时结果为 −15,627,而采用真实 tick 数据时结果为 +79,000。如果回测报告未说明其建模模式,就无法明确告知你其实际测量的结果。
由MetaQuotes Ltd译自英文
原代码: https://www.mql5.com/en/code/77060
Any Indicator Alert - alerts, push notifications and multi-timeframe for any custom indicator, no source code needed
将其附加到图表上,输入任意自定义指标的名称,它就会根据该指标自身的缓冲区向您发出提醒——弹出窗口、声音提示、手机推送通知或电子邮件。它通过 iCustom 读取指标,因此无需源代码:您只需下载一个已编译的 .ex5 文件即可。 它还可以从更高时间周期读取该指标,并重新检查已收盘的K线,以告知您该指标是重新绘制还是仅存在滞后。 该工具以“探索”模式启动,该模式会列出指标的所有缓冲区及其各自的内容,因为“哪个缓冲区包含信号”正是阻碍大多数人使用 iCustom 的关键问题。
SuperTrend TV EA
一款通过iCustom仅在收盘K线时交易SuperTrend TV指标的专家顾问,随附审计报告,证明每笔交易均与信号匹配且未遗漏任何信号
Trade Excursion Report: MFE and MAE of every closed trade, to CSV
针对每笔已平仓交易导出一行CSV数据,其中包含对账单上未显示的数值:该交易曾达到的最高未实现盈利(MFE)、曾承受过的最大未实现亏损(MAE)、实际保留的MFE金额、交易跨过的K线数量以及持仓时长。 该指标的计算方式与“交易波动”指标相同,但将结果写入文件而非绘制在图表上,因为针对这些数据值得探讨的问题,是图表无法解答的:获利率是否取决于入场时间? 我提前平仓的交易是否恰恰是持仓时间最长的?周一的亏损交易达到的MAE是否与周五不同?只要生成CSV文件,这些问题只需通过一个数据透视表即可解答。 输出格式为分号分隔且带标题行,位于 MQL5\Files 目录下;可在任何电子表格软件中打开。测量限制:波动值取自所选时间周期的K线高低点;单根K线内的价格路径无法确定。“K线”列报告了每笔交易的分辨率,汇总统计时将单根K线交易单独计数,而非将其平均计算在内。
CGoldSymbol - find the broker's gold and size the position correctly on it
无论经纪商如何称呼该黄金符号,本程序都能识别;从交易终端读取合约规格,而非自行推测;并将账户货币计价的风险转换为该经纪商对应的正确手数。