Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 1030

 
abeiks:

Hallo.

Ich versuche gerade, die globalen Variablen zu verstehen. Jetzt gibt es ein Problem, und ich kann es nicht lösen. Wenn ich eine globale Variable aus dem Indikator lösche, erhält der Expert Advisor weiterhin diese Variable. Wie kann man dieses Problem lösen?

und wie kann man sie löschen?

 
valenok2003:

Können Sie mir sagen, was der Fehler in dieser Zeile ist? vor kompiliert ohne Fehlermeldungen, jetzt - '{' - Ausdruck erwartet

Vielen Dank im Voraus

Arr_Tickets[MAX_NUM_ORDER][2] = {0,0, ,0,0};


Zählen Sie die Kommas.
 
AlexeyVik:

Zählen Sie die Kommas.
Die Kommas sind korrekt, es ist die Notation, dass unabhängig von der Anzahl der Elemente, die das Array enthält, alle mit Nullen gefüllt werden.
 
abeiks:

Hallo.

Ich versuche gerade, die globalen Variablen zu verstehen. Jetzt gibt es ein Problem, und ich kann es nicht lösen. Wenn ich eine globale Variable aus dem Indikator lösche, erhält der Expert Advisor weiterhin diese Variable. Wie kann ich dieses Problem lösen?

Drücken Sie F3 im Terminal und löschen Sie diese Variable manuell. Sie wird einmal erstellt und befindet sich in der Umgebung - der Expert Advisor liest sie von dort. Oder habe ich Sie vielleicht nicht richtig verstanden? Sie haben gerade die Erstellung einer globalen Variable des Terminals im Indikatorcode selbst gelöscht, aber sie wurde vorher von diesem Indikator erstellt?
 
artmedia70:
Drücken Sie F3 im Terminal und löschen Sie diese Variable manuell. Sie wird einmal erstellt und befindet sich in der Umgebung - von dort liest sie der EA.
Ich danke Ihnen! Das wusste ich nicht.
Wie kann ich dies im Expert Advisor selbst überprüfen und löschen? Zum Beispiel, wenn ich den Indikator aus Versehen schließe, wird der EA immer die letzte Variable erhalten und wenn es ein Signal gibt, um Positionen zu öffnen...
 
valenok2003:

a Wie kann man löschen?


Das habe ich getan, aber es ist nicht richtig:

 if (!GlobalVariableCheck("Test_1"))
GlobalVariableDel("Test_1"); 
 
valenok2003:
Die Kommas sind korrekt, es handelt sich um die Notation, die besagt, dass unabhängig davon, wie viele Elemente ein Array enthält, alle mit Nullen gefüllt werden.
Nun, ich weiß nicht, vielleicht in C++, das ich nie studiert habe, aber mql ist nur C-ähnlich. Und zweitens können Sie die Dimension des Arrays nicht auf eine Variable setzen, auch wenn in Ihrem Beispiel MAX_NUM_ORDER keine Variable sein mag...
 
valenok2003:

Können Sie mir sagen, was der Fehler in dieser Zeile ist? vor kompiliert ohne Fehlermeldungen, jetzt - '{' - Ausdruck erwartet

Vielen Dank im Voraus

Arr_Tickets[MAX_NUM_ORDER][2] = {0,0, ,0,0};

Es wird eine Zeile bzw. eine Spalte des Arrays ausgewählt, in die wir einen bestimmten Wert schreiben können, d.h. der Eintrag sollte derselbe sein wie bei einer gewöhnlichen Variablen, aber um alle Werte zurückzusetzen

ArrayInitialize(Arr_Tickets, 0);

 
abeiks:

Das habe ich getan, aber es ist nicht richtig:

if (!GlobalVariableCheck("Test_1"))
GlobalVariableDel("Test_1"); 

Was steht dort?

Wenn es keine globale Variable namens Test_1 gibt, löschen Sie sie...

 
abeiks:
Ich danke Ihnen! Das wusste ich nicht.
Und wie kann man eine solche Prüfung vornehmen und sie im Expert Advisor selbst löschen? Wenn ich z.B. den Indikator versehentlich schließe, wird der Expert Advisor diese letzte Variable die ganze Zeit erhalten und wenn es ein Signal zum Öffnen von Positionen gibt...
Sollte das unbeabsichtigte Löschen des Indikators die von diesem Indikator angelegten globalen Variablen löschen, sollte das Löschen dieser globalen Variablen in der OnDeinit()-Funktion des Indikators vorgeschrieben werden.
Gleichzeitig muss sichergestellt werden, dass es sich nicht um einen Wechsel des Zeitrahmens handelt, sondern um die Löschung des Indikators aus dem Diagramm.