Fehler, Irrtümer, Fragen - Seite 2755
![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Compiler-Fehler, funktioniert in älteren Builds einwandfrei.
Ich habe einen solchen einfachen Expert Advisor (siehe Screenshot).
Dem Diagramm sind Diagrammobjekte überlagert.
Vor der gestrigen Aktualisierung des Terminals wurden die Handelsstufen in den Charts angezeigt, aber jetzt sind sie verschwunden.
Ich habe Diagramme erstellt, wie im Beispiel im Handbuch gezeigt. Ich habe keine Diagrammeigenschaften zur Anzeige von Handelsstufen gefunden (nur Basisdiagramme haben eine solche Eigenschaft).
Bitte um Hilfe.
Screenshots von der MetaTrader-Plattform
GBPUSD, M5, 2020.05.25
Forex Club International Limited, MetaTrader 5, Real
Hallo. Bitte helfen Sie mir zu verstehen, was geschrieben steht.
mqlrate rt [2] ;
Gehe ich recht in der Annahme, dass dies ein Array von zwei Strukturen ist, die automatisch die gleichen Strukturdaten erhalten haben?
Nur weiter gibt es keine Zuweisung von Daten an das Array und dann werden die Daten aus dem Array auf einmal verwendet.Hallo. Bitte helfen Sie mir zu verstehen, was geschrieben steht.
mqlrate rt [2] ;
Gehe ich recht in der Annahme, dass dies ein Array von zwei Strukturen ist, die automatisch die gleichen Daten erhalten?
Geschrieben in MQL5:
bedeutet: ein statisches Array von zweiMqlRates-Strukturen wird deklariert. Nach der Deklaration können diese Strukturen Kauderwelsch speichern, so dass diese Strukturen explizit mit Daten gefüllt werden müssen.
Schreiben in MQL5:
bedeutet: ein statisches Array von zweiMqlRates-Strukturen wird deklariert. Einmal deklariert, können diese Strukturen Kauderwelsch speichern, daher müssen diese Strukturen explizit mit Daten gefüllt werden.
Compiler-Fehler, funktioniert in älteren Builds einwandfrei.
Ja, so etwas gibt es, berichtet bereits am 25.03.2020, bereits seit 2 Monaten Tag für Tag...
(nicht behoben durch MT5(build 2390)) (neu) Kompilierfehler bei Verwendung des Standard-Zugriffsmodifikators beim Erben in einer Vorlagenklasse, wenn der Vorlagenparameter als Basisklasse fungiert.
Ein weiterer Fehler:
Er beschuldigt C::operator=, obwohl hier D::operator= ausgeführt wird. Um diesen Fehler zu umgehen, müssen Sie den Operator für alle Basisklassen in der Hierarchie überladen.
p.s. Im Allgemeinen haben die Entwickler versprochen, das falsche Verhalten des Zuweisungsoperators vor langer Zeit zu beheben, aber es ist immer noch da. Das ist ein Skandal. Zum Beispiel kompiliert der folgende Code ohne Fehler, obwohl er zuweist, was auch immer es ist:
Ein weiterer Fehler:
1) Es beschwert sich über C::operator=, obwohl hier D::operator= ausgeführt wird. Um diesen Fehler zu vermeiden, müssen wir den Operator für alle Basisklassen in der Hierarchie überladen.
2) Im Allgemeinen haben die Entwickler versprochen, das falsche Verhalten des Zuweisungsoperators vor langer Zeit zu beheben, aber es ist immer noch da - es ist ein Skandal. Zum Beispiel kompiliert der folgende Code ohne Fehler, obwohl er zuweist, was auch immer es ist:
1) Dies ist höchstwahrscheinlich kein Fehler, sondern ein natürliches Verhalten unter Berücksichtigung der Besonderheiten von MQL, nämlich:
In MQL sind Methoden und Felder der Basisklasse von den abgeleiteten Klassen "direkt verfügbar".
Im Wesentlichen ist das Vererbungsverhalten in MQL vergleichbar mit der Verwendung von Deklarationen für jedes Basisfeld und jede Methode in C++.
C++ online:https://onlinegdb.com/rJkckvFsU
Die Operationd = c;
bezieht also bei der Suche nach der passenden Funktion auch alle operator=-Funktionen aus den Basisklassen mit ein.
Infolgedessen ist die optimale Signatur für einen überladenen Funktionsaufruf die standardmäßige und gelöschte void operator=(const C&).
1) Höchstwahrscheinlich handelt es sich nicht um einen Fehler, sondern um ein natürliches Verhalten in Anbetracht der Besonderheiten von MQL, nämlich:
In MQL sind Methoden und Felder einer Basisklasse von Nachfolgeklassen "direkt verfügbar".
Im Wesentlichen ist das Vererbungsverhalten in MQL vergleichbar mit der Verwendung von Deklarationen für jedes Basisfeld und jede Methode in C++.
C++ online:https://onlinegdb.com/rJkckvFsU
So sind alle operator=-Funktionen aus den Basisklassen auch an der Operationd = c;
bei der Suche nach der entsprechenden Funktion beteiligt.
Infolgedessen ist die optimale Signatur für einen überladenen Funktionsaufruf die standardmäßige und entfernte void operator=(const C&).
Man muss nicht in einem offensichtlichen Sprachfehler nach der heiligen Bedeutung suchen. Ich habe dieses Problem bereits hier angesprochen, und Ilyas hat mir versichert, dass es korrigiert werden würde. Aber es sind bereits fast 10 Monate vergangen. (
Im Wesentlichen ist das Vererbungsverhalten in MQL ähnlich wie in C++ mit der Deklaration
Ja, gut, wenn in MQL zum Beispiel 2 x 2 = 5, könnte man sagen, dass es das gleiche wie in C ++ Hinzufügen einer Inkrement-Operation auf das Ergebnis ist)
Man muss nicht in einem offensichtlichen Fehler in der Sprache nach einer heiligen Bedeutung suchen.
Es wurde Ihnen erklärt, wie und warum es funktioniert, wenn es für Sie schwierig ist - zum Glück kann ich nicht helfen...
Es ist keine heilige Bedeutung, sondern ein üblicher Ansatz, um die Eingabeebene des Benutzers zu senken, damit er auf Felder und Methoden der Basisklasse zugreifen kann, ohne "this" zu verwenden, und auch in Fällen der Überladung einer Basisklassenfunktion.