请 [注册] 或 [登录]  | 返回主站

量化交易吧 /  量化平台 帖子:3354434 新帖:50

测试可视化:交易记录

舞蹈家2发表于:4 月 17 日 19:32回复(1)

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.总结

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

全部回复

0/140

量化课程

    移动端课程