OnDeinit in Indikatoren - Seite 3

 

Führen Sie zu Beginn von OnDeinit einen Print aus und sehen Sie sich nach dem Schließen des Client-Terminals das Expert-Protokoll an, um sicherzustellen, dass OnDeinit aufgerufen wurde!

Hier ist Ihr Fehler

for(int i=ObjectsTotal()-1;i>=0;i--)

Sie kennen die Objekte, die Sie selbst geschaffen haben, ganz genau.

Behalten Sie ihre Namen und löschen Sie sie ohne Bezug auf ObjectsTotal und ObjectName

PS das neue Build hat eine Funktion zum Löschen einer Gruppe von Objekten nach Präfix hinzugefügt. Es wird Ihnen helfen, wenn Sie Ihre Objekte mit demselben eindeutigen Präfix benennen

 
stringo:

Drucken Sie am Anfang von OnDeinit und nach dem Schließen des Client-Terminals das EA-Protokoll aus und stellen Sie sicher, dass OnDeinit aufgerufen wurde!

Hier liegt Ihr Fehler

Sie kennen die Objekte, die Sie selbst geschaffen haben, ganz genau.

Speichern Sie ihre Namen und löschen Sie sie ohne Bezug auf ObjectsTotal und ObjectName

PS Mit dem neuen Build wurde eine Funktion zum Löschen einer Gruppe von Objekten nach Präfix hinzugefügt. Es wird Ihnen helfen, wenn Sie Ihre Objekte mit demselben eindeutigen Präfix benennen

Ich hatte bereits die Gelegenheit zu testen, wie das Löschen einer Gruppe von Objekten nach Präfix funktioniert. Großartig, aber selbst der kompilierte Code in früheren Builds funktioniert nicht. Daher kann es vorerst nur für persönliche Zwecke genutzt werden. Wir müssen die Nutzer nicht zwingen, die Software zu aktualisieren. Viele wissen nicht einmal, wie sie aktualisieren können, bis sie das Update auf den DC-Server hochladen.
 
stringo:

Eigentlich wird deinit in allen Programmen aufgerufen, wenn das Terminal geschlossen wird.

Es gibt sogar einen speziellen Code für die Ursache der Deinitialisierung. REASON_CLOSE

Und werden die Indikatorpuffer zurückgesetzt oder nicht?
 
eevviill:
Und werden die Indikatorpuffer zurückgesetzt oder nicht?
Was bedeutet "Zurücksetzen der Indikatorpuffer"?
 
eevviill:
Und werden die Indikatorpuffer zurückgesetzt oder nicht?
Alles wird zurückgesetzt. Schließlich schließt sich das Terminal )))
 
stringo:

Das Problem mit Ihrem Indikator ist gelöst.

Die Sache ist die: Der Indikator wird nicht nur auf die Ankunft der Ticks berechnet, sondern auch auf die erste Zeichnung und auf die Ankunft der fehlenden Geschichte.

1. Ein neuer Tick kommt an - der Indikator wird berechnet.

2. Die fehlende Historie trifft ein, die die Lücke zwischen den letzten Daten vom letzten Terminalstart und dem letzten Tick schließt. Der Indikator wird berechnet. Aber gleichzeitig gibt es keinen neuen Zustand der Bar!

Um dieses Problem zu lösen, müssen Sie die Anzahl der Balken überprüfen. Ungefähr so

EMPTY_VALUE-Pufferinitialisierungsblock in Inite einfügen. Das Problem bleibt bestehen.
 

Der Pufferinitialisierungsblock wurde sowohl bei init als auch bei deinit mit einem leeren Wert versehen. Das Ergebnis ist das gleiche. Das heißt, sie existiert nicht.

Ich warte auf die Kommentare der Entwickler.

 
Scriptong:
Alles wird auf Null zurückgesetzt. Schließlich schließt sich das Terminal )))
Ja, ja, ja.
 
eevviill:
Hm. Der Pufferinitialisierungsblock EMPTY_VALUE wird in Inite gestellt.

Und warum? Inite-Puffer dürfen noch nicht zugewiesen werden.

Was ist, wenn der Puffer stark gepuffert ist (ein neuer Stapel historischer Daten ist eingetroffen)?

In solchen Fällen wird die Initialisierung der Puffer vor der Berechnung des Indikators durchgeführt, wenn klar ist, dass der gesamte Indikator neu berechnet wird.

 
stringo:

Und warum? Inite-Puffer dürfen noch nicht zugewiesen werden.

Und was ist, wenn der Puffer sehr groß ist (ein neuer Stapel historischer Daten kam)?

In solchen Fällen wird die Initialisierung der Puffer vor der Berechnung des Indikators durchgeführt, wenn klar ist, dass der gesamte Indikator neu berechnet werden wird

OK. Das Nullsetzen funktioniert auch in deinit nicht.