[ARCHIV!] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen - 4. - Seite 198
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
In einem Indikator stieß ich auf die folgende Konstruktion:
int R; //Variable wird auf globaler Ebene deklariert
Ich habe die gleiche Variable mit dem Symbol & in einer benutzerdefinierten Funktion wie folgt gefunden
void Funktion(int A, int B, int &R) {R = A*B}
Kann mir jemand sagen, warum das so gemacht wird und wo ich das im Detail nachlesen kann?
In einem Indikator stieß ich auf die folgende Konstruktion:
int R; //Variable wird auf globaler Ebene deklariert
Ich habe die gleiche Variable mit dem Symbol & in einer benutzerdefinierten Funktion wie folgt gefunden
void Funktion(int A, int B, int &R) {R = A*B}
Kann mir jemand sagen, warum das so gemacht wird und wo ich mehr darüber lesen kann?
Das Tutorial ist hier, und google rules!
Tutorial hier und google rules!
Ich verstehe nicht, was sich ändern würde, wenn es so wäre:
void Funktion(int A, int B) {R = A*B}
Die R-Variable wird global deklariert und ist innerhalb der Funktion ohnehin sichtbar. In welchen Fällen ist die Übergabe von Parametern per Referenz erforderlich?
Ich verstehe nicht, was sich ändern würde, wenn es so wäre:
void Funktion(int A, int B) {R = A*B}
Die R-Variable wird global deklariert und ist innerhalb der Funktion ohnehin sichtbar. In welchen Fällen ist die Übergabe von Parametern per Referenz erforderlich?
Lesen Sie das Lehrbuch, die Dokumentation, googeln Sie es, hier.
"Beim Aufruf der Swap-Funktion werden neue Variablen a und b erstellt und mit den Werten 3 und 5 belegt. Diese Variablen stehen in keinem Zusammenhang mit den Variablen p und q, und ihre Änderung hat keine Auswirkungen auf die Werte von p und q. Diese Methode der Parameterübergabe wird als Wertübergabe bezeichnet.
Damit eine Funktion die Werte der in anderen Funktionen deklarierten Variablen ändern kann, muss angegeben werden, dass es sich bei dem übergebenen Parameter nicht nur um einen konstanten Wert, sondern um eine Variable handelt; die Werte müssen per Verweis übergeben werden. Dazu müsste die Swap-Funktion wie folgt deklariert werden:
void swap(int & a, int & b)
Die Ampersands vor dem Variablennamen bedeuten, dass diese Variable keine lokale Variable ist, sondern ein Verweis auf die Variable, die beim Aufruf der Funktion als Parameter angegeben wird. Wenn Sie nun swap(p,q) aufrufen, sind die Variablen a und b gleichbedeutend mit den Variablen p und q, und wenn Sie ihre Werte ändern, ändern sich auch die Werte von p und q. Aber man kann eine Funktion nicht als swap(3,5) aufrufen, weil 3 und 5 Konstanten sind, und man kann Variablen nicht mit Konstanten gleichsetzen".
Lesen Sie die Anleitung, Dokumentation, Google, hier.
"Beim Aufruf der Swap-Funktion werden neue Variablen a und b erstellt und ihnen die Werte 3 und 5 zugewiesen. Diese Variablen stehen in keinem Zusammenhang mit den Variablen p und q, und eine Änderung dieser Variablen hat keine Auswirkungen auf die Werte von p und q. Diese Methode der Parameterübergabe wird als Wertübergabe bezeichnet.
Damit eine Funktion die Werte der in anderen Funktionen deklarierten Variablen ändern kann, müssen Sie angeben, dass es sich bei dem übergebenen Parameter nicht nur um einen konstanten Wert, sondern um eine Variable handelt, und Sie müssen die Werte per Referenz übergeben. Dazu müsste die Swap-Funktion wie folgt deklariert werden:
void swap(int & a, int & b)
Die Ampersands vor dem Variablennamen bedeuten, dass diese Variable keine lokale Variable ist, sondern ein Verweis auf die Variable, die beim Aufruf der Funktion als Parameter angegeben wird. Wenn Sie nun swap(p,q) aufrufen, sind die Variablen a und b gleichbedeutend mit den Variablen p und q, und wenn Sie ihre Werte ändern, ändern sich auch die Werte von p und q. Aber man kann eine Funktion nicht als swap(3,5) aufrufen, da 3 und 5 Konstanten sind und man Variablen nicht mit Konstanten gleichsetzen kann".
Danke für die Informationen
Das können Sie, aber Sie müssen den EA auf Vordermann bringen
Ja, ich verstehe das :) Es ist nur so, dass man oft eine Strategie ausprobiert, eine Testversion, nur um zu sehen, wie die Idee funktioniert. Manchmal zeigen sich die Fehler dort in einem ganz anderen Licht. Und Sie haben keine Zeit zu verlieren, wenn Sie es eilig haben, etwas zu schreiben und zu sehen.
Gibt es eine Möglichkeit, ihn zu schließen, so dass er nicht kopiert, was er in die Protokolldatei schreibt? Eine Frage dazu.
Das ist verständlich:) Oft probiert man einfach eine Strategie aus, eine Testversion, nur um zu sehen, wie die Idee funktioniert. Manchmal erscheinen die Fehler in einem ganz anderen Licht. Und Sie haben keine Zeit zu verlieren, wenn Sie es eilig haben, etwas zu schreiben und zu sehen.
Gibt es eine Möglichkeit, ihn einfach zu schließen, so dass er nicht kopiert, was er in die Protokolldatei schreibt? Eine Frage dazu.
Wie können Sie einem EA vertrauen, der fehlerhaft arbeitet?
Es braucht etwas anderes - die interne Variable des Programms, den Bezugspunkt für das Zeichnen des Indikators, zu ändern und dann die Linie neu zu berechnen und zu zeichnen, nachdem die Tastenkombination gedrückt wurde.
Warum will MT eigentlich keine Haken haben?
Danke für Ihr Verständnis!):