交易者的 LifeHack: 测试中的余额,回撤,负载和订单指标

Vladimir Karputov | 2 九月, 2016


目录

简介

您可以为了不同目的在MetaTrader 5策略测试器中以可视化模式运行,例如,有时您也许想看到在测试期间,交易账户的余额和净值如何改变,有时候,您也许需要在"根据真实订单的每一订单"模式下可视化地监控可能出现的趋势,这意味着独立的 LifeHack 指标在每种情况下都是需要的。我们将在MetaTrader 5策略测试器中运行不同的指标,并把图标模板另存为 tester.tpl (显示测试结果的图表的模板)。

在测试器中使用指标的通用规则:

  1. 在图表上运行一个 LifeHack 指标,
  2. 把模板另存为 tester.tpl,
  3. 开始可视化测试。

还有保存模板的另外一类方法 - 通过运行以下追随的脚本:

//+------------------------------------------------------------------+
//|                                  ChartSaveTemplateTester_tpl.mq5 |
//|                              Copyright © 2016, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   ResetLastError();
//--- 在模板中保存当前的图表
   if(!ChartSaveTemplate(0,"tester"))
      MessageBox("保存模板出错 #"+IntegerToString(GetLastError()));
   else
      MessageBox("模板 \"tester.tpl\" 被覆盖!");
  }
//+------------------------------------------------------------------+


在这个脚本程序中,写死了模板的名称 "tester",因为这段脚本非常独特,您可以设置脚本的热键:

 

图 1. 赋予一个热键 


LifeHack 订单指标

LifeHack 订单指标显示了最近的300个订单时刻:

//--- 指标缓冲区
double         AskBuffer[];
double         BidBuffer[];
double         AskBufferTemp[];
double         BidBufferTemp[];
//--- 参数
int            InpVisible=300;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()

您可以修改 InpVisible 参数,然而,我不会推荐使用大于1000的数值,因为这会使得终端载入不必要的数据,

另外,本指标也会显示真实与模拟订单时刻的差别:

真实订单时刻

图 2. "基于真实订单时刻的每一订单模式"

所有订单时刻

图 3. "每一订单时刻"

下面的视频演示了两类订单生成时的差别:         

 

另外,LifeHack 订单指标在其子窗口中显示了最新订单的时间。这使得可以在策略测试器中跳到需要的日期并以单步模式查看对应的订单,

例如,您可以在 EURUSD H1图表上查看从 2016.06.03 15:00开始的订单

EURUSDH1

图 4. 从 2016.06.03 15:00 开始分析订单

过程:

1. 运行LifeHack 订单指标并把图表模板另存为tester.tpl. 鼠标右键点击图表并选择"模板 - "保存模板...". 在文件管理器中,选择tester.tpl (如果没有这个模板,您应该输入这个名称)并点击"保存":

图 5. 保存图表模板

2. 在 MetaTrader 5 策略测试器中, 指定包含 2016.06.03 的时间间隔, 选择 EURUSD, 选择测试时间框架为 H1 并设置测试模式为 "基于真实订单的每一订单":

图 6. 测试.

3. 开始可视化测试。

4. 在测试器中,点击"暂停可视化, 空格" (①), 在 "跳到" 栏位指定 2016.06.03 14:59 (②), 然后在单步模式下切换订单 (③):

图 7. 跳到想要的日期

或者以低速开始测试。 


LifeHack 余额净值指标

LifeHack 余额净值指标显示了交易账户的余额和净值是怎样改变的。

LifeHack 余额净值

图 8. LifeHack 余额净值指标


LifeHack 回撤与负载指标

LifeHack 回撤与负载指标使您可以在可视化测试过程中查看回撤和存款负载。回撤(drawdown)是按照以下公式计算的:

drawdown=(balance-equity)/balance*100.0 

在MetaTrader 5策略测试器中同时运行LifeHack 回撤负载和 LifeHack 余额净值指标:

LifeHack 回撤负载

图 9. LifeHack 回撤负载指标

为方便起见,绘图的类型(线形和柱形图)加在指标标签名称中了,另外一个重要事项: "Drawdown (line)" 和 "Load (histogram)" 保存了它们在当前柱的最高值,也就是说,如果当前柱的最大存款负载是80%,然后又下降到10%,"Load (histogram)"标签还是显示着最大值 80%。


结论

我希望这种使用LifeHack系列指标来创建tester.tpl模板的方法能够帮您侦测您所测试的应用程序的优点和弱点。