MQL5 TUTORIAL GRUNDLAGEN – 61 SIMPLE FUNKTIONS UEBERLADUNG

video
play-sharp-fill

In diesem Video wollen wir uns einmal anschauen, wie man eine Funktion überladen kann. Überladen bedeutet, dass eine Funktion mit dem gleichen Funktionsnamen in der Lage ist, eine unterschiedliche Anzahl und unterschiedliche Typen von Parametern zu verarbeiten. Also schauen wir uns einmal an, wie man so etwas in MQL5 programmieren kann. Um das zu tun, klicken Sie im Metatrader bitte auf dieses kleine Symbol oder drücken Sie die F4-Taste. Das ruft dann hier den Metaeditor auf und hier klicken wir auf Datei, neue Datei, Expert Advisor aus Vorlage, weiter. Ich vergeben hier mal den Namen SimpleFunktionsÜberladung, klicke auf weiter, weiter und fertigstellen. Jetzt kann alles oberhalb dieser OnTick-Funktion gelöscht werden und auch die zwei Kommentarzeilen werden entfernt. Wir starten damit, dass wir uns in der OnTick-Funktion zunächst den Ask-Preis berechnen lassen. Das übernimmt die Funktion SymbolInfoDouble für das aktuell Währungspaar auf dem Chart. Und wir verwenden SYMBOL_ASK, alles in Großbuchstaben. Die Funktion NormalizeDouble in Verbindung mit _Digits sorgt dann dafür, dass das Ergebnis auch mit der richtigen Anzahl von Nachkommastellen angezeigt wird. Das Ganze wiederholen wir hier nochmal für den Bid-Preis. Ansonsten ist soweit alles gleich, bis auf diesen Parameter. SYMBOL_BID. Und da wir noch einen dritten Parameter brauchen, berechnen wir hier einfach mal die Differenz, in dem wir den Bid-Preis vom Ask-Preis abziehen. Ich möchte gerne eine Funktion aufrufen, die AddValues, also addiere Werte heißt. Und im ersten Fall übergeben wir hier zwei Parameter. Den Ask-Preis und den Bid-Preis. Als letzten Schritt in der OnTick-Funktion brauchen wir noch eine Ausgabe auf unserem Chart. Die Comment-Funktion wird uns den Text „das Resultat ist“ gefolgt von dem berechneten Wert ausgeben. Fangen wir mal an mit der ersten Funktion. Die ist hier in der Lage, jeweils einen double-Wert für den Ask- und für den Bid-Preis zu übernehmen. Ich möchte gerne im Journal den Eintrage sehen, dass das die Funktion ist, die nur zwei Parameter verarbeitet. Das übernimmt hier die Printausgabe. Wir addieren hier die beiden übergebenen Parameterwerte, weißen sie der Variable ReturnValue zu und zum Schluss nutzen wir den return-Befehl, um den ermittelten Wert wieder an die Hauptfunktion zurückzugeben. So weit so gut. Wir können das jetzt schon kompilieren und das geht ohne Fehler. Aber das ist noch keine Überladung. Wenn man sich aber mal hier oben diese Funktion anschaut und die Parameter ausschneidet, dann sieht man, dass man nach dem Setzen der ersten Klammer hier, diese Hilfe aufgezeigt bekommt. Das ist Möglichkeit eins von zwei. Und wenn ich darauf klicke, dann sehe ich, dass sich hier die Anzahl der Parameter verändert. Genau für so etwas ist eine Überladung gedacht. Und dazu erstellen wir uns hier einfach nochmal die gleiche Funktion, aber mit einem kleinen Unterschied. Denn jetzt soll unsere Funktion AddValues in der Lage sein, drei Parameter zu verarbeiten. Den Aks-Wert, den Bid-Wert und den Differenz-Wert. Falls sie sich wundern warum hier die Bezeichnung abweichend ist, von dem was wir hier berechnet haben: Die Namen die Sie für die übergebenen Parameter in der Funktion nutzen, sind frei wählbar. Auch hier möchten wir gerne mit dem Print-Befehl eine Ausgabe im Journal. Diesmal werden wir den Text sehen „diese Funktion verarbeitet drei Parameter“. Auch hier addieren wir einfach alle übergebenen Parameter zu einem Wert und nutzen zum Schluss den return-Befehl, um das Ergebnis an die Hauptfunktion zurückzuliefern. So weit so gut. Das hier ist nicht wirklich ein praktisches Beispiel, aber wenn Sie jetzt hier auf kompilieren klicken oder die F7-Taste drücken, dann werden Sie sehen, dass wir nach dem Setzen der ersten Klammer genau diese Anzeige bekommen. Wir haben eine Funktionsüberladung und können uns jetzt hier unterschiedliche Parameter für die Übergabe aussuchen. Falls Ihnen das hier zu schnell ging oder falls Sie nicht wissen, was all diese Funktionen bewirken sollen, dann möchten Sie sich vielleicht zunächst die anderen Videos aus dieser Grundlagenserie noch einmal anschauen oder vielleicht ist auch der Premiumkurs interessant für Sie. Das hier war übrigens eine Frage eines Mitgliedes des Premiumkurses. Und falls Sie schon ein Premiummitglied sind und so eine Frage haben, die zu einem Video verarbeitet werden könnte, dann schicken Sie mir doch einfach ein E-Mail. Falls Sie hier auf kompilieren klicken und keine Fehler bekommen, dann können wir jetzt hier oben klicken oder die F4-Taste drücken, um in den Metatrader zurückzukehren. Und im Metatrader klicken wir auf Ansicht, Strategietester oder drücken die Tastenkombination Steuerung und R. Bitte wählen Sie hier die neu erstellte Datei SimpleFunktionsÜberladung.ex5 aus. Markieren Sie die Option für den visuellen Modus und starten Sie Ihren Test. Hier läuft unser Expert Advisor los und zeigt uns an, dass unsere Funktion derzeit zwei Parameter verarbeitet. Ändern wir das mal und nutzen unsere Funktionsüberladung, um hier den Differenz-Wert noch zu übergeben. Danach kompilieren wir erneut. Und wenn wir den Test jetzt neu starten, dann zeigt uns der Journaleintrag an, aha, jetzt sind wir in der überladenen Funktion, die drei Parameter verarbeiten kann. Unser Expert Advisor funktioniert also wie gewünscht. Und Sie haben in diesem kurzen Video gelernt, wie Sie mit MQL5 eine Funktionsüberladung für eine benutzerdefinierte Funktion programmieren können. Und Sie haben das selbst getan, mit diesen paar Zeilen hier in MQL5.