Warum in MQL4 manchmal 4 plus 3 gleich 43 ist

video
play-sharp-fill

Unser MQL4 Kompiler ist zwar sehr schlau, aber er kann nicht alle Fehler erkennen! Wenn wir beispielsweise einen Text haben und den mit einer Zahl multiplizieren wollen, dann nimmt unser Kompiler die Zeile Ergebnis = Text plus Zahl anstandslos entgegen. Lassen wir uns doch einmal das Ergebnis ausgeben. Wir kompilieren erneut und haben keinen Fehler. Jetzt starten wir unser Programm und der Metatrader sagt uns: Das Ergebnis ist 43! Wenn wir 4 mit 3 addieren sollte das doch eigentlich 7 geben, oder? Der Grund warum hier eine 43 heraus kommt ist, dass die Comment() Funktion automatisch den Wert 4, der ja eigentlich ein Text ist und den Wert 3, der ja eigentlich eine Integer-Zahl ist hier unten wie eine Textkette behandelt. In diesem Programm handelt es sich jetzt um ein sehr einfaches Beispiel, aber wenn wir mit Kursen, Swapgebühren, Take Profit und Trailing Stop zu tun haben, dann würde uns dieses Problem gar nicht so einfach auffallen. Um dieses Problem zu beheben nutzen wir jetzt die so genannte Typkonvertierung. Das bedeutet, wir verändern den Variablentyp von unserem Text hier oben und machen einen Integer daraus. Bereits wenn wir StringTo eintippen sehen wir, dass das auch für andere Datentypen möglich ist. Die Funktion erwartet als Parameter unseren Text und jetzt sollten wir nach dem Kompilieren nach einem erneuten Programmstart auch den richtigen Wert angezeigt bekommen. Aber unser Ergebnis ist immer noch 43! Der Grund dafür ist, dass wir diese Konvertierungsfunktion entweder nutzen müssen um das Ergebnis einer Variable zuzuweisen oder die Konvertierung direkt hier unten in der Formel nutzen müssen. In diesem Fall erstellen wir uns einfach eine neue Variable vom Typ int innerhalb der Funktion. In der Integer-Variable konvertierterText wird jetzt der in eine Integerzahl umgewandelte Originaltext untergebracht und aus der Summe des konvertierten Textes und der Zahl wird unser Ergebnis berechnet. Kompilieren wir doch nochmal und siehe da: Jetzt ist das Ergebnis tatsächlich 7! Solche Typenkonvertierungen machen die Programmsicherheit grösser und helfen uns, weil wir die falschen Variablentypen benutzt haben. Falls Sie sich also einmal wundern warum 4 plus 3 auf einmal 43 ist, dann sollten Sie die Konvertierungsfunktion von MQL genauer in Augenschein nehmen!