MQL praktisch. Panik-Taste, Teil I [Programmierkurs]
Willkommen zur zweiten Folge von MQL Practically! Im zweiten Teil unseres Kurses beginnen wir erneut mit einem leeren Blatt Papier und schreiben Schritt für Schritt eine neue Bewerbung. Wir werden die Elemente kennenlernen, die jeder Programmierer in seiner täglichen Arbeit verwendet, wie Funktionen, logische Operatoren und Schleifen, von denen jeder von Ihnen gehört haben muss, aber Sie wussten nicht, was es ist. Glücklicherweise geben wir in unserer Reihe die Theorie lecker und ohne Übertreibung und konzentrieren uns auf das Wichtigste, d. H. Programmierung in der Praxis.
Diese Woche schreiben wir den ersten Teil der Anwendung "Panik Knopf"wessen Name meiner Meinung nach schon viel erklärt. Die Aufgabe unseres Programms wird es sein, nach einem Knopfdruck alle offenen Positionen und Befehle sofort zu schließen, wenn ein kalter Schweiß auf unserer Stirn erscheint, die Welt still wird und sich das Bild zu einem kleinen, dunstigen Feld mit einer flackernden Rate eines rauschenden Dollars nach einem der niedlichen Tweets eines der unsere Lieblingspolitiker.
Lassen Sie uns die Ärmel hochkrempeln und MetaEditor einschalten
Beginnen wir mit dem Erstellen einer leeren Typdatei im Editor Experten genannt Panic Button.mq4. Die Datei befindet sich im Verzeichnis MQL4 \ Experts. Als nächstes legen Sie alle Dateien, die Sie heute benötigen, in die richtigen Ordner.
LADEN SIE EINEN SATZ VON MMS-DATEIEN HERUNTER
Erste Zeichen
Lassen Sie uns den Code unserer Anwendung ändern, d. H. Die Datei Panic Button.mq4 aus dem Katalog Experten. Lassen Sie uns den Compiler darüber informieren, dass wir die neueste Syntax der Sprache MQL4 verwenden, indem Sie Folgendes eingeben:
Dreimal "und"
#einschließen
Verwenden Sie das Schlüsselwort #einschließen Wir können andere Quelldateien an Ihren Code anhängen. In der Datei Przydatne_funkcje.mqh Die notwendige Funktion haben wir im folgenden Teil vorbereitet:
bool Zamknij_pozycje_i_zlecenia (bool tylko_ten_instrument)
Damit wir den zusätzlichen Code verwenden können, müssen wir ihn durch Eingeben in unsere Datei einfügen #einschließen und der Zugangspfad. Genau wie in der Box unten.
# Import
Schlüsselwort # Import Es erlaubt uns jedoch, externe Bibliotheken zu verwenden. Bibliotheken sind separate, kompilierte Algorithmen, die ihre Funktionen und Ressourcen mit anderen Programmen teilen. Im Folgenden importieren wir eine Bibliothek mit dem Namen Biblioteka_panic_button.ex4das enthält grafische Elemente und Funktionen für unseren Button. Zwischen Elementen # Import Wir stellen eine Liste von Funktionsdefinitionen auf, die uns die Bibliothek zur Verfügung stellen soll.
Der korrekte Bibliotheksimport sieht folgendermaßen aus:
Eingabe
Nachdem Sie die Quelldateien und Bibliotheken hinzugefügt haben, können Sie die Funktionen unseres Programms erstellen. Beginnen wir mit der folgenden Zeile:
Element Eingabe informiert den Compiler darüber, dass wir einen Parameter erstellen, der im Fenster der Anwendungseinstellungen verfügbar ist. Der Wert hängt von der Wahl des Benutzers ab. Der von uns erstellte Parameter nimmt den Wert von type an bool CZYLI was immer dies auch sein sollte. oder falsch. Wir haben ihn angerufen Tylko_ten_instrument Wenn Sie diesen Namen verwenden, können wir uns in Zukunft auf seinen Wert beziehen. Dies hilft uns zu entscheiden, ob Sie alle Positionen schließen möchten oder nur die Position des Instruments, auf dem unser Programm ausgeführt wird.
Erste Funktion
Fügen wir der Datei den folgenden Code-Ausschnitt hinzu:
Der obige Datensatz bedeutet, dass wir eine Funktion mit dem Namen erstellen OnInitdas gibt Typwerte zurück intDas sind ganze Zahlen. Funktionen geben Werte mit einem Schlüsselwort zurück Rückkehr.
Wir haben das mit dem Wort erwähnt Rückkehr Unsere Funktion liefert Werte in Form von ganzen Zahlen. Was ist also eine mysteriöse Platte? INIT_SUCCEEDED ? Für die Bequemlichkeit in der Sprache gibt es viele automatisch definierte Werte und INIT_SUCCEEDED ist nur einer davon. Unter seinem Namen steht eine ganze Zahl, die dem Compiler als "alles ist ok" bekannt ist.
Funktion OnInit () ist Teil der MQL-API, dh eine Funktion, die als Teil der Sprache verfügbar ist. MQL-API-Funktionen sind im Code auf markiert purpurn. Nach dem Start der Anwendung ruft unser Algorithmus die Funktion automatisch auf OnInit () und er wird es ganz am Anfang nur einmal tun, damit wir die notwendigen Operationen ausführen können, um unser Programm auszuführen.
Der Inhalt der Funktion
Zwischen den Klammern jeder Funktion geben wir die Anweisungen ein, die eine bestimmte Funktion ausführen soll. Unsere Funktion OnInit () enthält bereits eine Anweisung - Rückkehr INIT_SUCCEEDED;
Lassen Sie uns die Funktion der Funktion erweitern OnInit ()Ich erinnere mich an den Code Rückkehr INIT_SUCCEEDED; es blieb immer ganz unten in der Funktion, weil wir es nur aufrufen wollen, wenn alle anderen Anweisungen erfolgreich sind.
Bedingter Operator if
Der obige Code mit einem bedingten Operator if, prüft, ob die Umgebung für unsere Experimente sicher ist und wir arbeiten an einem Demo-Konto.
Betreiberkonstruktion if ist immer sehr ähnlich. Ein Datensatz zwischen den Klammern hinter dem Operator, dh dem Datensatz IsDemo () == falsch Wir nennen einen bedingten Ausdruck. Es ist ein logischer Ausdruck, der einen von zwei Werten zurückgeben kann - was immer dies auch sein sollte. oder falsch. Wenn der Bedingungsausdruck einen Wert zurückgibt was immer dies auch sein sollte. Dies ist der Code zwischen den geschweiften Klammern, die direkt nach dem Operator erscheinen if.
Das Symbol == in einem Bedingungsausdruck fragt eine Frage, ob der Wert links davon gleich dem Wert rechts ist. Weil die Funktion IsDemo () gibt den Wert zurück falschWenn wir das Programm auf dem Live-Konto aktivieren, wird der gesamte Wert unseres bedingten Ausdrucks als Ganzes zurückgegeben was immer dies auch sein sollte.da der Wert links vom Symbol == dem Wert rechts entspricht. Wenn ein Bedingungsausdruck erfüllt ist, wird ein Code zwischen den Klammern des Operators ausgeführt if und das Programm gibt mit Hilfe des Bedieners Informationen über den Ausfall zurück Rückkehr und Wert automatisch unter dem Namen generiert INIT_FAILED.
Wir zeichnen einen Knopf
Wir zeichnen unseren Button mit der Funktion Przycisku_utworz_sie (int x, int y, bool wybieram_niebieski)das kommt aus der zuvor importierten Bibliothek. Die Funktion akzeptiert zwei Parameter mit einem Datentyp int (ganze Zahlen) mit Namen x oraz yDiese dienen als Koordinaten der Schaltflächenposition in der Grafik relativ zur oberen rechten Ecke des Fensters.
Außerdem nimmt die Funktion einen Typparameter an bool (was immer dies auch sein sollte. oder falsch) benannt wybieram_niebieski. Da unsere Anwendung in zwei Modi betrieben werden kann, hat der Button für das gesamte Konto oder ein Instrument je nach den ausgewählten Einstellungen die entsprechende Farbe.
Wir mögen ify
Stellen wir fest, dass die Schaltfläche blau sein soll, wenn sie im Einzelinstrumentmodus und rot für das gesamte Konto funktioniert. Wir aktivieren die Einfärbung der Schaltfläche, indem Sie der Funktion die folgende Anweisung hinzufügen OnInit ():
Damit der Algorithmus die Farbe der Schaltfläche bestimmen kann, definieren wir zunächst die Variable bool genannt blau und wir geben ihm einen Wert falsch. Dann verwenden wir den Bedingungsoperator ifdas prüft auf den Anwendungseinstellungsparameter Tylko_ten_instrument wurde vom Benutzer auf einen Wert gesetzt was immer dies auch sein sollte.. Wenn dies der Fall ist, wird der Code ausgeführt, der den Wert der Variablen festlegt blau auch auf was immer dies auch sein sollte.. Eine auf diese Weise vorbereitete Variable blau Wir können die Funktion erfüllen Przycisku_utworz_sie (..) indem Sie der Funktion die folgende Codezeile hinzufügen OnInit ().
Letzte Funktion (für heute)
Wenn das Programm beendet ist oder sich etwas in den Einstellungen ändert, wird die MQL-API-Funktion aufgerufen ungültig OnDeinit(const int Grund).
Verwendung der Funktion OnDeinit () Wir führen Operationen aus, die zum ordnungsgemäßen Beenden des Programms erforderlich sind. In unserem Fall ist es nach dem Ausschalten des Algorithmus erforderlich, die Schaltfläche mit der zuvor aus der Bibliothek importierten Funktion zu entfernen Przycisku_bye_bye ().
Beachten Sie, dass sich vor dem Funktionsnamen ein Wort befindet ungültig. Dies bedeutet, dass unsere Funktion keinen Wert zurückgibt.
Fügen Sie die Semikolons hinzu, reiben Sie sich die Hände und drücken Sie kompilieren
Nach dem erfolgreichen Kompilieren zeichnet der Code, den wir heute geschrieben haben, eine Schaltfläche in der Grafik und gibt dieser ein passendes Aussehen, je nach der vom Benutzer im Einstellungsfenster eingegebenen Konfiguration. Glückwunsch, wir haben die erste Phase der Erstellung unserer Anwendung abgeschlossen, wir haben eine Benutzeroberfläche erstellt.
Nächste Woche werden wir unser Programm für die Auftragsabwicklung entwickeln und einige interessante Gadgets hinzufügen.
Hinterlasse eine Antwort