English 日本語
preview
Einführung in MQL5 (Teil 2): Navigieren zwischen vordefinierten Variablen, gebräuchlichen Funktionen und Kontrollflussanweisungen

Einführung in MQL5 (Teil 2): Navigieren zwischen vordefinierten Variablen, gebräuchlichen Funktionen und Kontrollflussanweisungen

MetaTrader 5Beispiele | 29 April 2024, 13:50
276 0
Israel Pelumi Abioye
Israel Pelumi Abioye

Einführung

Willkommen zurück auf unserer MQL5-Reise! Im ersten Teil haben wir uns in das Abenteuer des algorithmischen Handels gestürzt und die Komplexität von MQL5 für Anfänger ohne Programmierkenntnisse erklärt. Im zweiten Teil wird es noch spannender, da wir noch tiefer in die wesentlichen Bausteine von MQL5 eintauchen. Unser Ziel ist einfach und doch tiefgründig: Wir wollen sicherstellen, dass jeder, unabhängig von seinem Programmierhintergrund, die Umarmung des Verstehens spürt. Stellen Sie uns Ihre Fragen, und lassen Sie uns gemeinsam die Feinheiten von MQL5 enträtseln. Lassen Sie uns eine Gemeinschaft gründen, in der jede Stimme gehört wird und jeder Weg im algorithmischen Handel geteilt wird.

Diese Artikel heben sich als Leuchttürme der Einfachheit ab. Mit einem einzigartigen Ansatz enträtseln sie die Feinheiten der MQL5-Grundlagen mit einem Schwerpunkt auf Klarheit, um sicherzustellen, dass jeder, unabhängig von seinem Hintergrund, die bezaubernde Reise des algorithmischen Handels antreten kann.  Dies ist nicht nur ein Artikel, sondern eine Reise ins Außergewöhnliche. Erkunden Sie die Welt von MQL5 auf eine einzigartige und fesselnde Weise. Willkommen in einer neuen Ära des Verständnisses, in der jeder Artikel nicht nur gelesen, sondern auch erlebt wird.

Wir werden die Geheimnisse von vordefinierten Variablen, gebräuchlichen Funktionen, Kontrollflussanweisungen, arithmetischen Operationen, logischen Operationen und relationalen Operationen lüften. Im weiteren Verlauf dieser Artikel dreht sich alles um die Erstellung von Expert Advisors, dem Kraftwerk des automatisierten Handels. Sie lernen, wie Sie Ihren Handelsstrategien Leben einhauchen und Ihre Skripte befähigen, Entscheidungen in Ihrem Namen zu treffen. 

Und was nützt eine Strategie, wenn sie nicht auf Herz und Nieren geprüft wird? Im Mittelpunkt steht der Strategietester, mit dem Sie die Robustheit Ihrer Algorithmen anhand historischer Daten bewerten können. Hier trifft die Theorie auf die Realität, und ich werde Sie durch die Feinheiten dieses wichtigen Aspekts des algorithmischen Handels führen. Also schnallt euch an, liebe Mitstreiter! Teil zwei ist eine Reise in das Herz von MQL5. Machen Sie sich bereit für ein intensives Lernerlebnis, das Sie mit den Fähigkeiten ausstattet, die Sie benötigen, um sich in der faszinierenden Welt des algorithmischen Handels mit MQL5 sicher zu bewegen.

In diesem Artikel werden wir die folgenden Themen behandeln:

  • Vordefinierte Variablen
  • Gebräuchliche Funktionen
  • Arithmetische, relationale und logische Operationen
  • Kontrollfluss-Anweisungen

Bevor wir uns in die Tiefen des zweiten Teils wagen, sollten Sie auf ein kommendes Video gespannt sein, in dem ich die im ersten Artikel besprochenen Schlüsselkonzepte kurz zusammenfassen werde. Dieses Video dient als kurze Auffrischung, um sicherzustellen, dass wir alle auf der gleichen Seite sind, wenn wir uns in fortgeschrittenere MQL5-Themen vertiefen. Machen Sie sich bereit für eine aufschlussreiche Zusammenfassung!




1. Vordefinierte Variablen

Was sind vordefinierte Variablen?

In der Programmierung sind Variablen wie Behälter, die Informationen enthalten. Vordefinierte Variablen sind, wie der Name schon sagt, spezielle Container, die bereits durch die Programmiersprache selbst definiert sind. Diese Container werden mit spezifischen Informationen über den aktuellen Stand des Programms, das Handelsumfeld oder die Marktbedingungen gefüllt.

Warum sind sie „vordefiniert“?

Sie werden „vordefiniert“ genannt, weil die Programmiersprache (in diesem Fall MQL5) sie bereits eingerichtet und ihnen bestimmte Bedeutungen gegeben hat. Sie brauchen diese Variablen nicht zu erstellen oder zu deklarieren, sie sind sofort einsatzbereit, wenn Sie sie brauchen. Wenn Sie ein MQL5-Programm (wie einen Expert Advisor, ein Skript oder einen nutzerdefinierten Indikator) starten, kommt ein spezieller Satz vordefinierter Variablen ins Spiel. Diese Variablen enthalten bereits Informationen darüber, wie der Markt zu diesem Zeitpunkt aussieht. Details wie Preise, Symbole und Uhrzeit. Sie dienen als Momentaufnahme der Marktbedingungen zu Beginn der Programmdurchführung und liefern wichtige Daten für die Entscheidungsfindung im Rahmen des Programms.

Analogie

Stellen wir uns vor, dass vordefinierte Variablen wie Zauberkästen in der Werkstatt eines Zauberers sind. Diese magischen Kästen haben bereits besondere Kräfte, und der Zauberer gibt ihnen Namen, damit man leicht versteht, was jeder Kasten kann. Stellen Sie sich nun vor, es gäbe ein spezielles Feld namens „_Symbol“. Diese magische Box kennt den Namen der Finanzsymbole (EURUSD, GBPUSD), wie den Namen eines magischen Wesens.

Ein weiteres „Zauberkästchen“ mit der Bezeichnung „_Period“ kennt die Zeitrahmen (Timeframe), fast wie eine spezielle Uhr. Diese Kästchen sind vordefiniert, weil der Zauberer sie bereits mit diesen Kräften ausgestattet hat, bevor du deine magische Reise beginnst. Wenn du, der junge Zauberer, einen Zauberspruch (oder ein Programm in unserer magischen Welt) erstellen willst, kannst du diese vordefinierten Felder verwenden, um schnell wichtige Informationen wie den Namen einer Kreatur oder die Uhrzeit zu erhalten.

Sie müssen keine Zeit damit verbringen, diese Boxen selbst zu erstellen. Sie sind schon da, bereit, dir bei deinen magischen Aufgaben zu helfen! Im magischen Land der Codierung sind vordefinierte Variablen wie gebrauchsfertige Zauberkästen, die wichtige Informationen enthalten und es den Zauberern (Programmierern) erleichtern, ihre Zaubersprüche (Programme) zu erstellen, ohne bei Null anfangen zu müssen.

1.1. Beispiele für vordefinierte Variablen in MQL5

1.1.1. _Symbol

In der Welt der Finanzkodierung ist „_Symbol“ wie ein Zauberstab, der dem Programm hilft, genau zu wissen, mit welchem Finanzinstrument es zu tun hat. Es ist, als hätte man ein eingebautes GPS für Handelssymbole. Stellen Sie sich ein großes Geschäft mit vielen verschiedenen Artikeln zum Verkauf vor, jeder Artikel hat einen Namen, wie „EURUSD“ oder „GBPJPY“. „_Symbol“ ist wie ein freundlicher Assistent, der dem Programm leise mitteilt, welchen Artikel (Symbol) es gerade sieht, ohne dass es ständig daran erinnert werden muss.

Für Leute, die Code schreiben, um Handelsentscheidungen zu treffen, ist es wichtig, den spezifischen Gegenstand zu kennen, mit dem gehandelt wird. „_Symbol“ macht dies einfach, es ist wie ein Helfer, der immer weiß, welcher Gegenstand auf dem Handelstisch liegt. Einfach ausgedrückt ist „_Symbol“ der hilfreiche Begleiter des Codes, der dafür sorgt, dass er immer weiß, mit welchem Finanzposten er arbeitet. Es ist ein praktisches Tool zur Erstellung von intelligentem und flexiblem Code, der die sich ständig ändernde Welt der Handelssymbole mühelos bewältigen kann.

Beispiel:

void OnStart()
  {

   Alert(_Symbol);

  }

In diesem Beispiel verwendet die Funktion „Alert“ die vordefinierte Variable „_Symbol“, um das aktuelle Handelssymbol abzurufen und dann eine Warnung an den Chart zu senden. Wenn Sie diesen Code auf einer MetaTrader-Plattform ausführen, wird er das aktuelle Handelssymbol anzeigen.

1.1.2. _Period

Die vordefinierte Variable „_Period“ in MQL5 ist ein weiteres leistungsfähiges Werkzeug, das Informationen über den Zeitrahmen oder die Periode des aktuell betrachteten Charts liefert. Er dient als eingebauter Hinweis auf den Zeitrahmen, in dem der Handelsalgorithmus arbeitet.

Beispiel:

void OnStart()
  {

// a sample Script that prints the current timeframe to the user
   Print(_Period);

  }

Ähnlich wie „_Symbol“ trägt „_Period“ zur Anpassungsfähigkeit von Handelsalgorithmen bei, da sie den Zeitrahmen, in dem sie eingesetzt werden, kennen und darauf reagieren können. Es ist wie eine Uhr, die dem Programm immer den Zeitrahmen anzeigt, mit dem es arbeitet.

Anmerkung: Betrachten Sie „_Symbol“ als Ihren Leitfaden für das aktuelle Handelsobjekt und „_Period“ als Ihre Uhr, die den Zeitrahmen anzeigt. Diese beiden sind nur der Anfang des Zaubers. Es gibt noch mehr zu entdecken, aber genießen Sie erst einmal die Einfachheit, die sie in unser Programmierabenteuer bringen.

1.1.3. _Digits

Im Zusammenhang mit MQL5 liefert die vordefinierte Variable „_Digits“ praktische Informationen über die Anzahl der mit dem aktuellen Handelsinstrument verbundenen Dezimalstellen. Dieses Detail ist besonders wichtig, wenn es um den Begriff des Pips in der Welt des Devisenhandels geht. Ein Pip oder „percentage in point“ stellt die kleinste Kursbewegung im Wechselkurs eines Währungspaares dar. Die Anzahl der Nachkommastellen beeinflusst die Genauigkeit der Kursbewegungen, und „_Digits“ bietet Händlern eine schnelle Referenz, um ihre Berechnungen entsprechend anzupassen.

Dies ist vergleichbar mit einem Lineal, das die Genauigkeit jeder Messung angibt, wobei jede Ziffer in der Variablen „_Digits“ einer Dezimalstelle entspricht. Wenn zum Beispiel „_Digits“ auf 5 gesetzt ist, bedeutet dies eine Genauigkeit von vier Dezimalstellen, wie sie bei vielen Währungspaaren üblich ist.

Beispiel:

void OnStart()
  {

// Use the "_Digits" predefined variable to get the number of decimal places
   int decimalPlaces = _Digits;
// Print the result to the console
   Print("Number of Decimal Places: ", decimalPlaces, " (Each movement is a pip!)")

  }

1.1.4. _Point

In der faszinierenden Domäne von MQL5 ist „_Point“ eine wichtige vordefinierte Variable, die Aufschluss über die minimale Preisbewegung des aktuellen Handelsinstruments gibt. Es handelt sich im Wesentlichen um die kleinste messbare Kursänderung, die in der Welt des Devisenhandels oft als Pip bezeichnet wird. Um dieses Konzept zu verstehen, stellen Sie sich „_Point“ als Ihr finanzielles Lineal vor, das die kleinste Einheit angibt, um die die Preise schwanken können. Der Wert von „_Point“ variiert bei den verschiedenen Finanzinstrumenten und gibt den Händlern eine genaue Vorstellung davon, wie stark sich der Kurs bei jeder Bewegung verändern kann. Dies ist wichtig für die Einstellung von SL und TP in Programmen. Dies dient nur dazu, Sie mit dem Konzept vertraut zu machen, im Laufe der Zeit werden weitere Erklärungen folgen.

Beispiel:

void OnStart()
  {

// setting sl by subtracting 15 pips from a ask price of 1.2222
   double Ask = 1.2222; // current market price
   double sl = Ask - (_Point * 15);
   Alert(sl); // Result will be 1.2207

  }

In diesem Artikel haben wir uns mit einer Teilmenge der grundlegenden vordefinierten Variablen in MQL5 befasst, nämlich „_Symbol“, „_Digits“, „_Point“ und „_Period“. Diese Variablen dienen als Grundpfeiler und bieten Einblicke in die aktuelle Handelsposition, ihre Präzision, die Mindestpreisbewegung und den betrachteten Zeitrahmen.  Es ist wichtig, die bewusste Einfachheit unseres Ansatzes zu betonen. Die Komplexität von MQL5 umfasst eine Fülle von vordefinierten Variablen, wobei wir uns auf einige wenige konzentrieren, um eine klare und leicht verdauliche Einführung zu geben. Indem wir die Dinge einfach halten, ebnen wir den Weg für eine allmählichere und nuanciertere Erkundung der komplizierten Landschaft des algorithmischen Handels in zukünftigen Artikeln. Bleiben Sie dran, um weitere Einblicke zu erhalten, während sich unsere Reise entfaltet. 


2. Gebräuchliche Funktionen

Was sind gebräuchliche Funktionen?

In MQL5 sind die gebräuchlichen Funktionen wichtige Werkzeuge, die Händler und Entwickler zur Automatisierung verschiedener Aspekte des algorithmischen Handels verwenden. Diese Funktionen dienen bestimmten Zwecken, von der Anzeige von Warnmeldungen und dem Ausdruck von Nachrichten zur Fehlersuche bis hin zur Verwaltung von Aufträgen, dem Schließen von Positionen und dem Abrufen von Kontoinformationen. Betrachten Sie diese Funktionen als die Bausteine, die es Händlern ermöglichen, ihre Strategien effizient umzusetzen und fundierte Entscheidungen zu treffen. Sie rationalisieren den Kodierungsprozess, verbessern die Strategieausführung und tragen zu einem dynamischeren und reaktionsfähigeren Handelserlebnis bei.

Analogie

Stellen Sie sich vor, Sie sind der Kapitän eines magischen Schiffes und segeln durch die Meere der Handelsabenteuer. Auf dieser Reise stehen Ihnen spezielle Werkzeuge zur Verfügung, die „gebräuchlichen Funktionen“ genannt werden. Diese Werkzeuge helfen Ihnen bei verschiedenen Aufgaben, so wie eine Karte Sie auf Ihrer Seereise leitet. Sie sind wie magische Worte, die Sie in MQL5 verwenden können, um Ihrem Programm zu sagen, was es tun soll.

2.1. Beispiele für die gebräuchlichen Funktionen in MQL5

2.1.1. Alarm

Das ist wie ein magischer Wecker, der Ihnen sagt, wenn auf Ihrer Reise etwas Aufregendes oder Wichtiges passiert. Stellen Sie sich einen freundlichen Papagei vor, der krächzt, um Ihre Aufmerksamkeit zu erregen. Wenn Sie über etwas Wichtiges benachrichtigt werden möchten, verwenden Sie die Funktion „Alarm“, um dem Chart einen Alarm zu senden, wenn Ihr Programm aktiviert wird oder eine bestimmte Bedingung erfüllt ist.

Beispiele:

void OnStart()
  {

   Alert("Discoveries Await!");

  }

Abbildung 1. Ergebnis nach der Ausführung des Codes in MetaTrader5


In der bezaubernden Welt von MQL5 fühlt sich das Programmieren wie das Sprechen einer Sprache an, die dem menschlichen Ausdruck bemerkenswert nahe kommt. Nehmen Sie zum Beispiel die Funktion „Alert“. Im magischen Skript von MQL5 ist die Verwendung der Funktion „Alert“ gleichbedeutend damit, dem Programm zu sagen: „Hey, schick einen Alarm, wenn etwas Interessantes passiert!“ Es ist, als ob Sie sich mit Ihrem Handelsassistenten in einer Sprache unterhalten, die sich intuitiv und vertraut anfühlt und den Weg der Programmierung sowohl zugänglich als auch bezaubernd macht.

2.1.2. Print

Die Funktion „Print“ dient als Federkiel unseres Zauberers, die unsere Gedanken mühelos in die Schrift überträgt. Wenn wir die Beschwörungsformel „Print“ aufrufen, ist es so, als würden wir Notizen in ein magisches Tagebuch schreiben und die Essenz unserer Handelsabenteuer festhalten. Es ist ein skurriler Akt des Geschichtenerzählens, bei dem jede Codezeile zu einem Kapitel im Tagebuch unseres Zauberers wird, das die bezaubernden Entdeckungen und Wunder der Handelswelt festhält. Mit „Print“ werden unsere magischen Worte zum Leben erweckt und bilden eine Erzählung, die sich mit jedem mystischen Handel entfaltet.

Beispiel:

void OnStart()
  {

   Print("Discoveries Await!");

  }

Abbildung 2. Ergebnis nach der Ausführung des Codes in MetaTrader5

2.1.3. Comment

Die Funktion „Comment“ ist unser magischer Pinselstrich, mit dem wir unsere Handelsleinwand mit lebendigen Kommentaren versehen. Wenn wir den Zauber „Comment“ sprechen, ist es, als ob wir geheime Botschaften für uns selbst und andere Zauberer hinterlassen, die wir enträtseln können. Diese Beschwörungsformel ermöglicht es uns, Notizen und Symbole direkt in unsere Charts einzutragen und sie in mystische Schriftrollen zu verwandeln, die die Geschichte unserer Handelsstrategien erzählen. Mit „Comment“ werden unsere Charts zu lebendigen Manuskripten, die mit der Weisheit und den Erkenntnissen unserer magischen Reise durch die Finanzwelt geschmückt sind. Es ist wie ein Zauberwort, mit dem Sie eine Nachricht auf Ihrem Horoskop anzeigen können.

Beispiel:

 {

  Comment("I love MQL5!");

 }

Abbildung 3. Ergebnis nach der Ausführung des Codes in MetaTrader5

2.1.4. PlaySound

Die Funktion „PlaySound“ in MQL5 ist ein leistungsstarkes Tool, mit dem Händler akustische Signale in ihre Skripte und Expert Advisors einbauen können. Mit dieser Funktion können in verschiedenen Situationen Tondateien abgespielt werden, die den Händlern über die visuellen Elemente hinaus zusätzliche Hinweise oder Warnungen geben. Nehmen wir an, Sie haben eine Sounddatei mit dem Namen „alert.wav“ im Verzeichnis „Sounds“ und möchten diesen Sound abspielen lassen, wenn eine bestimmte Bedingung in Ihrem Handelsskript erfüllt ist.

Beispiel:

void OnStart()
  {

// Check a condition
   if(5>4)
     {
      // Play the sound
      PlaySound("alert.wav");
     }
  }

alert.wav: der Name der abzuspielenden Tondatei. Die Datei sollte sich im Verzeichnis „Sounds“ des Terminals befinden.

Zum Abschluss unserer Erkundung der gebräuchlichen Funktionen in MQL5 ist es wichtig zu erkennen, dass das, was wir hier kennengelernt haben, nur ein kleiner Einblick in das umfangreiche Repertoire an Tools ist, das im Bereich des algorithmischen Handels zur Verfügung steht. Die besprochenen Funktionen Alert, Print, Comment und PlaySound sind nur eine Auswahl aus einer Vielzahl von Möglichkeiten.


3. Arithmetische, logische und relationale Operationen

3.1. Arithmetische Operationen

Arithmetische Operationen sind grundlegende mathematische Operationen, die in der Programmierung, einschließlich MQL5 für den algorithmischen Handel, eine entscheidende Rolle spielen. Diese Operationen umfassen Addition (+), Subtraktion (-), Multiplikation (*), Division (/), Modulus (%), Inkrementoperator (++) und Dekrementoperator (--). Sie ermöglichen es Entwicklern, mathematische Berechnungen in ihrem Code durchzuführen.

Addition (+) und Subtraktion (-)

 Addition und Subtraktion sind grundlegende arithmetische Operationen, bei denen es um die Kombination oder Trennung von Mengen geht.

Beispiel:

void OnStart()
  {

   int num1 = 8;
   int num2 = 5;

//addition of values
   int sum = num1 + num2;
//subtraction of values
   int minus = num1 - num2;

   Alert("Sum = ",sum,", minus = ",minus);

  }


Multiplikation (*) und Division (/)

Beispiel:

void OnStart()
  {
   double price = 50.25;
   int quantity = 10;
   double totalCost = price * quantity; // Multiplication
   double averagePrice = totalCost / quantity; // Division

   Alert("totalCost = ",totalCost,", averagePrice = ",averagePrice);
  }


Modulus

Der Modulus-Operator, dargestellt durch das „%“-Symbol, ist eine mathematische Operation, die den Rest der Division einer Zahl durch eine andere ergibt. Der Modulus-Operator ist in der Programmierung besonders nützlich für Aufgaben wie die Iteration durch eine bestimmte Anzahl von Elementen, die Prüfung auf gerade oder ungerade Zahlen oder die Sicherstellung, dass Werte innerhalb eines bestimmten Bereichs bleiben.

Beispiel:

void OnStart()
  {
  
   int num1 = 10;
   int num2 = 3;
   int remainder = num1 % num2; // The variable 'remainder' now holds the value 1

  }


Inkrement- und Dekrement-Operator

Die Operatoren „++“ und „--“ sind als Inkrement- bzw. Dekrementoperatoren bekannt. Sie sind unäre Operatoren, d. h. sie arbeiten mit einem einzigen Operanden.

Beispiel:

void OnStart()
  {
  
   int x = 5;
   int y = 8;
   x++; // After this line, the value of 'x' is 6
   y--; // After this line, the value of 'y' is 7

  }

Anmerkung: Diese Operatoren werden häufig verwendet, um den Wert von Variablen in Schleifen, Zählern oder anderen Szenarien zu aktualisieren, in denen Sie einen Wert um einen festen Betrag erhöhen oder verringern möchten.


3.2. Logische Operationen

Logische Operationen in der Programmierung beinhalten die Auswertung von Bedingungen oder Ausdrücken, die einen booleschen Wert ergeben (entweder wahr oder falsch). Diese Operationen sind grundlegend für die Entscheidungsfindung und die Kontrolle des Programmablaufs. Logische Operatoren werden häufig in bedingten Anweisungen (if, else, switch ), Schleifen und anderen Situationen verwendet, in denen Sie Entscheidungen auf der Grundlage bestimmter Bedingungen treffen müssen. Sie sind unerlässlich für die Entwicklung einer ausdrucksstarken und flexiblen Logik in der Programmierung. 

In vielen Programmiersprachen, so auch in MQL5, gilt die Konvention, dass „1“ typischerweise für „wahr“ und „0“ für „falsch“ im Kontext der booleschen Logik steht.

Zu den gebräuchlichen logischen Operatoren gehören:

Symbol Betrieb Beispiel Erklärung
|| logisches ODER 
y > 2 || y < 7
Der Wert von y ist größer als 2 oder kleiner als 7
! logisch NICHT
!y Wenn der Operand wahr ist, macht der Operator ! ihn falsch,
&& logisches UND
y > 2 && y < 7 Der Wert von y ist größer als zwei und kleiner als 7


3.3. Relationale Operation

Bei relationalen Operationen in der Programmierung werden Werte verglichen, um die Beziehung zwischen ihnen zu bestimmen. Diese Operationen führen in der Regel zu einem booleschen Wert (wahr oder falsch).

Zu den gebräuchlichen relationalen Operatoren gehören:

Symbol Betrieb Beispiel
> Prüft, ob der Wert auf der linken Seite größer ist als der Wert auf der rechten Seite.
x > y
< Prüft, ob der Wert auf der linken Seite kleiner ist als der Wert auf der rechten Seite.
x < y
!= Prüft, ob zwei Werte ungleich sind.
x != y
== Prüft, ob zwei Werte gleich sind.
x == y
>= Prüft, ob der Wert auf der linken Seite größer oder gleich dem Wert auf der rechten Seite ist.
x >= y
<= Überprüft, ob der Wert auf der linken Seite kleiner oder gleich dem Wert auf der rechten Seite ist.
x <= y

Anmerkung:  Das Gleichheitszeichen ( = ) und das doppelte Gleichheitszeichen ( == ) dienen in der Programmierung unterschiedlichen Zwecken und werden in verschiedenen Kontexten verwendet. 

Das einfache Gleichheitszeichen '=' ist ein Zuweisungsoperator, der dazu dient, einer Variablen einen Wert zuzuweisen.

Beispiel:

int x = 10; // Assigns the value 10 to the variable x

Das doppelte Gleichheitszeichen '==' ist ein relationaler Operator, der zum Vergleich verwendet wird, um die Gleichheit zwischen zwei Werten zu prüfen.

Beispiel:

int a = 5;
int b = 7;
bool isEqual = (a == b); // Checks if 'a' is equal to 'b'; 'isEqual' is false


4. Kontrollfluss-Anweisungen

In der weiten Landschaft der Programmierung sind Kontrollflussanweisungen der Navigationskompass, der den Kurs für die Ausführung eines Programms festlegt. Stellen Sie sich Ihren Code als ein Schiff vor, das durch die verschlungenen Gewässer von Befehlen und Logik segelt. Auf dieser dynamischen Reise fungieren die Kontrollflussanweisungen als Kompass des Kapitäns, der das Schiff durch Entscheidungspunkte, Schleifen und unterschiedliche Bedingungen steuert. 

Ähnlich wie ein Schiffskapitän durch die stürmische See steuert, setzt ein Programmierer Kontrollflussanweisungen ein, um die Richtung des Codes vorzugeben. Ob es darum geht, Entscheidungen auf der Grundlage bestimmter Bedingungen zu treffen, Daten zu iterieren oder bestimmte Aktionen wiederholt auszuführen - diese Anweisungen sind die Werkzeuge des Strategen, um eine zielgerichtete Reise durch die Komplexität der algorithmischen Logik zu orchestrieren

Wie funktioniert das?

Stell Sie sich vor, Sie haben ein magisches Haustier, nennen wir es „Codey der Drache“. Codey befolgt gerne deine Anweisungen, aber du brauchst eine Möglichkeit, Codey zu sagen, was er in verschiedenen Situationen tun soll. Hier kommen Ihr Zauberstab (Code) und spezielle Wörter (Kontrollflussanweisungen) ins Spiel.

4.1. If/Else-Anweisung

Sie sagen zu Codey: „Wenn die Sonne scheint, fliegst du hoch am Himmel, ansonsten bleibst du am Boden und machst ein Nickerchen.“ Es ist, als würde man sagen: „Wenn etwas passiert, tue dies, ansonsten tue das“.

Beispiel:

 if(sun_is_shining)
     { Codey_fly_high_in_the_sky() }
 else
     { Codey_take_a_nap_on_the_ground() }

4.2. While-Schleife

Die „while“-Schleife ist ein leistungsfähiges Werkzeug, um sich wiederholende Aufgaben auszuführen, durch Sequenzen zu iterieren und Ihren Code mit dynamischer, iterativer Magie zu verzaubern. Es ermöglicht Ihren MQL5-Programmen, sich dynamisch an veränderte Bedingungen anzupassen und darauf zu reagieren, was Ihre Handelsstrategien flexibel und widerstandsfähig gegenüber den sich ständig verändernden Marktbedingungen macht. Es ist eher so, dass man dem Computer sagt, er soll einen Befehl weiter ausführen, solange eine Bedingung erfüllt ist.

Syntax:

while (Bedingung) { /* Code, der ausgeführt wird, solange die Bedingung erfüllt ist */ }

Beispiel:

void OnTick()
  {
// Initialization
   int numberOfTrades = 0;
// While loop condition
   while(numberOfTrades < 5)
     {
      // Magic within the loop
      Print("You can take a trade ", numberOfTrades + 1);
      // Counter increment
      numberOfTrades ++;
     }
// Magical finale
   Print("Trade complete!");
  }

Anmerkung: Weitere Erklärungen zur OnTick-Funktion werden später folgen.

Die „while“-Schleife ist wie ein magisches Konstrukt, das einen Codeblock so lange wiederholt, wie eine bestimmte Bedingung erfüllt bleibt. Es bietet eine Möglichkeit, iterative Aufgaben durchzuführen, bis eine bestimmte Bedingung nicht mehr erfüllt ist.

Schauen wir uns die Elemente des Beispiels genauer an:

Initialisierung: int numberOfTrades = 0;       

  • Wir initialisieren eine Zählervariable, um unsere magischen Iterationen zu verfolgen.

Die Bedingung der Schleife while: while (numberOfTrades < 5)

  • Die Schleife prüft, ob die Anzahl der Handelsgeschäfte kleiner als 5 ist. Wenn true, wird der Code innerhalb der Schleife ausgeführt. Diese Bedingung wirkt wie ein magischer Torwächter, der es der Schleife erlaubt, fortzufahren, solange numberOfTrades unter 5 liegt.

Magie innerhalb der Schleife:  Print(“Sie können eine Position eröffnen“, numberOfTrades + 1);

  • Innerhalb der Schleife führen wir eine magische Aktion durch. In diesem Fall wird eine Meldung gedruckt, wenn numberOfTrades < 5 ist.

Zähler Inkrement: numberOfTrades++

  • Die Anzahl der Handelsgeschäfte wird mit jeder Iteration erhöht und bringt uns unserem magischen Ziel näher, das bei 5 liegt.

Schleifen-Ende:  Print(“Handel abgeschlossen!“);

  • Sobald die Schleife ihre Iterationen beendet hat, wird die Nachricht gedruckt.

4.3. For-Schleife

Die „for“-Schleife ist ein leistungsfähiges Zaubermittel, mit dem sich iterative Aufgaben auf prägnante Weise durchführen lassen. Sie ist besonders praktisch, wenn Sie die Anzahl der Iterationen, die Sie durchführen möchten, im Voraus kennen. Sie können die for-Schleife für fast alles verwenden, wofür Sie die while-Schleife verwenden können, aber die for-Schleife hat einige Vorteile.

Vorteile:

  • Prägnanz: Die „for“-Schleife fasst die Initialisierung, die Bedingungsprüfung und die Iterationsanweisung in einer einzigen Zeile zusammen, wodurch Ihr Code eleganter wird.
  • Lesbarkeit: Sie erhöht die Klarheit Ihres Codes und macht ihn auf einen Blick leichter verständlich.
  • Kontrollierte Iteration: Durch die explizite Kontrolle über die Schleifenvariable können Sie die Anzahl der Iterationen genau festlegen.

Syntax:

for (Initialisierung; Bedingung; Iteration) { /* Code, der bei jeder Iteration ausgeführt wird */ }

Beispiel:

void OnTick()
  {
// For loop to iterate from 1 to 5

   for(int i = 1; i <= 5; i++)
     {
      // Magic within the loop
      //i represents number of trades
      Print("You can take a trade ", i);
     }
// Magical finale
   Print("Trade complete!");

  }

Erläuterung:

Initialisierung (int i = 1;):

  • Wir initialisieren eine Schleifenvariable i, um unsere magischen Iterationen bei 1 zu beginnen.

Bedingung (i <= 5;):

  • Die Schleife wird so lange fortgesetzt, wie die Bedingung (i kleiner oder gleich 5) erfüllt ist.

Iteration (i++):

  • Nach jeder Iteration wird die Schleifenvariable i um 1 erhöht.

Magie innerhalb der Schleife:  Print(“Sie können eine Position eröffnen“, i);

  • Innerhalb der Schleife führen wir eine magische Aktion durch. In diesem Fall wird eine Meldung gedruckt, solange numberOfTrades < 5 ist.

Schleifen-Finale:  Print(“Handel abgeschlossen!“);

  • Sobald die Schleife ihre Iterationen beendet hat, wird die Nachricht gedruckt.


Schlussfolgerung

Zum Abschluss des zweiten Teils unserer MQL5-Reihe haben wir uns mit den wichtigsten Punkten beschäftigt. Wir haben uns mit vordefinierten Variablen, gebräuchlichen Funktionen und der komplizierten Landschaft von arithmetischen, relationalen und logischen Operationen sowie mit Kontrollflussanweisungen beschäftigt. Was diese Reise so außergewöhnlich macht, ist ihre Einfachheit und die Einladung zur Interaktion.  Es steht Ihnen frei, Fragen zu stellen, wodurch das Lernen zu einem dynamischen Austausch wird. Während wir dieses Kapitel abschließen, freuen wir uns schon auf die nächsten Schritte. Bald werden wir uns auf den Weg machen, Ihren eigenen Handels-Bot zu entwickeln. Bleiben Sie dran, und lassen Sie uns diese interaktive Reise fortsetzen, um MQL5 zu meistern und Ihren Erfolg im algorithmischen Handel zu gestalten.


Übersetzt aus dem Englischen von MetaQuotes Ltd.
Originalartikel: https://www.mql5.com/en/articles/13997

Modifizierter Grid-Hedge EA in MQL5 (Teil II): Erstellung eines einfachen Grid EA Modifizierter Grid-Hedge EA in MQL5 (Teil II): Erstellung eines einfachen Grid EA
In diesem Artikel wird die klassische Rasterstrategie untersucht, ihre Automatisierung mit einem Expert Advisor in MQL5 detailliert beschrieben und die ersten Backtest-Ergebnisse analysiert. Wir haben die Notwendigkeit einer hohen Haltekapazität für die Strategie hervorgehoben und Pläne für die Optimierung von Schlüsselparametern wie Abstand, TakeProfit und Losgrößen in zukünftigen Ausgaben skizziert. Die Reihe zielt darauf ab, die Effizienz der Handelsstrategien und die Anpassungsfähigkeit an unterschiedliche Marktbedingungen zu verbessern.
Algorithmischer Handel mit MetaTrader 5 und R für Einsteiger Algorithmischer Handel mit MetaTrader 5 und R für Einsteiger
Begeben wir uns auf eine fesselnde Entdeckungsreise, bei der Finanzanalyse und algorithmischer Handel aufeinandertreffen, während wir die Kunst der nahtlosen Verbindung von R und MetaTrader 5 enträtseln. Dieser Artikel ist Ihr Leitfaden für den Brückenschlag zwischen den analytischen Finessen von R und den beeindruckenden Handelsmöglichkeiten von MetaTrader 5.
Entwicklung eines MQTT-Clients für Metatrader 5: ein TDD-Ansatz - Teil 5 Entwicklung eines MQTT-Clients für Metatrader 5: ein TDD-Ansatz - Teil 5
Dieser Artikel ist der fünfte Teil einer Serie, die unsere Entwicklungsschritte für einen nativen MQL5-Client für das MQTT 5.0-Protokoll beschreibt. In diesem Teil beschreiben wir die Struktur von PUBLISH-Paketen, wie wir ihre Publish Flags setzen, Topic Name(s) Strings kodieren und Packet Identifier(s) setzen, falls erforderlich.
Datenwissenschaft und maschinelles Lernen (Teil 18): Der Kampf um die Beherrschung der Marktkomplexität, verkürzte SVD versus NMF Datenwissenschaft und maschinelles Lernen (Teil 18): Der Kampf um die Beherrschung der Marktkomplexität, verkürzte SVD versus NMF
Die verkürzte Singulärwertzerlegung (Truncated Singular Value Decomposition, SVD) und die nicht-negative Matrixzerlegung (Non-Negative Matrix Factorization, NMF) sind Verfahren zur Dimensionsreduktion. Beide spielen eine wichtige Rolle bei der Entwicklung von datengesteuerten Handelsstrategien. Entdecken Sie die Kunst der Dimensionalitätsreduzierung, der Entschlüsselung von Erkenntnissen und der Optimierung quantitativer Analysen für einen fundierten Ansatz zur Navigation durch die Feinheiten der Finanzmärkte.