Backtest Reality Check
- 实用工具
- 版本: 1.0
- 激活: 10
Backtest Reality Check 以 EA 的形式挂在 MetaTrader 5 图表上,但它本身不做交易。它读取策略测试器保存的报告,从成交记录里算出各项数值;再用同一套函数去测同一个 EA 在真实账户上已经做过的成交,最后把两边的数值并列在一起。实盘成交还不到 30 笔时,差值仍然显示,但工具不会把它当成已经成立的差距,而是注明还差多少笔。它不下单、不改单、不平仓,源码中不包含任何交易函数调用。
■ 标记的含义
带阈值的那几行,标记只说明这个数值越过了该行写明的阈值,并不评价 EA 的优劣。至于数值为何会是这样,工具也给不出原因:过拟合、行情变化、经纪商差异、偶然波动,这几种原因在数据上留下的样子几乎一样。
■ 报告和实盘并排(Live vs Report 页)
Manual (0) Link Unlink
Report: GridBot_EURUSD_M15.htm
Report Live Diff
Trades 28 140 -
Win rate 67.86% 41.43% -26.4 pt
Profit factor 3.50 1.64 -1.86
Expected payoff 32.14 7.16 -24.99 0.22x
Avg win 66.32 44.14 -22.18
Avg loss -40.00 -19.00 +21.00
Max drawdown 0.40% 0.38% -0.0 pt
Avg holding time 5.9 h 4.9 h -0.9 h
Trades per week 5.64 5.52 -0.12 0.98x
Avg lot 0.10 0.10 -0.00
Win rate differs from the report by -26.4 pt over 140 trades
Live 这一列并没有另写一套算法。账户里的成交会先整理成读报告时的同一种结构,再送进同一个测量函数;所以两列一旦对不上,原因只会是这个共用函数被改过,而不会是两套算法各自跑偏。
Trades 这一行只把两个数并排放着,不相减:几个月的回测和几周的实盘本来就不会成交同样多笔,减出来的数没有意义。两个百分比的差,用百分点表示,不写成百分比——百分比之差再写成百分比,说的就不是同一回事了。有几行光看差值看不出差得有多远,工具会另外给出倍数:Live 的值除以 Report 的值,就是这个倍数。
不用手动填魔术号。工具会自动从账户历史里收集出现过的魔术号,一个 EA 占一行;魔术号为 0 的成交都归到 Manual (0) 这一行——手动下的单和忘了设魔术号的 EA,在成交记录上看不出区别。
■ 样本太少时,工具会直说还不能下结论
Not enough live trades yet (18 of 30)
Win rate 50.00% vs 67.86% - with 18 trades, a gap this size can occur by chance
实盘成交不到 30 笔时,Report、Live、Diff 三列都会置灰。数值本身不会藏起来(藏起来同样是一种误导),只是还不把它当成已经成立的差距。
Win rate 的差值不看有没有越线。先算一下:这么大的差值,光靠偶然波动能不能出现。用报告一侧的比例和实盘成交笔数算出标准误差,取 1.96 倍作为偶然波动的区间(双侧的常用取值)。
这一步可以自行复算。示例用的是同一份报告,只有实盘成交笔数不同:成交笔数少的那次,区间比差值宽,工具会注明这点差距可能只是偶然;成交笔数多的那次,区间比差值窄,工具就不再这样提示,只把差值报出来。这条判断是有意保守的:宁可多等一阵,也不要对没变的 EA 说它变了。
能说出“还不能下结论”,本身就是这款工具的价值。永远都能给出结论的工具,其实什么都没测。
■ 报告的存放方法
在策略测试器里保存报告时,格式可以选 HTML 或 XML,两者都不是默认项。请选 HTML。存成 XML 的文件(其实是表格格式)本版本读不了;工具不会悄悄跳过,而是在列表里把这个文件标出来,注明需要重新存成 HTML。
报告请放到 MQL5\Files\BacktestRealityCheck\reports 文件夹里。这个文件夹会在挂上图表时自动创建;文件夹为空时,面板会直接显示应该放进去的完整路径。
■ 读取范围与对外通信
数值取自报告里的成交记录,而不是靠表头的文字认出来的,所以不管报告是在哪种语言的终端上保存的,算出来的数值都一样。想自己验证,把同一次回测换个界面语言再存一份,两份一起导入对比就行。文件只在本机读取,不联网,也不外发任何数据。
■ 它不做的事
— 不干预账户:不下单、不平仓、不改止损止盈,也不启动或停止任何 EA。
— 只适用于对冲账户。净额账户上持仓会被合并,按 EA 拆分的数值也可能跟着合并。
■ 免费演示版
演示版在策略测试器里运行,内置一份样本数据,挂上去面板里就有内容,不会先给一个空面板。
Sample data - not a real report
这行“样本数据”的提示会一直留在面板上,终端日志里也会输出同一行文字,所以不管是看面板还是看日志,都不会把样本数据当成自己账户的数值。实盘图表上不会出现这行提示。
■ 参数和运行环境
InpReportFolder InpUseCommonFolder InpRescanSeconds InpMinTradesForStats
InpFlagTopTradeShare InpFlagEquityR2 InpFlagMinTrades InpIncludeSwapCommission
InpHistoryDays InpPanelX InpPanelY InpFontSize InpShowTesterSelfDemo
参数一共十三项,全部用默认值也能跑。运行环境:MetaTrader 5,一张空白图表,对冲账户。发布前用程序检查过:交易函数调用、DLL 引用、对外通信,三项都是 0。
这款工具读的是已经结束的成交,只做统计和度量,不预测行情,也不对您的交易结果作任何承诺。交易本身有亏损的风险,建议先在模拟账户上跑一段时间。
