In diesem Video wollen wir uns einmal anschauen wie man die Positionsgröße von einer bestehenden Position mit MQL5 verändern kann. Sobald hier der Preis oberhalb der grünen Linie landet, sollten wir sehen dass sich hier unten das Volumen verändert. Ich beschleunige das hier mal kurz. Achten Sie auf die Positionsgröße. Und wir wollen in diesem Video einmal herausfinden wie man so eine Teilschließung einer Position programmieren kann. Um das zu tun klicken Sie im Meta Trader bitte auf dieses kleine Icon hier, oder drücken Sie die F4-Taste. Das ruft dann hier den Meta Editor auf und hier klicken wir auf Datei, Neue Datei, Expert Advisor aus Vorlage, weiter. Ich vergebe hier mal den Namen SimplerBuyPositionModifierEA. Klicke auf weiter, weiter und fertigstellen. Jetzt entfernen wir alles oberhalb der OnTick-Funktion und auch die zwei Kommentarzeilen können weg. Wir starten mit einem Include-Befehl und zwar für die Datei Trade.mqh. Die liefert und Handelsfunktionen. Darum erstellen wir uns hier erst einmal von der Klasse CTrade eine Instanz mit dem Namen Trade. Die werden wir gleich brauchen, wenn mir Positionen eröffnen oder verändern möchten. Zunächst einmal müssen wir dafür den Ask Preis ermitteln. Das geht mit der Funktion SymbolInfoDouble. Für das aktuelle Währungspaar benutzen wir SYMBOL_ASK und mit NormalizeDouble und _Digits sorgen wir dafür, dass wir auch automatisch die richtige Anzahl von Nachkommastellen berechnen. Je nach dem welches Währungspaar wir wählen, können das nämlich drei oder fünf Nachkommastellen sein. Im nächsten Schritt prüfen wir mit der Funktion PositionsTotal ob wir keine geöffneten Positionen haben. In diesem Fall liefert uns die Funktion den Wert Null zurück. Und wenn das zutrifft, dann nutzen wir trade.buy um eine Testposition zu eröffnen. Natürlich würde man das nicht auf einem Echtgeldkonto machen. Aber wir eröffnen hier eine Position mit zehn Microlot, damit wir etwas haben, was wir später verändern können. Und zu guter Letzt möchte wir hier noch die neu erstellte Funktion ChangePositionSize aufrufen. Der übergeben wir hier den Ask Preis den wir hier oben ermittelt haben. Die Funktion existiert aber bis jetzt noch nicht, deswegen müssen wir die jetzt programmieren. Wir nutzen in diesem Fall void, da wir keinen Rückgabetyp benötigen. Der Name der Funktion soll ChangePositionSize sein. Und hier sehen wir den übergebenen Ask Preis-Parameter von hier oben. Jetzt müssen wir ein paar Dinge berechnen. Wir fangen an mit der Balance, also dem Bruttoguthaben. Das kriegen wir über die Funktion AccountInfoDouble. Als Parameter übergeben wir ACCOUNT_BALANCE. Alles in Großbuchstaben. Für das Nettoguthaben funktioniert das ähnlich. Auch mit AccountInfoDouble. Diesmal geben wir aber als Parameter ACCOUNT_EQUITY an. Wir nutzen hier eine For-Schleife um alle Positionen durchzugehen. So lange hier noch geöffnete Positionen gefunden werden. Für jede dieser Funktionen möchten wir jetzt das Währungspaar ermitteln. Das macht die Funktion PositionGetSymbol. Für den aktuellen Schleifenzähler. Danach prüfen wir ob das Währungspaar auf dem Chart mit dem Positionssymbol identisch ist. Und wenn das der Fall ist, dann möchten wir gerne die Ticketnummer ermitteln. Die bekommen wir über die Funktion PositionGetInteger. Als Parameter wird hier POSITION_TICKET übergeben. Wir brauchen auch noch die Positionsrichtung. Die kriegen wir auch über PositionGetInteger. Diesmal mit dem Parameter POSITION_TYPE. Und wenn es sich um eine Kaufposition handelt, also wenn der Rückgabewert dem Wert POSITION_TYPE_BUY entspricht, dann prüfen wir zu guter Letzt auch noch, ob die Equity mindestens zehn Punkte höher ist, als das aktuelle Bruttoguthaben. Und erst wenn alle diese Bedingungen hier erfüllt sind, dann nutzen wir trade.PositionClosePartial, um für das aktuelle Ticket die Position um jeweils einem Microlot zu verringern. Der letzte Parameter hier gibt eine Punktetoleranz an. Wir verwenden hier -1 und zu guter Letzt beenden wir noch die I...