Fehler, Irrtümer, Fragen - Seite 2297
![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Danke, aber ich habe dort keine Antworten auf meine Fragen gefunden.
Ich verstehe nicht, warum der Destruktor nicht aufgerufen wird, wennA *a= new A;
https://www.mql5.com/ru/docs/basis/variables/object_live
Alle durch den Ausdruck pointer_object=newClass_nameerzeugten Objekte müssen anschließend durch den Operator delete(pointer_object) zerstört werden. Wenn diese Variable aus irgendeinem Grund nichtdurch den Löschoperator zerstört wurde, erscheint die entsprechende Meldung im Journal "Experten". Es ist möglich, mehrere Variablen zu deklarieren und sie alle demselben Objektzeiger zuzuweisen.
Ich bitte MQL, die Funktion OnTimer() zu prüfen.
Aus irgendeinem Grund funktioniert es nicht in Strategie-Tester für MT4 (keine Fehler, nur nichts innerhalb dieser Funktion ausgeführt wird), während es online ist OK.
Für MT5 funktioniert die Funktion sowohl im Tester als auch online.
Ich danke Ihnen!
In OnInit werden nur zwei Zahlen verglichen, und ein fehlerhafter Durchlauf benötigt mehr Zeit als ein vollständiger Durchlauf! Wie kommt das?
Lassen wir diesen Expert Advisor mit voller Optimierung laufen
Wir erhalten das Ergebnis der Arbeit von 8 Agenten
Hier ist unser Expert Advisor jetzt
Endlich, wie dieser hier
Zwei Ausgänge
Was den zweiten Punkt betrifft, so liegt eindeutig ein Fehler vor. Es ist zeitlich günstiger, einen Leerlauf durchzuführen, als aus OnInit herauszuspringen. Bitte korrigieren Sie dies, da sonst die Vorteile von Incorrect-Init und ExpertRemove fast vollständig verloren gehen.
Die Registerkarte "Favoriten" mit EAs/Indikatoren/Skripten und Konten wird erst nach dem Verlassen des Terminals gespeichert. Aus diesem Grund wird diese Registerkarte bei einem abnormalen Ausgang (Stromausfall) zurückgesetzt. Ist es möglich, sie zu speichern, wenn sie geändert wird?
Manchmal ist man sich darüber im Klaren, dass es sehr praktisch wäre, wenn Ordner zu den Favoriten hinzugefügt werden könnten.
Dann versuchen Sie es so:
Ergebnis:
1:ZEIGER_AUTOMATISCH
1:ZEIGER_DYNAMISCH
2:ZEIGER_DYNAMISCH
2:ZEIGER_AUTOMATISCH
Ich danke Ihnen! Das ist eine gute Lösung.
Aber es ist wahrscheinlich besser, wenn der Compiler nicht flucht:
Ist das ein Fehler oder was?
Wenn Sie eine Instanz einer Klasse mit new erstellen, wird der Destruktor nicht aufgerufen.
Ist es die einzige Lösung, eine spezielle Klasse für den Aufruf des Destruktors zu erstellen? Oder können wir auf sie verzichten?
Anlegen mit Neu und Löschen mit Löschen
Die Frage ist, delete in einen Destruktor zu packen, aber wenn man eine Instanz einer Klasse über new (A *a=newA ;) erzeugt, wird der Destruktor nicht aufgerufen.
Ist es möglich, und wenn ja, wie, in jedem ZigZag-Indikator die entsprechenden Werte der Preisextreme High und Low abzuleiten,
ihre stabile Bindung und ihre Nähe zu den geformten Ober- und Unterteilen gewährleisten?
Siehe Beispiel ausOBJ_TEXT
https://www.mql5.com/ru/docs/basis/variables/object_live
Ich danke Ihnen.
Das ist genau das, was hier steht.
Es handelt sich also nicht um einen Fehler, sondern um eine Funktion, die zu einem Teufelskreis führt.
Wenn ich den Prozess des Löschens eines dynamischen Objekts automatisieren möchte, wird der Destruktor nur bei delete aufgerufen, so dass es sinnlos ist, delete in den Destruktor selbst aufzunehmen.
Aber die Automatisierung kann durch eine weitere Instanz einer anderen Klasse implementiert werden, wie @A100hier vorgeschlagen hat.
Danke für den Hinweis. Ich bin schon ganz erschöpft vom Lesen und Probieren und Probieren und Lesen. Ich würde gerne ein funktionierendes Beispiel für den ZigZag sehen...
Wie auf meinem Avatar mit Zickzack, aber mit einer RECHTEN Bindung der oberen Extrema, denn die Bindung der unteren Extrema ist OK!
Der Weg der Bindung über k=(WindowPriceMax()-WindowPriceMin())/30 bei großen Fenstergrößenänderungen bringt nichts, ich wünsche mir etwas anderes...
ImOBJ_TEXT-Beispiel sind sowohl der obere als auch der untere Teil gebunden. Folgen Sie dem Link, führen Sie das Beispiel aus ...
Es handelt sich also nicht um einen Fehler, sondern um eine Funktion, die zu einem Teufelskreis führt.
Es wurde Ihnen bereits gesagt, dass die Verwendung von intelligenten Zeigern die Lösung für die Kontrolle von zugewiesenen, nicht verwaltbaren Ressourcen darstellt. Die vollständige Analogie zu C++.
Vielleicht liegt das Problem darin, dass die Lösung nicht auf dem Silbertablett serviert wurde, sorry.
Jeder kann "shared_ptr" in die Site-Suche eingeben und dem ersten Ergebnis folgen, es ist nicht schwer, ich empfehle dringend, es zu versuchen.