Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 1264
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 der Struktur
STRUCT_POSITION
Struktur enthält Methode
GetCurrentPositionProperty(void)
die die Elemente der Struktur berechnet und ihnen Werte zuweist. Definieren Sie den Körper der Methode außerhalb der Struktur. Verwenden Sie dazu die Operation der Kontextauflösung (::).
In OnTick() rufen wir die Funktion auf:
void OnTick() { //--- STRUCT_POSITION.GetCurrentPositionProperty(); }
Und hier erhalten wir einen Fehler:
'.' - name expected eSower_and_Gather_5.mq5 69 19
Ich weiß nicht, wo der Fehler liegt, bitte helfen Sie mir.
'.' - Name erwartet eSower_and_Gather_5.mq5 69 19
Wie lautet Zeile 69 19? Bitte veröffentlichen Sie die Codezeile 69 und geben Sie an, wo sich die Position 19 befindet. Es wird sofort klar, wo der Fehler liegt.
Wie lautet Zeile 69 19? Buchen Sie die Codezeile 69 und geben Sie an, wo sich die 19. Stelle befindet. Es wird sofort klar, wo der Fehler liegt.
STRUCT_POSITION.GetCurrentPositionProperty();
Sie ist im obigen Beitrag rot hervorgehoben. Ich danke Ihnen für Ihre prompte Antwort.
Wie lautet Zeile 69 19? Buchen Sie die Codezeile 69 und geben Sie an, wo sich die 19. Stelle befindet. Es wird sofort klar, wo der Fehler liegt.
Dies ist ein Punkt, der den Zugang zu einer Funktion ermöglichen muss, die ihrerseits den Strukturkontext verwendet. Aber ich verstehe nicht, warum es nicht funktioniert.
Sie ist im obigen Beitrag rot hervorgehoben. Ich danke Ihnen für Ihre prompte Antwort.
STRUCT_POSITION' ist ein DATA TYPE. Sie müssen eine Variable mit diesem Typ erstellen und dann VARIABLE.GetCurrentPositionProperty() aufrufen;
Dies ist der Punkt, der den Zugriff auf die Funktion ermöglichen soll, die wiederum den Kontext der Struktur nutzt, so wie ich es in den Lehrbüchern verstanden habe. Aber warum es nicht funktioniert, kann ich nicht verstehen.
Code: (nur Aufruf einer Funktion - EA-Funktion, nicht einer Strukturmethode - das macht mehr Sinn)
STRUCT_POSITION' ist ein DATA TYPE. Sie müssen ein Objekt dieses Typs erstellen und dann OBJECT.GetCurrentPositionProperty() aufrufen;
Ich habe es ausprobiert. Ein solches Objekt wird erstellt und direkt nach der Deklaration der
StrPositionArray[].
Wenn Sie es zu OnTick hinzufügen
erhalten wir einen Fehler:
']' - Ausdruck erwartet eSower_and_Gather_5.mq5 69 21
Code: (nur Aufruf einer Funktion - EA-Funktion, nicht einer Strukturmethode - das macht mehr Sinn)
Die Verwendung von :: war also eine sinnlose Idee?
Warum haben Sie dann die Funktion
im Inneren der Struktur? Es würde die Struktur ausfüllen, ohne dass eine Füllung darin ist, nicht wahr? Bitte klären Sie mich auf, ich bin verwirrt, vielleicht ist dies eine veraltete Funktion, ich sollte sie vergessen?
Die Verwendung von :: war also Zeitverschwendung?
Warum sollten Sie dann eine Funktion schreiben
im Inneren der Struktur. Ich meine, sie wird die Struktur auch ohne sie perfekt ausfüllen. Bitte klären Sie mich auf, ich bin verwirrt, vielleicht ist dies eine veraltete Idee, die vergessen werden sollte.
Kopieren und Einfügen. Nach dem Kopieren und Einfügen bleibt eine Zeile übrig.
Sie sollte wie folgt aussehen (es gibt keine Methoden innerhalb der Struktur)
Kopieren und Einfügen. Nach dem Kopieren ist eine Zeile übrig geblieben.
Sie sollte wie folgt aussehen (es gibt keine Methoden innerhalb der Struktur)
Nun, ich habe so viel Zeit mit dem Unterricht verbracht. Obwohl es für MT4 war, wurde es dort als Trick präsentiert, daher hier ein Auszug aus dem Text:
Die Struktur verfügt über eine Refresh()-Methode, die Werte berechnet und den Elementen der Struktur zuweist. Definieren wir den Körper der Methode außerhalb der Struktur. Zu diesem Zweck verwenden wir die Operation der Kontextauflösung (::). Der Kontext ist ein Deskriptor (Name) der Struktur:
Beachten Sie, dass wir uns im Hauptteil der Methode auf Elemente der Struktur beziehen, ohne einen Punkt zu verwenden, da wir die Operation der Kontextauflösung verwendet haben. Numerische Felder werden durch ZeroMemory() mit dem Schlüsselwort this auf Null gesetzt, bevor sie am Anfang des Methodenkörpers aktualisiert werden, so dass die Struktur einen Verweis auf sich selbst übergibt.
Der EA-Hauptcode innerhalb des OnTick()-Handlers sieht nun wie folgt aus