Zusammenfassung
In MQL4 steuern Kontrollstrukturen den Ablauf eines Programmcodes, insbesondere durch Entscheidungen, die mithilfe von if-Anweisungen getroffen werden. Die wichtigsten Arten von Kontrollstrukturen sind die if-Anweisung, die else-Anweisung und die switch-Anweisung.
if-Anweisungen prüfen Bedingungen und führen Code aus, wenn die Bedingung erfüllt ist. Sie können mit else-Anweisungen kombiniert werden, um alternative Aktionen zu definieren, falls die Bedingung nicht erfüllt ist.
else-if-Anweisungen ermöglichen es, mehrere Bedingungen zu überprüfen und verschiedene Aktionen auszuführen, je nachdem, welche Bedingung erfüllt ist.
switch-Anweisungen bieten eine alternative Möglichkeit, verschiedene Bedingungen zu prüfen und darauf zu reagieren, indem sie den Programmablauf verzweigen.
Top 3 Key Takeaways
- Wichtigkeit der if-Anweisung: Die if-Anweisung ist die zentrale Kontrollstruktur in MQL4, um Entscheidungen zu treffen und programmatische Reaktionen basierend auf Bedingungen zu steuern.
- Kombinierte Bedingungen: Mit else-if-Anweisungen können mehrere Bedingungen elegant überprüft werden, was den Code flexibler und übersichtlicher macht.
- Verwendung von switch-Anweisungen: Die switch-Anweisung bietet eine strukturierte Methode, um zwischen verschiedenen Alternativen zu wählen und den Programmablauf zu steuern, was in komplexeren Entscheidungsstrukturen nützlich ist.
Inhaltsverzeichnis
Anklicken zum öffnen und schließen
Die if-Anweisung
Die if-Anweisung wird in MQL4 dazu verwendet einen Zustand zu prüfen und als Reaktion auf diesen Zustand einen vorbestimmten Teil des Programmcodes auszuführen. Zum besseren Verständnis kann eine if-Anweisung auch umgangssprachlich mit "wenn dies passiert - dann mach folgendes" umschrieben werden.
Beispielsweise kann eine Anforderung folgendermaßen beschrieben werden: Wenn der Schlusskurs größer ist als 100, dann setzte den Stop-Loss auf 90. Das folgende Codebeispiel übersetzt diesen Satz in die Programmiersprache MQL4.
Beispiel
MQL Code
double Schlusskurs = Close;
double Kursziel = 100;
double StopLossKurs = 90;
if(Schlusskurs > Kursziel){
ChangeStopLoss(StopLossKurs);
}
Die Variable "Schlusskurs" wird mit dem Wert der Variable "Kursziel" verglichen. Trifft die Überprüfung zu, dann wird der Code innerhalb der geschweiften Klammern ausgeführt. In diesem Beispiel wird ein fiktive Funktion aufgerufen, die den Stop-Loss Kurs anpassen soll.
Kombinierte if-Anweisungen
Im vorangegangenen Beispiel wird der Code innerhalb der if-Anweisung ausgeführt, wenn die Bedingung des Ausdrucks erfüllt ist. Ist die Bedingung nicht erfüllt, wird kein spezieller Code ausgeführt, sondern das Programm folgt weiter dem Ablauf. Soll in jedem Fall ein Code ausgeführt werden, auch wenn die Bedingung nicht erfüllt ist, kann diese durch eine erweiterung der if-Anweisung erreicht werden. Der if-Anweisung wird eine Alternative geboten. Für diese Alternative wird die "else-Anweisung" verwendet. Zum besseren Verständnis kann eine if-else-Anweisung auch umgangssprachlich mit "wenn dies passiert - dann mach folgendes - anderenfalls mach das" umschrieben werden.
Beispielsweise kann eine Anforderung folgendermaßen beschrieben werden: Wenn der Schlusskurs größer ist als 100, dann setzte den Stop-Loss auf 90. Anderenfalls setzte den Stop auf 80. Das folgende Codebeispiel übersetzt diesen Satz in die Programmiersprache MQL4.
Beispiel
MQL Code
double Schlusskurs = Close;
double Kursziel = 100;
double StopLossKurs = 90;
double AlternativerStop = 80;
if(Schlusskurs > Kursziel){
ChangeStopLoss(StopLossKurs);
}
else{
ChangeStopLoss(AlternativerStop);
}
Die Variable "Schlusskurs" wird mit dem Wert der Variable "Kursziel" verglichen. Trifft die Überprüfung zu, dann wird der Code innerhalb der geschweiften Klammern ausgeführt. Anderenfalls wird der Code ausgeführt der innerhalb der geschweiften Klammern nach der else-Anweisung steht. In diesem Beispiel wird ein fiktive Funktion aufgerufen, die den Stop-Loss Kurs anpassen soll.
Kombinierte else-if-Anweisungen
Die zu überprüfenden Bedingungen können durch die else-if-Anweisung noch erweitert werden. Zum besseren Verständnis kann eine if-else-if-Anweisung auch umgangssprachlich mit "wenn dies passiert - dann mach folgendes - wenn etwas anderes passiert - dann mach was anderes - anderenfalls mach das" umschrieben werden.
Beispielsweise kann eine Anforderung folgendermaßen beschrieben werden: Wenn der RSI-Indikator einen wert von 90 hat, dann eröffne eine Short-Position. Wenn der RSI-Indikator einen wert von 10 hat, dann eröffne eine Long-Position. Wenn der RSI-Indikator einen wert von 80 hat, dann schließe eine Long-Position. Wenn der RSI-Indikator einen wert von 20 hat, dann schließe eine Short-Position. Anderenfalls informiere den Anwender, dass keine Aktion ausgeführt wurde. Das folgende Codebeispiel übersetzt diese Anforderungen in die Programmiersprache MQL4.
Beispiel
MQL Code
double Indikatorwert = iRSI(Symbol(),0,14,PRICE_CLOSE,0);
if(Indikatorwert == 90){
OpenShort();
}
else if(Indikatorwert == 10){
OpenLong();
}
else if(Indikatorwert == 80){
CloseLong();
}
else if(Indikatorwert == 20){
CloseShort();
}
else{
Print("Es wurde keine Aktion ausgeführt");
}
Die Variable "Indikatorwert" wird mit verschiedenen Bedingungen verglichen. Trifft eine der Überprüfungen zu, dann wird der jeweilige Code innerhalb der geschweiften Klammern ausgeführt. In diesem Beispiel werden fiktive Funktionen aufgerufen, die entwerder eine Position eröffnen oder schließen soll.
Die switch-Anweisung
Die Switch-Anweisung dient ebenfalls dazu, zwischen verschiedenen Alternativen zu entscheiden und damit den Programmablauf zu verzweigen.
Betrachten wir zunächst den Aufbau der switch-Anweisung
Syntax
MQL Code
switch(Ausdruck)
{
case Kosntante:
Anweisung;
break;
case Kosntante:
Anweisung;
break;
default:
Anweisung;
}
Die Switch-Anweisung prüft durch das Schlüsselwort "case", ob die Konstante dem Ausdruck entspricht. Ist dies der Fall, wird die Anweisung ausgeführt und das Schlüsselwort "break" beendet den Switch. Ist die Bedingung im ersten Case nicht erfüllt, wird der nächste Case nach dem gleichen Prinzip geprüft. Der Switch endet mit dem Schlüsselwort "default". Die Anweisung, die zu "default" gehört wird ausgeführt, wenn vorher keine Übereinstimmung stattgefunden hat.
Nun ein praktisches Beispiel für eine switch-Anweisung. Es wird das gleiche Szenario wie in der else-if-Anweisung aus dem vorangegangen Beispiel vorausgesetzt.
Beispiel switch-Anweisung
MQL Code
double Indikatorwert = iRSI(Symbol(),0,14,PRICE_CLOSE,0);
switch(Indikatorwert)
{
case 90:
OpenShort();
break;
case 10:
OpenLong();
break;
case 80:
CloseLong();
break;
case 20:
CloseShort();
break;
default:
Print("Es wurde keine Aktion ausgeführt");
}
Der erste Case überprüft, ob der Indikatorwert 90 entspricht und führt die zugehörige Anweisung aus, wenn dies der Fall. Anderenfalls wird der nächste Case geprüft und die Anweisung ausgeführt, wenn dieser zutrifft usw. Trifft keine der Bedingungen zu, wird der default-Case ausgeführt.
Fragen und Antworten
Kontrollstrukturen in MQL4 dienen dazu, den Ablauf eines Programmcodes basierend auf Entscheidungen zu steuern. Sie ermöglichen es, Bedingungen zu überprüfen und entsprechenden Code auszuführen, um flexible Programmfunktionen zu realisieren.
Die if-Anweisung wird verwendet, um eine oder mehrere Bedingungen zu prüfen und entsprechend zu reagieren. Die switch-Anweisung hingegen dient dazu, eine Variable gegen verschiedene Werte zu prüfen und den Programmablauf entsprechend zu verzweigen, was sie nützlich macht, wenn mehrere spezifische Bedingungen zu prüfen sind.
Ja, in MQL4 ist es möglich, if-Anweisungen zu verschachteln, um komplexe Bedingungen zu überprüfen. Dies ermöglicht eine detailliertere Kontrolle über den Programmfluss, erfordert jedoch eine sorgfältige Strukturierung, um die Lesbarkeit des Codes zu gewährleisten.