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

 
Guten Tag, 5 Kopeken Frage))) Können Sie mir bitte sagen, was das "&"-Zeichen bei der Übergabe an eine Funktion bedeutet? Beispiel: int determineSection_D1(int & askSection_D1,int & bidSection_D1) ? Ich danke Ihnen.
 
rabanik:    Gut ... auf einen Schlag ... was bedeutet das ... "&" bei derÜbergabe an eine Funktion?

Klicken Sie mit der linken Maustaste auf das Bild, um es zu vergrößern, oder klicken Sie mit der rechten Maustaste und speichern Sie es.

MetaEditor bietet Hilfe für die Sprache MQL-4. Es ist sinnvoll, die gesamte Hilfe zu lesen oder sie zumindest durchzugehen

 

Guten Tag.

Ich habe eine Schaltfläche auf dem Bildschirm erstellt und möchte eine Offline-Diagrammöffnung an diese Schaltfläche anhängen. Welche Funktion kann ich verwenden, um den Pfad zum gewünschten Offline Chart anzugeben?

 
Guten Tag, wie können wir das Diagramm automatisch alle 10 Sekunden aktualisieren lassen, so dass Sie nicht jedes Mal die Schaltfläche "Aktualisieren" drücken müssen?
 
zert: die Aktualisierung des Diagramms
voidOnTimer() // Bei Timer WindowRedraw(); // Das Fenster wird neu gezeichnet
 
LRA:
voidOnTimer() // Bei Timer WindowRedraw(); // Fenster neu zeichnen
Ich verstehe nicht, wo ich das alles hinschreiben soll. Können Sie mir das auf einem Screenshot zeigen?
 
zert:   wo zu schreiben
in den von Ihnen verwendeten EA einfügen. Wenn es keins gibt, müssen Sie eines schreiben. Warum ein neuer Spitzname?
 
LRA:

Klicken Sie mit der linken Maustaste auf das Bild, um es zu vergrößern, oder klicken Sie mit der rechten Maustaste und speichern Sie es.

Der MetaEditor bietet Hilfe für die Sprache MQL-4. Es ist sinnvoll, alles zu lesen oder zumindest durchzusehen.

Vielen Dank für die Antwort. Ich verstehe es nicht bis zum Ende. Ich habe zum Beispiel die Funktion SendOrder(int &Ticket, int Type ,double LT ,double OP=-1 ,int ModeSL=0) mit Parametern. Wenn ich zum Beispiel im Code versuche, in einer Bedingung darauf zu verweisen, erhalte ich die Fehlermeldung "parameter passed as reference, variable".

Bitte um Rat, was zu tun ist? Ich danke Ihnen.

 
rabanik:    wenn Sie auf .... gehen Fehler "Parameter als Referenz übergeben, Variable".

Wenn der Parameter ohne & nach Wert übertragen wird, was zuverlässiger ist. Der aktuelle Parameter wird kopiert und eine Kopie an die Funktion übergeben. Die Änderungen, die an den Parametern innerhalb der Funktion vorgenommen werden, bleiben innerhalb der Funktion. Der aktuelle Parameter an der Stelle des Funktionsaufrufs bleibt unverändert. Dabei spielt es für die Funktion keine Rolle, ob ihr eine Konstante oder eine Variable übergeben wird, da in jedem Fall nur eine Kopie des Parameters die Funktion erreicht. Dies geschieht, um die Zuverlässigkeit zu erhöhen und die Variablen vor zufälligen Änderungen innerhalb einer Funktion zu schützen.

Bei der Übergabe des Parameters per Referenz wird das Symbol & angegeben, was bedeutet, dass die Referenz, also die Adresse der Variablen selbst, an die Funktion übergeben wird. Und die Funktion kann diese Variable ändern, und diese Änderungen wirken sich auf den Wert der Variablen innerhalb der Funktion aus, die diese Funktion aufgerufen hat. Nun, damit eine Funktion den Wert eines Parameters ändern kann, muss es sich um eine Variable handeln. Der Übersetzer hat wahrscheinlich geschrieben: parameter passed as reference, variable expected = parameter by reference must be a variable

Im Zweifelsfall habe ich wieder die Funktion SendOrder(int &Ticket, int Type ,double LT ,double OP=-1 ,int ModeSL=0) stattdessen schreibe ich besser , wie die Funktion aufgerufen wurde. Es scheint, dass Sie eine Zahl als ersten Parameter übergeben, was keinen Sinn macht. Mit diesem Parameter versucht Ihre Funktion, die Nummer zurückzugeben, unter der der Auftrag in der Datenbank des Brokers platziert wurde. Es ist klar, dass dies eine Variable sein sollte. Im Zweifelsfall sollten Sie sich die Funktion ansehen. Und die Funktion ist TRUE, um die übergebene Zahl zu ändern, sie will eine Variable an dieser Stelle.

 

Wäre es nicht einfacher, dies anhand eines Beispiels zu verstehen?

void OnStart()
{
 int a = 5;
 int b = 7;
 int c = f(a, b);
 Print("a = ", a, ": b = ", b": c = ", c);
}

int f(int k, int n)
{
 k += 2;
 return(k+n);
}

//результат a = 5: b = 7: с = 14

Die andere Möglichkeit

void OnStart()
{
 int a = 5;
 int b = 7;
 int c = f(a, b);
 Print("a = ", a, ": b = ", b": c = ", c);
}

int f(int &k, int n)
{
 k += 2;
 return(k+n);
}

//результат a = 7: b = 7: с = 14

Das ist der Unterschied.