Bibliotheken: Report - Seite 10

 
fxsaber:

In Ihrer Variante geht es nur um den Eröffnungskurs. Es ist klar, dass dies eine Folge des BestInterval-Ansatzes ist. Aber im allgemeinen Fall ist es wahrscheinlich nicht ganz richtig.

Obwohl, wenn man bedenkt, dass die Bibliothek von 2,5 Personen benutzt wird, macht es keinen Sinn, sie "richtig" zu machen. Ich werde diese Art von Filter einführen

Ich verwende ihn tatsächlich für BestInterval. Das heißt, ich halte nicht mehrere virtuelle Medien vor: ein vollwertiges und eines mit einem Intervall. Ich behalte eines und filtere es in der Ausgabe auf einmal, das war es, was ich tun musste.


Wahrscheinlich wäre es richtiger, es so einzustellen

OrderTimeOnly <= this.EndInterval

Es gibt dort sowieso keine Mitternacht, höchstens 23.59.59.

 
traveller00:

Tatsächlich verwende ich es für BestInterval. Das heißt, ich behalte nicht mehrere virtuelle Medien: ein vollwertiges und eines mit einem Intervall. Ich behalte eines und filtere es in der Ausgabe auf einmal, das ist, was ich tun musste.

Ich habe diese Option aufgegeben, weil der Synchronisierer dann weniger generalisiert ist.


Besser als jeder Report-Filter ist es, einen eigenen Virtual mit den notwendigen Transaktionen aus der allgemeinen Umgebung (Real/Virtual) zu erstellen. Und das kann dann ohne Filter in Report eingespeist werden.

      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 Ich betreibe die Handelslogik nur in einer Rund-um-die-Uhr-Umgebung VirtualFull. VirtualBestInterval wird immer von VirtualFull abgeleitet, nicht von der Handelslogik.

 

Zusätzliche Zeit für die Schließung einer Position: Dauer vom Zeitpunkt des Schließungsauftrags bis zur Schließung selbst. In einigen Fällen sehr wichtige Informationen.

Und Gesamtverlust in Pips für jede Seite - Eröffnung und Schließung. Der Mangel an Parität ist ein Grund, darüber nachzudenken.

 

Der MT5-HTML-Bericht wird in 115 Sekunden erstellt und benötigt 221 MB.

Der HTML-Bericht in MT5 wird in 5 Sekunden erstellt und benötigt 38 MB.


Der Informationsgehalt der Berichte ist sogar noch unterschiedlicher.

 

Auf der Grundlage dieser und anderer zuvor geposteter Bibliotheken habe ich einen Testerbericht für alle Expert Advisors erstellt.

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

Ich möchte fxsaber für diesen und so viele andere nützliche Beiträge zur Gemeinschaft danken!

Ich verwende diese Bibliothek häufig, um benutzerdefinierte Berichte für bestimmte Symbole und Datumsbereiche zu erstellen.

Eine Sache, die ich bisher nicht machen konnte, ist die Verwendung der Berichtsfilter mit der ToChart()-Methode. Die Filter funktionieren mit der Funktion ToFile() zur Erstellung von HTML-Berichten, aber nicht mit ToChart().

Zum Beispiel:

#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
}

Ich habe versucht, die ToChart()-Funktion so zu modifizieren, dass sie Filter akzeptiert, aber das übersteigt meine Programmierkenntnisse, fürchte ich!

Ich würde mich sehr über eine Rückmeldung des Autors oder eines anderen Nutzers dieser Bibliothek freuen, danke.

 
mqtrader #:

Die Filter funktionieren mit der Funktion ToFile() zur Erstellung von HTML-Berichten, aber nicht mit ToChart().

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

fxsaber #:

REPORT::ToChart(REPORT_BALANCE, 0, 0, CURVE_NONE, NULL, false);
Dadurch wird eine leere Bilanztabelle für mich erzeugt. Vielleicht mache ich etwas falsch. Ich kann ToChart() immer noch nicht dazu bringen, ein Diagramm mit angewandten Filtern zu erstellen. Gibt es noch etwas, das vor dem Aufruf von ToChart() deklariert werden muss, damit REPORT_FILTER auf die Berechnung angewendet wird?
 
mqtrader #:
Dadurch wird eine leere Bilanztabelle für mich erzeugt. Vielleicht mache ich etwas falsch.
Print(Filter.ToString());
 
fxsaber #:
Print(Filter.ToString());
Es funktioniert jetzt, vielen Dank @fxsaber!