Hallo zusammen,
ich habe das Problem, dass meine Optimierung viel zu lange dauert. Dies möchte ich beschleunigen, indem ich zum Beispiel meine Equitiy Kurve während der Optimierung abfrage. Falls diese nach einem bestimmten Zeitraum nicht den gewünschten Schwellwert erreicht hat, möchte ich diesen Schritt der Optimierung überspringen, sodass der Tester zu dem nächsten Parameter set springt, ohne unnötig in der Pampa weiter zu rechnen.
Grob gesagt möchte ich:
Was mir als Pfusch Lösung einfällt, wäre, dass ich bei erreichen des //...JumpToNextParameterSet.. ich dem EA einfach verbiete, durch mein programm durchzulaufen, sozusagen, die Ontick() blockiere.
Grobgesagt so:
Dennoch wäre dies nur eine Notlösung, da der EA quasi immernoch jeden Tick durchrechnet, diesmal nur ohne den Rattenschwanz innerhalb der OnTick().
Ein einfacher Tipp:
OnTick() muss so schlank wie möglich werden.
Muss wirklich jeden Tick alles berechnet werden ? OnTimer nutzen.
In der Beschreibung von ExpertRemove (https://www.mql5.com/de/docs/common/expertremove) steht:
Hinweis
Expert wird nicht sofort beim Aufuf der Funktion ExpertRemove() gestoppt, es wird erst die Flagge für Brechen der Expertarbeit eingestellt. D.h. jedes folgendes Ereignis wird vom Experten schon nicht verarbeitet, OnDeinit() wird aufgerufen werden und Expert wird ausgeladen werden und vom Chart entfernt werden.
Der Aufruf von ExpertRemove() im Strategietester aus der Funktion OnInit() bricht den Test des aktuellen Parametersatzes ab. Ein solches Ende gilt als Initialisierungsfehler.
Wenn ExpertRemove() im Strategietester nach erfolgreicher Initialisierung eines EA aufgerufen wird, wird der Test normal mit dem Aufruf von OnDeinit() beendet und mit OnTester() abgeschlossen. In diesem Fall bleiben die gesamte Handelsstatistik und das Optimierungskriterium erhalten.
![Dokumentation zu MQL5: Ereignisbehandlung / OnDeinit Dokumentation zu MQL5: Ereignisbehandlung / OnDeinit](https://c.mql5.com/36/61/dokumentation-zu-mql5-ereignisbehandlung__2.png)
- www.mql5.com
![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- 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.
ich habe das Problem, dass meine Optimierung viel zu lange dauert. Dies möchte ich beschleunigen, indem ich zum Beispiel meine Equitiy Kurve während der Optimierung abfrage. Falls diese nach einem bestimmten Zeitraum nicht den gewünschten Schwellwert erreicht hat, möchte ich diesen Schritt der Optimierung überspringen, sodass der Tester zu dem nächsten Parameter set springt, ohne unnötig in der Pampa weiter zu rechnen.
Grob gesagt möchte ich:
Was mir als Pfusch Lösung einfällt, wäre, dass ich bei erreichen des //...JumpToNextParameterSet.. ich dem EA einfach verbiete, durch mein programm durchzulaufen, sozusagen, die Ontick() blockiere.
Grobgesagt so:
Dennoch wäre dies nur eine Notlösung, da der EA quasi immernoch jeden Tick durchrechnet, diesmal nur ohne den Rattenschwanz innerhalb der OnTick().