English Русский Español Deutsch 日本語 Português
测试可视化:交易记录

测试可视化:交易记录

MetaTrader 4测试者 | 25 二月 2016, 15:27
1 918 0
Andrey Khatimlianskii
Andrey Khatimlianskii

1.动机

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

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


2.任务和实现方法

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

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

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

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


保存模板用于测试

保存模板用于测试

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

这(以下)并不很困难:

  • 将 VisualTestingTools.mq4 文件保存在命名为...\MetaTrader 4\experts\include\ 的目录下;
  • 添加 #include <VisualTestingTools.mq4> 行至 Expert - 现在文件内容包含在 Expert 代码中,且
  • 在 Expert 的 init() 和 start() 函数中插入调用负责更新交易记录的函数。
...
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 的包含文件中进行声明。其中一些用于控制“终端”选项卡,其他则是用于“账户记录”选项卡,但大多数为普通变量:
  • TerminalRows- 显示“终端”选项卡行的最大数量。如果令 TerminalRows = 0,则终端将不会更新;
  • HistoryRows - 显示“终端”选项卡行的最大数量。如果令 HistoryRows = 0,账户记录将不会更新;
  • BigText- 如果想调大字体,则设为 true;
  • SignalPoints- 以点数表示的距离,其中作为起始点的挂单止损、获利和开仓价格字段将会高亮显示。例如,如果 SignalPoints = 10,则止损字段在价格距离头寸止损位置 10 个点时将更改颜色;
  • ShowCancelled- 如果想在交易历史中看到已过期的挂单则设为 true;
  • ShowExpired - 如果想在交易历史中看到已过期的挂单则设为 true;
  • MainColor - “终端”和“账户记录”以及终端的交易账户信息栏(余额、股本)的标题颜色。
  • BuyColor- 关于买入头寸的信息颜色;
  • BuyOPColor - “终端”选项卡的“开仓价格”字段的颜色;当前价格接近买入止损和买入限价订单的未平仓水平时,该颜色将替换主色;
  • BuySLColor - 对于“终端”选项卡:颜色在当前价格接近买入头寸的止损水平时替换主色;对于“账户记录”选项卡:颜色在买入头寸由止损平仓时替换主色;
  • BuyTPColor- 跟应用至获利头寸的 BuySLColor 相同;
  • SellOPColor, SellSLColorSellTPColor- 跟卖出头寸相同。

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




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



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

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

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

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


4.潜在问题

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

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


5.总结

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

本文由MetaQuotes Ltd译自俄文
原文地址: https://www.mql5.com/ru/articles/1452

使用 Skype 发送来自 Expert Advisor 的消息 使用 Skype 发送来自 Expert Advisor 的消息
本文介绍如何使用 Skype 将来自 Expert Advisor 的内部消息和短信发送给移动电话。
三色指标和最大程度简化写入指标的一些方法 三色指标和最大程度简化写入指标的一些方法
作者在本文中详述了一些提高指标对于可视化交易的信息价值的方法。作者分析了三色指标以及使用了其他时间框架内的数据构建的指标的实现方式,然后继续详述指标库,具体可参见文章 "延迟最小的有效平均算法:在指标中的使用"
日内交易中的时间转换原则 日内交易中的时间转换原则
本文包含了允许接收更加平稳的价格流的操作时间概念。也包含了带时间转换裕度的已更改移动平均线的代码。
具有最小延迟的有效平均算法:在指标中使用 具有最小延迟的有效平均算法:在指标中使用
本文介绍作者开发的更高质量的自定义平均函数:JJMASeries()、JurXSeries()、JLiteSeries()、ParMASeries()、LRMASeries()、T3Series()。本文还涉及在指标中应用上述函数。作者基于这些函数的使用引入一个丰富的指标库。