Schau, wie man Roboter kostenlos herunterladen kann
Finden Sie uns auf Telegram!
und werden Sie Mitglied unserer Fangruppe
Interessantes Skript?
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Hat Ihnen das Skript gefallen?
Bewerten Sie es im Terminal MetaTrader 5
Bibliotheken

BestInterval - Bibliothek für den MetaTrader 5

Ansichten:
1468
Rating:
(45)
Veröffentlicht:
2019.01.02 08:12
\MQL5\Include\fxsaber\BestInterval\
Files.mqh (0.85 KB) ansehen
Deal.mqh (2.28 KB) ansehen
Interval.mqh (3.49 KB) ansehen
\MQL5\Experts\fxsaber\
Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance

Die Marktmuster hängen von Intervallen innerhalb eines Tages oder einer Woche ab. Aus diesem Grund ist es sinnvoll, den EA-Handel zeitlich zu begrenzen.

Zum Beispiel gibt es Scalper EA, die gut im Handel mit Cross-Paaren während der asiatisch-amerikanischen Handelssitzung sind, oder Sie möchten Ihren EA regelmäßig während einer hohen Volatilität deaktivieren.


Das bedeutet, dass wir definieren sollten, wie wir die beste EA-Handelszeit finden. In der Regel wird ein solches Intervall basierend auf der Intuition eines algorithmischen Händlers oder durch den eingebauten Tester gewählt. Intuition hat nichts mit Strategie zu tun. Was den Einsatz des eingebauten Testers zur Lösung dieser Aufgabe betrifft, so bedeutet dies automatisch eine Erhöhung der Anzahl der Durchläufe um Größenordnungen, was zu einer Erhöhung der Optimierungszeit und -kosten (Cloud) führt. Und doch wird es etwas geben, das verbessert werden kann.


Manchmal hat man einen guten EA, aber seine positiven Eigenschaften sind verborgen, da es keinen Zeitfilter gibt. Wenn man ein geeignetes Handelsintervall für diesen EA finden könnte, könnte es als Grundlage für weitere Studien dienen.....


Umsetzung

Die Cross-Plattform Bibliothek erlaubt das schnelle und effiziente Auffinden des optimalen Intervalls für den EA.

Verwendungsbeispiel mit Kommentaren:

#include <MT4Orders.mqh> // https://www.mql5.com/de/code/16006

#include <fxsaber\BestInterval\BestInterval.mqh> // Berechnung des besten Handelsintervalls

void OnDeinit( const int )
{
  BESTINTERVAL BestInterval; // Erstellen eines Objektes zur Berechnung des besten Handelsintervalls
  
  BestInterval.Set(); // Festlegen der Handelshistorie
  
  const int AmountIntervals = 3; // Anzahl der zu übergehenden, ungeeigneten Zeitintervalle
  
  for (int i = 0; i < AmountIntervals; i++)
    if (BestInterval.DeleteWorseInterval()) // Wenn übergangen
      Print(BestInterval.ToString());       // Ausdruck der erhaltenen Handelsdaten
    else
      break;                                // Andernfalls: verlassen
}


Verwenden wir jetzt einmal die Bibliothek zusammen mit dem Scalper EA.


Scalper

Starten wir den Rund-Um-Die-Uhr Scalper im MT5-Tester. Wir sehen das Folgende

Beachten Sie das Log des einzigen Durchlaufs

Amount of Delete Intervals = 0
00:00:00 - 23:59:59 : Profit = 20121.00, Total = 1138, PF = 1.68, Mean = 17.68
SUMMARY: 00:00:00 - 23:59:59 : Profit = 20121.00, Total = 1138, PF = 1.68, Mean = 17.68

Das hier sind die Rohdaten - es wurde kein Intervall übergangen.


Schauen wir nun auf den nächsten Eintrag ins Log. Nach und nach werden die schwachen Intervalle übergangen.


Ein Intervall wurde übergangen:

Amount of Delete Intervals = 1
00:00:00 - 10:08:04 : Profit = 6830.00, Total = 203, PF = 3.10, Mean = 33.65
11:05:24 - 23:59:59 : Profit = 17086.00, Total = 819, PF = 1.93, Mean = 20.86
SUMMARY: 00:00:00 - 23:59:59 : Profit = 23916.00, Total = 1022, PF = 2.10, Mean = 23.40

Hervorgehoben sind die Handelsintervalle. Wie man sehen kann gibt es keinen Handel von 10-11. Daher wird dieses Intervall ausgelassen.


Zwei Intervalle werden übergangen:

Amount of Delete Intervals = 2
00:00:00 - 10:08:04 : Profit = 6830.00, Total = 203, PF = 3.10, Mean = 33.65
11:05:24 - 12:21:06 : Profit = 2767.00, Total = 112, PF = 2.46, Mean = 24.71
13:02:59 - 23:59:59 : Profit = 15915.00, Total = 664, PF = 2.17, Mean = 23.97
SUMMARY: 00:00:00 - 23:59:59 : Profit = 25512.00, Total = 979, PF = 2.36, Mean = 26.06


Insgeamt werden drei Intervalle übergangen:

Amount of Delete Intervals = 3
00:00:00 - 10:08:04 : Profit = 6830.00, Total = 203, PF = 3.10, Mean = 33.65
11:05:24 - 12:21:06 : Profit = 2767.00, Total = 112, PF = 2.46, Mean = 24.71
13:02:59 - 17:26:06 : Profit = 7476.00, Total = 348, PF = 1.98, Mean = 21.48
17:47:36 - 23:59:59 : Profit = 9640.00, Total = 288, PF = 3.31, Mean = 33.47
SUMMARY: 00:00:00 - 23:59:59 : Profit = 26713.00, Total = 951, PF = 2.57, Mean = 28.09


Man bemerke, wie sich die EA-Werte mit jedem übergangenem Intervall verbesserten.


Verwenden wir das nun als Filter für den EA

Wir können die beiden Diagramme, VOR und NACHHER, visuell vergleichen. Vielleicht wird jemand die passende GIF-Animation zur Verdeutlichung erstellen...

Dadurch haben sich die EA-Werte fast kostenlos deutlich verbessert: Wir haben so wenig Aufwand und Zeit wie möglich aufgewendet.


OnTester

Das obige Beispiel basierte darauf, dass nur zwei Zeilen in den ursprünglichen EA eingefügt wurden.

#define BESTINTERVAL_ONTESTER // Optimierungskriterium - Gewinn des besten Intervalls.
#include <fxsaber\BestInterval\BestInterval.mqh> // Berechnung des besten Handelsintervalls


Die markierten Zeilen erlauben es Ihnen, nichts anderes in den EA zu schreiben. Gleichzeitig wird auch das Kriterium der benutzerdefinierten Optimierung festgelegt, so dass der Optimierer nicht auf altmodische Weise nach guten Intervallen suchen muss. Das Kriterium liefert sofort das EA-Ergebnis eines gut berechneten Intervalls und zeigt das EA-Potenzial viel stärker als bei Verwendung der Standardoptimierung.


Um das erkannte Intervall nach der Berechnung anzuwenden, setzen Sie BestInteval Action = true in den Eingaben.



Zusammenfassung

Alle EAs sollten umfassend überprüft werden, einschließlich der Berechnung des besten Handelsintervalls. Daher ist dieses Tool ein Muss.

Es wäre sinnvoll, alle aktuellen, vergangenen und zukünftigen EAs mit dieser Suche nach der optimalen Handelszeit (zwei Zeilen s.o.) zu verbinden. Das vereinfacht die Entwicklung eines profitablen EAs erheblich oder verbessert die Robustheit eines bereits entwickelten EAs.


Eigenschaften

  • Es wird empfohlen, den Handel in erfassten Intervallen über die virtuelle Handelsumgebung zu aktivieren/deaktivieren.
  • Der Bibliotheksalgorithmus ist sehr schnell. Es kann einfach in Drittanbieter-Handelsanalysatoren für den gleichen Zweck implementiert werden.
  • Dies ist eine eigene Idee. Vielleicht gibt es bereits Analoges.
  • Ich hatte nicht genug Zeit, um Intervalle innerhalb der Woche einzuführen. Vielleicht kann ich kann sie in der Zukunft hinzufügen...
  • Die Bibliothek ist plattformübergreifend. Sie funktioniert mit MT4 und MT5.
  • Die Berechnung des besten Intervalls und dessen Anwendung im Tester erfolgt ohne Änderung des ursprünglichen EA-Quellcodes.


PS

Bitte teilen Sie Ihre Erfahrungen mit der Anwendung der Bibliothek BEFORE und AFTER (wie oben beschrieben) in Form von Screenshots und entsprechenden MT4/5 Single Pass Log Segmenten.

Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/22710

Price_Momentum_Oscillator Price_Momentum_Oscillator

Price Momentum Oszillator

Extreme EA Extreme EA

Der EA verwendet die Indikatoren iCCI (Commodity Channel Index, CCI) und zwei iMA (Moving Average, MA).

HLCrossSigForWPR_HTF HLCrossSigForWPR_HTF

Der Indikator HLCrossSigForWPR mit in den Eingabeparameter bestimmbarem Zeitrahmen.

RJTX_Matches_Smoothed_Alert RJTX_Matches_Smoothed_Alert

Der Signalindikator RJTX_Matches_Smoothed bietet Alarme, E-Mails und Push-Benachrichtigungen.