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
das sind Ihre Worte, es gibt keine Warnungen, aber es gibt sie wirklich
In welcher Welt leben Sie, was rauchen Sie, teilen Sie
Sie behaupten also so dreist für mich über meinen Code, den Sie nicht sehen? Habt ihr euch nicht in den Pilzen geirrt?
Ich habe es, nicht ein Narr, haben Sie einen speziellen Compiler ohne Warnungen, speziell persönlich von MQ
PS: Ich will auch einen, gib ihn mir.
Der von Ihnen angegebene Code ist überhaupt nicht korrekt!
Das sollte so sein:
Falsch, denn dann gibt es einen Vergleich:
Nein, das ist es nicht.
Das hat nichts damit zu tun.
Der Codewriter hat einfach überreagiert oder die Typumwandlung von irgendwoher kopiert.
in der Tat
Code
erzeugt keine Fehler oder Warnungen.
MQL erfordert keine explizite Umwandlung
PS. Prüfen Sie Ihre Annahmen, bevor Sie anfangen zu argumentieren.
ein sehr schlechtes Beispiel, wenn man sich bei einem Vergleich vertut und dann in einen Fehler läuft:
PS. Prüfen Sie Ihre Annahmen, bevor Sie anfangen zu argumentieren.
Nein, das sind Sie nicht.
Das hat nichts damit zu tun.
Der Codeschreiber hat einfach überreagiert oder von einem anderen Ort abgeschrieben .
in der Tat
Code
erzeugt keine Fehler oder Warnungen.
MQL erfordert keine explizite Konvertierung
PS. Prüfen Sie Ihre Annahmen, bevor Sie anfangen zu argumentieren.
o_o!
Richtig - falsch....
Ich habe den Eindruck, dass Sie nicht lesen, was andere schreiben!
Nach den Regeln der Programmierung:
DIE ÜBERNEHMENDE FUNKTIONSVARIABLE MUSS VOM GLEICHEN TYP SEIN WIE DER RÜCKGABEWERT DIESER FUNKTION!
DAS IST ES!
Dies ist das Ende dieser Spekulation.
Warum haben Sie es nicht so geschrieben?
Denn Sie wissen, dass die Funktion immer LONG zurückgibt.
Und der Verweis besagt eindeutig, dassder für das Argument POSITION_TYPE der FunktionPositionGetInteger() zurückgegebene Wert lautet
ist ENUM_POSITION_TYPE, nicht LONG
Und wenn Sie den Satzbau üben wollen, schreiben Sie ihn so:
Die Tatsache, dass der Compiler keine Fehlermeldung ausgibt, bedeutet nicht, dass Sie es richtig geschrieben haben!
Es zeigt den "freien Willen" des Compilers an und das ist alles! (Damit können Sie LONG und INTEGER vergleichen).
Das ist die RICHTIGE Art, mit dieser Situation umzugehen:
Ein sehr schlechtes Beispiel, Sie haben den Vergleich verpasst, und dann bekommen Sie einen Fehler:
Haben Sie irgendwo gesehen, wie es mit der Schriftumwandlung weitergeht? Begründen Sie Ihre Thesen nicht, indem Sie sich auf ein anderes Thema der Diskussion beziehen.
Hier geht es nur um den Vergleich und nur in diesem Fall ist long enum.
Sie haben sich bereits in das Dickicht der Gedanken begeben, obwohl die Frage direkt war, die von integer beantwortet wurde
Nextor257:
Bitte beraten Sie mich, denn ich verstehe nicht, was für ein Vergleich das sein soll.
if(type==(long)POSITION_TYPE_BUY)
Warum steht vor (lang) POSITION_TYPE_BUY ?
Dies ist eine Änderung des Variablentyps im laufenden Betrieb.
long und lon anstelle vonENUM_POSITION_TYPE undENUM_POSITION_TYPE
8 Zeichen (die man mit geschlossenen Augen tippen kann) statt 36 Zeichen (und in Großbuchstaben)! Darüber hinaus gibt es jede Menge Informationen, die keinen Sinn ergeben. Dies ist kein guter Programmierstil - unnötige Schrift und überflüssige Informationen.
In diesem Fall hat Mikhail absolut Recht (bei all meiner Abscheu vor Mikhails Programmierstil).
Und es geht nicht um mögliche Warnungen und schon gar nicht um die Anzahl der Zeichen, sondern um eine strenge Schreibweise. Die Aufzählung ENUM_POSITION_TYPE ist ein eindeutiger Datentyp. Es ist ENUM_POSITION_TYPE, nicht long oder int. Sie dürfen ihn nur als ENUM_POSITION_TYPE und nicht auf andere Weise verwenden. Und wenn Sie lange tippen, fängt die Autovervollständigungsfunktion beim dritten Zeichen an, und es gibt überhaupt kein Problem. Und das Problem liegt in der Verwendung von long, weil es fast alles sein kann, während ENUM_POSITION_TYPE das nicht ist.
MQL erfordert keine explizite Umwandlung
Zuerst habe ich geschrieben, dass dies der Fall ist, aber dann habe ich das Wort "Vergleich" gesehen. Eigentlich ist im Vergleich dazu keine explizite Konvertierung erforderlich, da MQL sie implizit vornimmt. Und es wäre besser, dies überhaupt nicht zu tun, denn das Ergebnis ist oft undefiniert. In anderen normalen, streng typisierten Sprachen ist jedoch immer eine explizite Typumwandlung erforderlich.
P.S. Ausnahmsweise hat Michael mal eine kompetente Antwort gegeben, aber die Leute fingen auch hier an, über ihn herzuziehen, wie üblich. Vergeblich, denn in diesem Fall hat er Recht.