测试可视化:交易记录

Andrey Khatimlianskii | 25 二月, 2016

1.动机

从 build 196 开始,MetaTrader 4 客户端提供测试可视化功能。它使控制 Expert Advisor 测试达到全新的水平。现在,交易编程人员可以观察他或她的 Expert Advisor 的每个动作,检查其对记录的操作。

关于如何使用可视化程序,可以阅读 在 MetaTrader 4 客户端测试 Expert Advisor:外部一览。在之前一篇题为测试可视化:功能强化的文章里,描述了如何实现对“交易”选项卡的测试。我们将在此添加“账户记录”选项卡。


2.任务和实现方法

首先,我们必须承认,创建“账户记录”的卷影副本是不可能的。要进行创建,我们必须使用动态连接库编写复杂的程序。但我们没必要这样做,因为测试程序的“测试结果”选项卡包含关于操作的几乎全部信息。

我们的任务是显示实际的信息。这在分析 Expert Advisor 的工作时非常方便。没有必要一直在选项卡之间切换。

由于显示器上空间不多,实现滚动并非很容易,我们将只显示最近的事件。

另外,在创建显示记录的子窗口时,有必要创建一个指标,在将其添加至图表后,创建命名为 tester.tpl 的模板或在 <expert_name>.tpl 模板内(可以从本文直接下载指标)。


保存模板用于测试

保存模板用于测试

现在我们可以开始准备 Expert Advisor。

这(以下)并不很困难:

...
double _Commission = 0.0; string _Comment = ""; datetime _Expiration = -1;
 
#include <VisualTestingTools.mq4>
 
int init()
  {
    if(FastEMAPeriod >= SlowEMAPeriod) 
        return(-1);
    vTerminalInit();
    vHistoryInit();
    return(0);
  }
 
int start()
  {
    if(FastEMAPeriod >= SlowEMAPeriod)
        return(-1);
    vTerminalRefresh();
    vHistoryRefresh();
 
    int _GetLastError = 0;
...


3.测试

现在,开始测试新的 Expert。为此,打开策略测试程序窗口,在 Expert 的菜单中选择 CrossMACD_DeLuxe_VisualHistory 并按其属性按钮。

策略测试程序窗口

策略测试程序窗口


Expert 已经获得一些新的外部变量 - 它们在命名为 VisualTestingTools.mq4 的包含文件中进行声明。其中一些用于控制“终端”选项卡,其他则是用于“账户记录”选项卡,但大多数为普通变量:

为变量设置想要的值并按“确定”。检查是否启用“可视化”并开始测试:




测试可视化:已经加载‘终端’和‘账户记录’窗口



EA 已经建仓,在‘终端’窗口进行可视化

一旦平仓,它会移至‘账户记录’并被另一个替换 注意止损字段为红色高亮显示 - 该头寸由止损平仓。

第二个头寸已经获利平仓。注意:最新的头寸显示在“账户记录”顶部。因此,我们始终可以看到最新事件。

这是我们的可视化终端在几分钟后的外观


4.潜在问题

在我的文章测试可视化:功能强化中所述问题也适用于vHistory指标。如果指标不在测试程序使用模板的第二个子窗口,则负责“账户记录”更新的函数的正确运行应由明确指定的子窗口号提供:

vHistory_win = WindowFind( "vHistory" );
    if ( IsTesting() ) { vHistory_win = 2; }


5.总结

截屏显示了在下面给出的各种情况下“账户记录”选项卡的外观。