程序库: Report - 页 10

 
fxsaber:

在您的变体中,它只按开盘价运行。很明显,这是 BestInterval 方法的结果。但在一般情况下,这可能不太正确。

不过,考虑到这个库有 2.5 个人在使用,因此让它 "正确 "也没有意义。我将介绍这种过滤器

实际上,我把它用于BestInterval。也就是说,我并没有保留多个虚拟媒介:一个是完整的,另一个是有间隔的。我只保留一个,并一次性在输出中对其进行过滤,这就是我需要做的。


也许这样设置更正确

OrderTimeOnly <= this.EndInterval

反正那里也没有午夜,最多是 23.59.59。

 
traveller00:

事实上,我将其用于BestInterval。也就是说,我没有保留多个虚拟媒介:一个是完整的,一个是有间隔的。我只保留一个,并一次性在输出中对其进行过滤,这就是我需要做的。

我放弃了这一选择,因为同步器的通用性较差。


比任何报告过滤器都好的办法是,用一般环境(真实/虚拟)中的必要事务创建自己的虚拟。这样就可以将其输入报告,而无需任何过滤器。

      const int HistoryTotal = OrdersHistoryTotal();
      
      for (int i = 0; i < HistoryTotal; i++)      
        if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && this.BestInterval.IsTime(OrderOpenTime()))
        {
          const ORDER_BASE Order = VIRTUAL::GetOrder();
          
          _V(Handle, VIRTUAL::AddOrder(Order));
        }


ZY 我只在一个全天候环境 VirtualFull 中运行交易逻辑。VirtualBestInterval 始终来自 VirtualFull,而不是交易逻辑。

 

增加的平仓时间:从下单到平仓的时间。在某些情况下,这是非常必要的信息。

开仓和平仓每一方的总滑点。缺乏平价是需要考虑的一个原因。

 

MT5 HTML 报告生成时间为 115 秒,耗时 221 MB。

MT5 的 HTML 报告生成时间为 5 秒,耗时 38 MB。


报告的信息内容差别更大。

 

在此库和之前发布的其他库的基础上,我为所有智能交易系统制作了一份测试报告

TesterReport - альтернативный отчет тестера стратегий Metatrader 5
TesterReport - альтернативный отчет тестера стратегий Metatrader 5
  • www.mql5.com
Торговые отчеты MetaTrader 5 довольно тяжелы для восприятия. По этой причине с определенного момента разработчики добавили в Терминал более понятный режим просмотра закрытых позиций. Однако, это не
 

我要感谢 fxsaber 为社区做出的贡献以及其他许多有用的贡献!

我经常使用该库为特定 符号 和日期范围生成自定义报告。

有一件事我一直无法做到,那就是将报告过滤器与 ToChart() 方法一起使用。过滤器可以与 ToFile() 函数配合使用,生成 HTML 报告,但不能与 ToChart() 配合使用。

例如

#include <MT4Orders.mqh>
#include <Report.mqh>

void OnStart()
{
   REPORT_FILTER Filter;
   Filter.StartTime = (TimeLocal()-2880);
   Filter.EndTime = TimeLocal();
   Filter.Magic = 0;
   REPORT::Calculate(Filter, true);   
   REPORT::ToChart(); //The equity chart is generated without filters
}

我试图修改 ToChart() 函数以接受筛选器,但这恐怕超出了我的编码能力!

如果作者或其他使用该库的人能给我反馈意见,我将不胜感激,谢谢。

 
mqtrader #:

筛选器可与 ToFile() 函数配合使用,生成 HTML 报告,但不能与 ToChart() 配合使用。

REPORT::ToChart(REPORT_BALANCE, 0, 0, CURVE_NONE, NULL, false);
 

fxsaber #:

REPORT::ToChart(REPORT_BALANCE, 0, 0, CURVE_NONE, NULL, false);
这就为我生成了一个空的平衡图表。也许我做错了什么。我仍然无法让 ToChart() 生成应用了过滤器的图表。在调用 ToChart() 之前是否还需要声明其他内容,以便将 REPORT_FILTER 应用于计算?
 
mqtrader #:
这就为我生成了一个空的平衡图表。也许我做错了什么。
Print(Filter.ToString());
 
fxsaber #:
Print(Filter.ToString());
现在可以了,非常感谢@fxsaber