利用 MetaTrader 5 测试仪实现策略可视化

MetaQuotes | 24 九月, 2013

我们都知道有一个“百闻不如一见”的说法。关于巴黎和威尼斯,有各种各样的书可供您阅读,但是根据想像,您永远都不会懂夜间漫步于这些神话般城市的街头会有怎样的感受。可视化的诸多优势,可以很容易地投射到我们生活的方方面面,其中就包括市场活动。比如说:基于采用指标的图表的价格分析,当然还有策略测试的可视化。

每个人都清楚策略测试仪的可能性吗?

实践表明,并非如此。与竞争对手相比,MetaTrader 5 交易平台的优势不仅在于更加便利的用户友好型界面和此终端与MQL5 提供的大量机会,还在于一种利用 MQL5 云网络提供云计算可能性的多货币测试仪以及许许多多的其它选项。交易者所需的所有工具都一站式提供,亦为优势之一。

本文旨在再为交易者介绍 MetaTrader 5 的一种重要功能 - 即策略测试与优化的可视化。根据历史数据和最佳参数的选择对某“EA 交易”行为的分析并非只是对数字、交易、结余、净值等等进行费心分析。安心坐到椅子上,舒舒服服地带上 3D 眼镜,我们开始吧。

然后我会对自己说:世界图表真美好……

代码库市场中发布“EA 交易”时,作者通常都会随附一份有关其测试的统计报告,以及结余与净值图。而策略测试仪 "Results" (结果)选项卡的统计信息中,还有更多有趣的可用图表:

测试结果图表

根据这些图表,您可以分析各个月、各天或各个小时中,您的“EA 交易”什么时间交易最佳,什么时间主动进入市场。您还可以就下述方面对“EA 交易”的性能进行评估:是否于恰当时机平盈利仓位,“EA 交易”是否基于 MFE (最大有利变动幅度)与 MAE (最大不利变动幅度)分布图对损失“坐视不管”:

MFE/MAE 分布图

再向下滚动测试结果,您将看到另一个图解:

利润与持仓时间的分布

此图显示的是持仓利润整个生命周期的依赖性。此图解对于即将到来的2012 自动交易锦标赛非常有帮助。有一项 ATC 规则禁止超短线交易。测试您的“EA 交易”,并确保遵规则编译。

历史影片或可视化测试

可视化测试模式是策略测试仪的革命性功能之一。这样,按日期实施的交易分析、图表的绘制以及其它“有趣”的例行流程,即构成了一个相当复杂的过程。然而,该策略测试仪就像是给您一个视频遥控器,您按下 "Play" (播放)就能观赏历史影片了。您可以慢放或快进影片,暂停以分析相关状况。您可以实时看到如何根据模拟的历史数据构造图表,以及“EA 交易”如何应对价格变化。



与策略测试仪相似,此观测仪完全支持多货币。本视频中的“EA 交易”采用 4 种货币对交易。图表和 Market Watch (市场报价) 中都提供所有的模块价格。

2D 优化结果

三维图像在电视生产商中已经变得十分流行,在介绍它之前,我们先来看看策略测试仪中的二维可视化。乍一看这些矩形可能会感觉怪怪的,它们允许您查看两个优化参数基于优化规范(本例中是最大结余值)的相互影响。绿色的明暗度越深,结余越高:

2D 优化结果

我们看到关系是一种波状特征,而且会在使用时段平均值和移动平均线位移时达到最大值。这些都是移动平均线“EA 交易”的优化值,终端的标配包中会有提供。您甚至可以在这里找到一些乐趣。

现在是 3D

三维图像会实现更好的可视化选项。下面是两个参数的相同依赖关系及最终结果。您可以利用 Optimization Graph (优化图)选项卡的上下文菜单切换到此高级模式。

3D 优化结果

MetaTrader 5 策略测试仪中出现三维优化后,交易者开始在论坛上发布自己的数学计算可视化示例:

三维图形为完全交互式 - 您可以放大、缩小或是旋转到某个方便的角度等等。重要的是任何测试与优化结果都可以作为图像或 XML/HTML 报告导出。

可视化优化

最后,欢迎使用优化结果!想要处理这些结果,交易者必须制备数据,在某个地方下载它们并予以处理。现在,您可以在优化期间当场执行处理!想要示范这种可能性,我们需要多个实现此类处理最简单示例的头文件。

下载下附的 MQH 文件,并将其保存于 MQL5\Include 文件夹。选择任何一个“EA 交易”,并将此代码块粘贴到其代码末尾:

//--- 增加代码用于处理优化结果
#include <FrameGenerator.mqh>
//--- 帧生成器变量定义
CFrameGenerator fg;
//+------------------------------------------------------------------+
//| Tester 函数                                                      |
//+------------------------------------------------------------------+
double OnTester()
  {
//--- 在此插入您自己用于计算优化标准的函数
   double TesterCritetia=MathAbs(TesterStatistics(STAT_SHARPE_RATIO)*TesterStatistics(STAT_PROFIT));
   TesterCritetia=TesterStatistics(STAT_PROFIT)>0?TesterCritetia:(-TesterCritetia);
//--- 在每一个测试结束时调用,把优化条件作为传入参数
   fg.OnTester(TesterCritetia);
//---
   return(TesterCritetia);
  }
//+------------------------------------------------------------------+
//| TesterInit 函数                                                  |
//+------------------------------------------------------------------+
void OnTesterInit()
  {
//--- 准备图表,显示结余图像
   fg.OnTesterInit(3); //此参数设置图表中结余线的数量
  }
//+------------------------------------------------------------------+
//| TesterPass 函数                                                  |
//+------------------------------------------------------------------+
void OnTesterPass()
  {
//--- 处理测试结果并显示图像
   fg.OnTesterPass();
  }
//+------------------------------------------------------------------+
//| TesterDeinit 函数                                                |
//+------------------------------------------------------------------+
void OnTesterDeinit()
  {
//--- 优化结束
   fg.OnTesterDeinit();
  }
//+------------------------------------------------------------------+
//|  处理图表事件                                                    |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
  {
   //--- 在优化结束后,当点击抬头时显示帧
   fg.OnChartEvent(id,lparam,dparam,sparam,100); // 100 是以毫秒为单位的帧之间的暂停时间
  }
//+------------------------------------------------------------------+

我们使用标配包中提供的 Moving Averages.mq5 “EA 交易”。粘贴代码,并将“EA 交易”保存为 Moving Averages With Frames.mq5。编译并运行此优化。


由此,交易者现在可以运行可视化优化,并可以在优化期间处理其结果或显示必需信息。

还想要更多吗?

我们一直扩展 MetaTrader 5 交易平台的可能性,不断添加新工具以帮助交易者。针对如何进一步改善策略测试仪中的可视化,发表您的评论、分享您的观点。我们会努力实现其中最有趣、最有用的部分。

如何使用文件

所有带有 .mqh 扩展名的文件均置于 MQL5\Include 文件夹,编译器会在编译 Moving Average_With_Frames.mq5 “EA 交易”时到这里寻找相关文件。“EA 交易”文件可放入 MQL5\Experts 文件夹或其任何子文件夹中。

自行于 MetaTrader 5 策略测试仪中启动随附的“EA 交易”,为本文的阅读添加更多乐趣。您一定会喜欢它的。