Es mag den Anschein haben, dass die Bibliothek etwas mit einem solchen Diagramm im Standardbericht des MT5-Testers gemeinsam hat

Ein Beispiel dafür, wie man Daten für ein solches Diagramm erhält, finden Sie unten
#include <MT4Orders.mqh> // https://www.mql5.com/de/code/16006 #include <fxsaber\BestInterval\BestInterval.mqh> // https://www.mql5.com/de/code/22710 void OnStart() { BESTINTERVAL BestInterval; // Erstellt ein Objekt zur Berechnung des besten Handelsintervalls BestInterval.Set(); // Eine Geschichte des Bietens veröffentlicht BestInterval.DeleteWorseInterval() // Hat ein schlechtes Intervall weggeworfen double Profit[24], Loss[24]; ArrayInitialize(Profit, 0); ArrayInitialize(Loss, 0); for (int i = BestInterval.GetAmount() - 1; i >= 0; i--) { const DEAL Deal = BestInterval[i]; // i-ter Abschluss in der neu berechneten Handelsgeschichte const int hour = Deal.OpenTime % 3600; // Stunde der i-ten Transaktion // Verteilen Sie den Gewinn auf die jeweiligen Arrays if (Deal.Profit > 0) Profit[hour] += Deal.Profit; else Loss[hour] -= Deal.Profit; } }
Tatsächlich ist die Bibliothek aber nicht für einzelne Läufe oder Visualisierungen gedacht. Sie wird zu 99% für die TS-Optimierung benötigt, da sie es ermöglicht, die coolen Modi eines TS herauszufinden, wenn solche Modi in ihm eingebettet sind, wenn auch im Verborgenen.
Das in der Bibliothek gezeigte Protokoll ist das Stadium der Analyse nach der Optimierung: ein Einzellauf. Dieses Protokoll zeigt einfach, wie sich eine bestimmte Instanz der TS (ein Satz von Eingabeparametern) in den berechneten Intervallen verhält. Es handelt sich also um eine zusätzliche Kontrolle, allerdings im Endstadium. Die Grundlage ist die Optimierung.
Die Bibliothek verwendet MT4Orders, um den Handelsverlauf abzurufen.
Es kann verschiedene Gründe geben, warum MT4Orders nicht verwendet werden sollte. Zum Beispiel für Handelsanalysatoren von Drittanbietern.
In jedem Fall ist dieses Szenario vorgesehen:
#include <fxsaber\BestInterval\BestInterval.mqh> // Berechnung des besten Handelsintervalls void OnDeinit( const int ) { BESTINTERVAL BestInterval; // Erstellt ein Objekt zur Berechnung des besten Handelsintervalls // Array der Abschlussgeschäfte DEAL Deals[]; // Wir müssen zwei Felder für jede abschließende Transaktion schreiben // Deals[i].Profit - Gewinn des Geschäfts, mit dem die Position geschlossen wurde // Deals[i].OpenTime - Zeitpunkt des Öffnens (nicht des Schließens) der Position, an der das Geschäft geschlossen wird // BestInterval.Set(); // Put-Handelshistorie - verwendet MT4Orders BestInterval.Set(Deals); // Eine selbst erstellte Bietungsgeschichte veröffentlicht const int AmountIntervals = 3; // Wie viele Handelsintervalle im schlimmsten Fall weggeworfen werden sollen for (int i = 0; i < AmountIntervals; i++) if (BestInterval.DeleteWorseInterval()) // Wenn etwas weggeworfen wurde Print(BestInterval.ToString()); // Drucken wir die erhaltenen Handelsdaten aus else break; // Sonst sind wir raus }
D.h. Sie können alle Daten eingeben, die Sie zur Berechnung des besten Intervalls benötigen. Die Bibliothek ist plattformunabhängig.
Bitte beachten Sie, dass der Bibla-Algorithmus keine interne Optimierung der Parameter beinhaltet. Es gibt kein Überschießen, denn die Basis ist ein Durchlauf: O(n) (n ist die Anzahl der Geschäfte , die Positionen schließen ). Und die "langsamste" Verbindung ist ein QuickSort: O(n*log(n)). Deshalb ist er perfekt für die Optimierung geeignet, weil er den Prozess nicht verlangsamt.
Entwickler könnten den Algorithmus übernehmen (da es sich um einen Single-Pass-Algorithmus handelt), um seine Ergebnisse in den Single-Pass-Bericht aufzunehmen und einen Standardindikator zu erstellen.
Kennung | Beschreibung des statistischen Indikators | Typ |
STAT_PROFIT | Nettogewinn am Ende des Tests, die Summe ausSTAT_GROSS_PROFIT und STAT_GROSS_LOSS (STAT_GROSS_LOSS ist immer kleiner oder gleich Null). | doppelt |
STAT_BESTPROFIT | Gewinn im besten Intervall. | double |
Die Idee der Bibliothek ist klar und die Umsetzung ist erstaunlich einfach zu bedienen. Ich danke Ihnen für die geleistete Arbeit.
Allerdings habe ich eine Anregung für den Autor: Wir brauchen ein Beispiel für die Verwendung auf einem bestimmten Expert Advisor - vom Beginn der Aktivierung der Bibliotheken bis zur Bildung des Filters.
Die Idee der Bibliothek ist klar und die Umsetzung ist erstaunlich einfach zu bedienen. Ich danke Ihnen für die geleistete Arbeit.
Allerdings habe ich einen Vorschlag für den Autor: Wir brauchen ein Beispiel für die Verwendung auf einem bestimmten Expert Advisor - vom Beginn der Aktivierung von Bibliotheken zu filtern Bildung.
101% Unterstützung :)
Sie benötigen ein Beispiel für die Anwendung auf einen bestimmten Expert Advisor - vom Beginn der Aktivierung der Bibliotheken bis zur Bildung eines Filters.
Werfen Sie einen Blick auf BestInterval_Example.mq5.
Чтобы применить найденный интервал после его расчета, нужно во входных параметрах указать BestInteval Action = true.

Merkmale.
S
Bitte teilen Sie in den Kommentaren die Ergebnisse der Anwendung (wie oben) der Bibliothek VOR und NACH in Form von Bildern und entsprechenden Teilen von MT4/5 Single Pass Logs.
Es ist viel einfacher geworden, das Berechnungsergebnis auf den Expert Advisor anzuwenden. Dazu müssen Sie nur ein paar Mal klicken.
Hier eine kleine Zusammenfassung.
1. Nehmen Sie einen beliebigen Expert Advisor und schreiben Sie diese Zeilen an dessen Anfang.
#include <MT4Orders.mqh> // https://www.mql5.com/de/code/16006 #define BESTINTERVAL_ONTESTER // Das Optimierungskriterium ist der Gewinn des besten Intervalls. #include <fxsaber\Virtual\Virtual.mqh> // https://www.mql5.com/de/code/22577 #include <fxsaber\BestInterval\BestInterval.mqh> // https://www.mql5.com/de/code/22710
2. Legen Sie die Anzahl der Intervalle fest, die geworfen werden sollen, und die Option, sie nicht anzuwenden.

3. Stellen Sie die Optimierung ein, oder sofort einen einzelnen Lauf. Im Protokoll des Testers finden Sie die Berechnungsdaten, wenn Sie daran interessiert sind.
Amount of Delete Intervals = 0 00:00:00 - 23:59:59 : Profit = 18385.00, Total = 1070, PF = 1.61, Mean = 17.18, DD = 1769.00, RF = 10.39 SUMMARY: 00:00:00 - 23:59:59 : Profit = 18385.00, Total = 1070, PF = 1.61, Mean = 17.18, DD = 1769.00, RF = 10.39 Amount of Delete Intervals = 1 00:00:00 - 10:07:47 : Profit = 4279.00, Total = 181, PF = 2.02, Mean = 23.64, DD = 834.00, RF = 5.13 11:06:12 - 23:59:59 : Profit = 17349.00, Total = 768, PF = 1.95, Mean = 22.59, DD = 933.00, RF = 18.59 SUMMARY: 00:00:00 - 23:59:59 : Profit = 21628.00, Total = 949, PF = 1.97, Mean = 22.79, DD = 862.00, RF = 25.09
4. Schalten Sie nach dem Einzellauf die Option zur Aktivierung des besten Intervalls ein und starten Sie den Einzellauf erneut.

5. Holen Sie sich den Testerbericht

Und die Daten zu den angewandten Intervallen im Protokoll.
Amount of Delete Intervals = 1 00:00:00 - 10:07:47 : Profit = 4279.00, Total = 181, PF = 2.02, Mean = 23.64, DD = 834.00, RF = 5.13 11:06:12 - 23:59:59 : Profit = 17349.00, Total = 768, PF = 1.95, Mean = 22.59, DD = 933.00, RF = 18.59 SUMMARY: 00:00:00 - 23:59:59 : Profit = 0.00, Total = 0, PF = Max, Mean = 0.00
Zusammenfassend alle Ergebnisse VOR und NACH dem besten Intervall + detaillierte Daten (addierte maximale Absenkung und Erholungsfaktor - per Saldo) für jedes Teilintervall des besten Intervalls.
Sie können die Bibliothek über diesen Berater auschecken.
Was soll das heißen?
'OnTester' - function already defined and has body BestInterval.mqh 504 8
lässt sich nicht kompilieren
Wie meinen Sie das?
lässt sich nicht kompilieren.
Was haben Sie getan?
Was haben Sie gemacht?
Ich habe noch nichts getan, ich versuche, diesen Code zu kompilieren:
#include <MT4Orders.mqh> // https://www.mql5.com/de/code/16006 #define VIRTUAL_TESTER // Ausführung in einer virtuellen Handelsumgebung #define BESTINTERVAL_ONTESTER // Das Optimierungskriterium ist der Gewinn des besten Intervalls. #include <fxsaber\Virtual\Virtual.mqh> // https://www.mql5.com/de/code/22577 #include <fxsaber\BestInterval\BestInterval.mqh> // https://www.mql5.com/de/code/22710 #include <..\Experts\fxsaber\TesterEA\TesterEA.mq4>
ohne Virtual kompiliert er,
ohne BestInterval kompiliert er auch,
aber es lässt sich nicht zusammen kompilieren.
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
BestInterval:
Eine Bibliothek zur Berechnung des besten Handelsintervalls.
Autor: fxsaber