Ist es möglich, irgendeine Funktion des "mql code"-Postings in diesem Forum zu erstellen? - Seite 3

 

Und dieser Beitrag darüber, wie man Nullabweichungen findet/behebt: https://www.mql5.com/en/forum/general

 

Wenn der Makler eine weitere Ziffer hinzufügt?

https://www.mql5.com/en/forum/179191

 

Ungewöhnlicher Fehler

Hallo Leute,

Ich habe einen EA kodiert und bin auf einen ungewöhnlichen Fehler gestoßen. Also, ich möchte Ihre Hilfe mit diesem Fehler auf MT4, die ich glaube, einige von Ihnen, in all Ihrer Erfahrung, kann bereits die gleiche konfrontiert haben.

Den gesamten EA zu lesen ist vielleicht unpraktisch, der Quellcode ist sehr groß.

Nach erfolgreicher Kompilierung, im Tester, meldet das MT4 Journal folgenden Fehler

Zeit: 2011.01.28 23:35:36

Meldung: 2007.07.13 00:00 InterCandles EURUSDFXF,H4: Stack-Überlauf.

Selbst Erhöhung der Stackgröße in den Himmel über

#Eigenschaft stacksize 167692160

die, glaube ich, 16MB Speicher zuweist, bleibt der Fehler bestehen.

Hat jemand das gleiche Problem der"Stack Overflow" in der Tester konfrontiert, oder kann darauf hinweisen, ob das Problem MT4 intern ist, oder in der EA (möglicherweise in Array, verschachtelte Deklarationen, zu große ex4-Datei, etc)?

Ich danke Ihnen für Ihre Hilfe und entschuldige mich dafür, dass ich Ihre Zeit in Anspruch genommen habe.

Ich danke Ihnen.

 

Lösung des Problems

Nun, bevor jemand antwortet, habe ich die Lösung gefunden.

Vor der Verwendung der Funktion, kurz nachdem der Tester den EA geladen hat - der die angehängte Bibliothek verlinkt -, wird die Meldung "stack overflow" im Journal angezeigt.

Das Problem wurde bei der Funktion mit dem Namen "power" in der angehängten Datei gefunden. Meine Schlussfolgerungen sind die folgenden:

1) Sicherlich gibt es kein Problem mit dem Namen; keine MQL-Funktionskollision in der Symboltabelle des EX4. Andere Bezeichnungen wurden getestet.

2) Offenbar wurde keine Grenze der Funktionen erreicht. Weitere Funktionen wurden nach dem Entfernen der problematischen Funktion hinzugefügt und der Fehler trat nicht auf. Funktioniert nur durch Entfernen dieser Funktion, nicht nur durch Aufheben der Verknüpfung in der EX4-Datei durch den MT4-Compiler.

3) Die Rekursion wird über viele Aufrufe ausgeführt und die Ergebnisse werden auf dem Stack abgelegt. Der Stapel wächst linear asymptotisch, wenn das Argument "Exponent" exponentiell wächst. Potenziell kann der Stapel seine Grenze erreichen und überlaufen. Der Fehler "Stack Overflow" tritt unabhängig von der Ausführung dieser Funktion auf.

Daher vermute ich, dass der MT4-Compiler über eine Vorrichtung zur Erkennung von [einigen Klassen von] Rekursionen verfügt, die in der Sprache nicht erlaubt sind, um einen potenziellen Stack-Überlauf während der EA-Ausführung zu vermeiden.

Dateien:
Grund der Beschwerde: