Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Ich kann nicht verstehen, ob es möglich ist, dieses Problem mit Testgeschwindigkeit zu lösen, ohne MT5 Sprachfunktionen zu verwenden. Das Problem erschien vor langer Zeit, aber meine Hände bekam es nur jetzt.
Build 3802, __MT4ORDERS__ "2022.07.20"
Bedingte Funktion, die im Expert Advisor bei jedem Tick aufgerufen wird. Test im mt5 Strategie-Tester.
DieAnzahl der Geschäfte ist etwa 26 Tausend. Die Testzeit beträgt etwa 1 Stunde 10 Minuten.
Entfernen wir die Funktion aus dem Code, beträgt die Testzeit etwa 17 Minuten.
Ich schreibe die gleiche Funktion mit der MT5-Funktionalität neu:
Die Testzeit beträgt etwa 18 Minuten.
Ich setze die Bibliothek auf __MT4ORDERS__ Version "2020.01.12" zurück und kompiliere den Expert Advisor in Build 2980.
Die Zeit des Expert Advisors mit der Funktion get_last_order_close_time beträgt etwa 20 Minuten.
Ich kann nicht erkennen, ob dieses Problem der Testgeschwindigkeit ohne die Verwendung der MT5-Sprachfunktionen gelöst werden kann.
Ist das Endergebnis in allen drei Fällen das gleiche?
Ja, natürlich.
Das Problem trat nach einem weiteren Terminal-Update auf. Ich habe Ihre Bibliothek nicht geändert und den Bot im alten Terminal kompiliert, damit er wie zuvor funktioniert.
Das Problem trat nach einem weiteren Update des Terminals auf. Ich habe Ihre Bibliothek nicht geändert und den Bot im alten Terminal kompiliert, damit er wie zuvor funktioniert.
Ich habe einige Nachforschungen angestellt.
Expert Advisor.
Bei jedem inMod-Tick wird eine Position geöffnet und geschlossen. Und bei jedem Tick wird die OrderCloseTime berechnet.
OnTester dient als Kriterium zur Überprüfung der Identität der Ergebnisse bei verschiedenen Konfigurationen.
Entsprechende Funktionen der Arbeit mit der Historie.
Methodik.
Ein einziger Lauf mit den Einstellungen wie in der Quelle (inMod = 5).
28K Transaktionen, fast vier Sekunden. Da wir die Leistung im Optimierungsmodus messen müssen, wurden alle folgenden Leistungsmessungen auf diese Weise durchgeführt.
Mit obligatorischer Neukompilierung vor der Ausführung und nur einem aktivierten Agenten für die sequenzielle Ausführung von Durchläufen.
Leistung.
Leistungstabelle (Ausführungszeit in Millisekunden) für b3815 und b2958.
MT4Orders vom 20.07.2022 wurde überall verwendet.
Schlussfolgerungen.
Die Testzeit beträgt etwa 1 Stunde und 10 Minuten.
Ich setze die Bibliothek auf __MT4ORDERS__ Version "2020.01.12" zurück und kompiliere den Expert Advisor in Build 2980.
Die Arbeitsdauer des Expert Advisors mit der Funktion get_last_order_close_time beträgt etwa 20 Minuten.
Testen Sie den obigen Code mit einer alten Version der Bibliothek (ich habe sie nicht).
Wenn es einen Unterschied in der Leistung, senden Sie es an PM.
Ist es möglich, dass es ein Speicherleck oder eine mehr als notwendige Speichernutzung gibt? Vielleicht in this.tickets oder in this.amount (::ArrayResize) oder vielleicht irgendwo anders?
Die Größe der Arrays wird nur mit der Zeit erhöht. Ist das ein Muss? Ist es möglich, sie zu leeren oder vielleicht nicht alle vorherigen Trades zu laden?
Ist es möglich, dass es ein Speicherleck oder eine mehr als notwendige Speichernutzung gibt? Vielleicht in this.tickets oder in this.amount (::ArrayResize) oder vielleicht irgendwo anders?
Die Größe der Arrays wird nur mit der Zeit erhöht. Ist das ein Muss? Ist es möglich, sie zu leeren oder vielleicht nicht alle vorherigen Trades zu laden?
Die Bibliothek speichert die historischen Daten nicht vollständig im Cache. Eine Speicherknappheit ist nur theoretisch möglich, aber nicht in der Praxis.
Schreiben Sie ein Skript, das den gesamten Handelsverlauf mit Hilfe der Bibliothek durchsucht, und sehen Sie, wie viel Speicher verbraucht wird.
Die Bibliothek speichert die Verlaufsdaten nicht vollständig im Cache. Eine Speicherknappheit ist nur theoretisch möglich, aber nicht in der Praxis.
Schreiben Sie ein Skript, das den gesamten Handelsverlauf mithilfe der Bibliothek durchsucht, und sehen Sie, wie viel Speicher verbraucht wird.
Im Strategietest verbraucht die Ea 25 GB pro Kern.
Bearbeiten: es ist ein 1 Jahr Zeitrahmen Test, also nicht viel.Bei den Strategietests verbraucht das Ea 25 GB pro Kern.
edit: es ist ein 1 Jahr Zeitrahmen Test, also nicht viel.Die Bibliothek (MT4Orders.mqh) verbraucht nicht diese Menge an Speicher. Sie können zum Beispiel diesen EA ausführen, um sich selbst davon zu überzeugen.
Wahrscheinlich arbeiten Sie falsch mit Indikatoren: Sie erstellen neue Indikator-Handles, löschen aber nicht die alten.