Archiv verlassen und diese Seite im Standarddesign anzeigen : (MT4) Teilabschluss in einem EA
OK, ich glaube, ich habe es geschafft, den EA dazu zu bringen, einen Teilabschluss durchzuführen und die SL und TP im Rest des Handels zu aktualisieren: Der Handel wird mit einem TP eröffnet, der über dem liegt, was ich als meinen ursprünglichen TP beabsichtige (in meinem Fall I öffne es mit meinem letzten TP). Zum Zeitpunkt der Handelseröffnung wird die Losgröße in eine statische Variable übertragen, 70 % und 30 % dieser Zahl werden berechnet und in statische Variablen übertragen. Wenn der Preis meinen ursprünglichen TP überschreitet (wobei zu berücksichtigen ist, dass der tatsächlich beim Broker hinterlegte TP höher ist), sendet der EA eine OrderClose() für 70 % ...
Hallo Neuling2, kannst du bitte das EA hier posten? Ich habe lange danach gesucht, danke im Voraus
1 Anhang(e) Ich füge den UPDATE STOPS EA bei. Die Art und Weise, wie Sie Ihre Levels einrichten können, ist sehr schön, aber es funktioniert bei jedem Paar einzeln. Ich suche nach einem EA, der einen Prozentsatz des gesamten Warenkorbs schließt und das paart sind im Gewinn und die Paare, die im Verlust sind, sind auf der ganzen Linie genau der gleiche Prozentsatz. Jede Hilfe wäre dankbar. Danke schön.
https://www.tradingintuitive.com/attachments/15291718661593867873.mq4
Hallo zusammen! Ich bin ein Basket-Händler und suche einen EA, der einen Teil des Baskets schließt. Beispiel: Nehmen wir an, ich handele einen Korb mit 10 oder 14 Paaren und der Gewinn erreicht ein bestimmtes Niveau von 100 Pips. Ich möchte jetzt einen Teil des Korbs schließen, sagen wir den halben Korb, aber den halben Korb über alle Paare hinweg, nicht die Hälfte Paare. Nach dem Rest lassen wir es auf ein anderes voreingestelltes Pips-Niveau hochlaufen. Gibt es so etwas? Jede Hilfe wird sehr geschätzt.
https://www.tradingintuitive.com/attachments/1529171862.pngDanke schön.
franfernandwz0771
14-06-2024 15:48,
Ich habe dort einen Crosspost mit Ihnen gepostet � es sieht so aus, als hätten wir beide unterschiedliche Routen zum selben Ort genommen!
https://www.tradingintuitive.com/attachments/1529171862.pngGlückwunsch
xexiyay85
14-06-2024 17:05,
Ich habe dort einen Crosspost mit Ihnen gepostet � es sieht so aus, als hätten wir beide unterschiedliche Routen zum selben Ort genommen!
xexiyay85
14-06-2024 18:00,
OK, ich glaube, ich habe es geschafft, den EA dazu zu bringen, einen Teilabschluss durchzuführen und die SL und TP im Rest des Handels zu aktualisieren: Der Handel wird mit einem TP eröffnet, der über dem liegt, was ich als meinen ursprünglichen TP beabsichtige (in meinem Fall I öffne es mit meinem letzten TP). Zum Zeitpunkt der Handelseröffnung wird die Losgröße in eine statische Variable übertragen, 70 % und 30 % dieser Zahl werden berechnet und in statische Variablen übertragen. Wenn der Preis meinen ursprünglichen TP überschreitet (wobei zu berücksichtigen ist, dass der tatsächlich beim Broker hinterlegte TP höher ist), sendet der EA einen OrderClose() für 70 % der Lose und einen OrderModify(), um den SL zu ändern für die restlichen 30 %. Auch hier könnte die TP bei Bedarf angepasst werden. Es schien sich zu verhalten, dh es gab keine Fehlermeldungen, als ich es in einer Demoversion ausführte
franfernandwz0771
14-06-2024 19:49,
Ich habe eine Möglichkeit gefunden, einen Trade in drei Schritten teilweise zu schließen, wenn unterschiedliche Bedingungen erfüllt sind.
Endlich habe ich es geschafft, es zu knacken. Hier ist der Code ohne Fehler und er funktioniert perfekt, zumindest für meinen EA: Eingefügter Code/--- B U Y ORDERCLOSE PRE-CONDITIONS double Close1=0; if((Bid-OrderOpenPrice())gt;=1000*Point OrderLots()gt;1.6) Close1=1; if(Close1==1) NewLots=Lots1; if((Bid-OrderOpenPrice())gt;=2000*Point OrderLots()gt;1.1) Close1=2; if(Close1==2) NewLots=Lots2; if(trendlt;0 trendprevlt;0) Close1=3; if(Close1==3) NewLots=OrderLots();/--- ORDERCLOSE CONDITIONS { if(Close1==1 OrderLots()gt;1.6) { OrderClose(OrderTicket(),NewLots,Bid,3,Violet);/Position schließen return(0);/beenden } if(Close1==2 OrderLots()gt;1.1) { OrderClose(OrderTicket(),NewLots,Bid,3,Violet);/Position schließen return(0);/beenden } if(trendlt;0 trendprevlt;0) { OrderClose(OrderTicket(),NewLots,Bid,3,Violet);/Position schließen return(0);/Ausfahrt } }
xexiyay85
14-06-2024 20:46,
Vielen Dank für die Antworten!
1. Führen Sie niemals einen Gleichheitsvergleich zwischen dem Preis und einer anderen Variablen durch, wie Sie es getan haben (Ask==HighLineValue). Das wird in den meisten Fällen funktionieren, aber was ist mit der Situation, wenn Zahlen an der n-ten Dezimalstelle ungerundete Ziffern haben? Dies geschieht bei den meisten vordeklarierten MT4-Variablen wie “Hoch�, “Niedrig�, “Bid� und “Ask�. Besser ist Askgt;=HighLineValue.
Ausgezeichneter Punkt, über den ich vorher nicht nachgedacht hatte. Ich habe einen Bereich für den Auslöser hinzugefügt.
2. Um den Wert einer Variablen von einem Tick zum nächsten beizubehalten, verwenden Sie dafür statische Variablen. Sie werden außerhalb des Geltungsbereichs aller Funktionen deklariert, wie z. B. die Externs.
Bearbeiten � Ich habe diesen Rat befolgt und Variablen vor start() deklariert, sodass sie meines Wissens nach ihre Werte zwischen den Ticks behalten sollten.
3. Sie haben nicht angegeben, ob die Eintrittsbedingung bei jedem Tick oder bei jedem Balken überprüft wird. Ich empfehle dringend, solche Kontrollen nur bei der Eröffnung jeder Bar durchzuführen. Hier ist der Code, den ich verwende. Denken Sie daran, barStart als statische Datetime-Variable zu deklarieren.
Das ist wahrscheinlich etwas, was ich noch einmal überdenken muss, denke ich. Ich arbeite an M15, wodurch jeder Balken für meinen Handelsstil zu spät öffnet (oder schließt). Darf ich fragen, warum Sie empfehlen, diese Kontrollen bei der Eröffnung jedes Balkens und nicht bei jedem Tick durchzuführen?
Der Bestellabschluss ist einfach. Verwenden Sie eine Losgröße = 0,7 oder was auch immer. Natürlich muss eine gewisse Logik geschrieben werden, um sicherzustellen, dass der Wert ein gültiges Vielfaches der kleinsten Losgröße ist, aber aus Ihren Kommentaren geht hervor, dass dies geschehen ist. Sobald die alte Order geschlossen wurde, eröffnet MT4 eine neue Order für den verbleibenden Handelsbetrag, beispielsweise 0,3. Der Trick besteht darin, dass die neue Bestellung eine andere Ticket-ID hat. Wenn Sie den Handel über eine Ticket-ID verwaltet haben, müssen Sie die neue Ticket-ID erfassen. Ich glaube aus Ihrem Code, dass Sie nur einen offenen Überblick behalten müssen ...
Mir gefällt diese Idee und ich denke, das werde ich zunächst einmal ausprobieren. Ich versuche nur herauszufinden, wie ich es erreichen kann. -Bearbeiten - Wenn ich es so mache, bekomme ich bei genauerer Betrachtung zwei Aufstriche, die ich lieber nicht machen würde. Aber die Idee ist sinnvoll, wenn ich zu Beginn zwei Trades eröffne
Ich habe eine Möglichkeit gefunden, einen Trade in drei Schritten teilweise zu schließen, wenn unterschiedliche Bedingungen erfüllt sind.
Interessant � ich werde die Antworten auf Ihre Anfrage im Auge behalten!
franfernandwz0771
14-06-2024 21:29,
Ich habe eine Möglichkeit gefunden, einen Trade in drei Schritten teilweise zu schließen, wenn unterschiedliche Bedingungen erfüllt sind. In diesem Beispiel werden 2 Lose eröffnet. Wenn ein Gewinn von 100 Pips erreicht ist, werden 0,5 Lots geschlossen (Lots1). Das Gleiche gilt, wenn 200 Pips erreicht werden, ein weiteres 0,5-Lot wird geschlossen (Lots2). Schließlich wird das verbleibende 1 Grundstück im letzten Zustand geschlossen. Eingefügter Code/ORDERCLOSE CONDITIONS Double NewLots; if((Bid-OrderOpenPrice())gt;=1000*Point OrderLots()gt;1.6) NewLots=Lots1; if((Bid-OrderOpenPrice())gt;=2000*Point OrderLots()gt;1.1) NewLots=Lots2; if(trendlt;0 trendprevlt;0) NewLots=OrderLots(); { NewLots=NormalizeDouble(NewLots,Digits); Print(Lots=,NewLots); OrderClose(OrderTicket(),NewLots,Bid,3,Violet);/Position schließen return(0);/Exit } Dies funktioniert wie vorgesehen, allerdings erhalte ich nach dem Öffnen einer Order die folgende Fehlermeldung, auch wenn keine der Bedingungen erfüllt ist: Eingefügter Code MaxTrader V0.xx1 EURUSD,H4: OrderClose-Fehler 4051 MaxTrader V0.xx1 EURUSD ,H4: Ungültige Lot-Nummer für OrderClose-Funktion MaxTrader V0.xx1 EURUSD,H4: NewLots=0 Ich denke, das hat damit zu tun, dass die OrderClose-Funktion bereit ist, die Order sofort zu schließen, aber im Moment ist keine Lot-Größe angegeben. Auch hier schließt der EA die angegebenen Losgrößen wie erwartet nahtlos und ohne Probleme, aber ich möchte den OrderClose-Fehler beseitigen. Jeder Vorschlag ist willkommen.
aahberpk79
14-06-2024 22:31,
Ich habe darüber nachgedacht und beschlossen, die einfache, unzuverlässige Methode anzubieten, Dinge zu erledigen. Wenn jemand die schwierige, zuverlässige Methode anbieten möchte, bin ich Gast, aber dafür sind mehr Programmierkenntnisse erforderlich. Der Bestellabschluss ist einfach. Verwenden Sie eine Losgröße = 0,7 oder was auch immer. Natürlich muss eine gewisse Logik geschrieben werden, um sicherzustellen, dass der Wert ein gültiges Vielfaches der kleinsten Losgröße ist, aber aus Ihren Kommentaren geht hervor, dass dies geschehen ist. Sobald die alte Order geschlossen wurde, eröffnet MT4 eine neue Order für den verbleibenden Handelsbetrag, beispielsweise 0,3. Der Trick besteht darin, dass die neue Bestellung eine andere Ticket-ID hat. Wenn Sie den Handel über eine Ticket-ID verwaltet haben, müssen Sie die neue Ticket-ID erfassen. Aus Ihrem Code gehe ich davon aus, dass Sie nur einen offenen Trade im Auge behalten müssen, was die Sache einfacher macht. Das bedeutet, dass man nur noch den Status im Auge behalten muss. Damit meine ich zu wissen, ob es sich bei dem offenen Trade um den anfänglichen Trade oder den teilweisen Resthandel handelt. Ich denke, der einfachste Weg, dies zu tun, besteht darin, die Losgröße mit der eingegebenen Losgröße zu vergleichen.
aahberpk79
14-06-2024 22:59,
Mit dem Code, den Sie gepostet haben, haben Sie noch einen langen Weg vor sich. Lassen Sie mich Ihnen ein paar Hinweise geben. 1. Führen Sie niemals einen Gleichheitsvergleich zwischen dem Preis und einer anderen Variablen durch, wie Sie es getan haben (Ask==HighLineValue). Das wird in den meisten Fällen funktionieren, aber was ist mit der Situation, wenn Zahlen an der n-ten Dezimalstelle ungerundete Ziffern haben? Dies geschieht bei den meisten vordeklarierten MT4-Variablen wie “Hoch�, “Niedrig�, “Bid� und “Ask�. Besser ist Askgt;=HighLineValue. 2. Um den Wert einer Variablen von einem Tick zum nächsten beizubehalten, verwenden Sie dafür statische Variablen. Sie werden außerhalb des Geltungsbereichs aller Funktionen deklariert, wie z. B. die Externs. 3. Sie haben nicht angegeben, ob die Eintrittsbedingung bei jedem Tick oder bei jedem Balken überprüft wird. Ich empfehle dringend, solche Kontrollen nur bei der Eröffnung jeder Bar durchzuführen. Hier ist der Code, den ich verwende. Denken Sie daran, barStart als statische Datetime-Variable zu deklarieren. Eingefügter Code if (barStart lt; Time#91;0#93;)/Beginn eines neuen Takts { barStart = Time#91;0#93;;/Code hier } Das reicht für den Moment, ich werde später versuchen, Ihre Frage zu Teilschließungen zu beantworten.
xexiyay85
14-06-2024 23:36,
Hallo zusammen,
Ich habe versucht, mir selbst MQL4 beizubringen, und zu diesem Zweck habe ich ein maßgeschneidertes Indior erstellt.
Ich versuche jetzt, daraus einen EA zu machen, aber ich habe Probleme mit der Syntax.
Ich habe derzeit:
Eingefügter Code if(OrdersTotal() == 0) { if(Ask==HighLineValue ccigt;=90) { OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, LowLineValue, HalfHigh, 0); } if(Bid==LowLineValue ccilt;=-90) { OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, HighLineValue, HalfLow, 0); } } Was ich tun möchte, ist, 70 % der Lose zu schließen und die SL auf die Gewinnschwelle zu verschieben, wenn ein anderer Satz von Kriterien erfüllt ist, und dann die letzten 30 % bei einem endgültigen Satz von Kriterien zu schließen.
Ich habe die Variablen “lots70� und “lots30�, die bereits die entsprechende Anzahl an Losen berechnen, aber ich weiß nicht, wie ich diesen Teilabschluss zuverlässig erreichen kann. Ich stelle mir vor, dass ich eine Art Flag erstellen muss, um anzuzeigen, dass ein Handel in einer bestimmten Richtung aktiv ist, und dann eine weitere “Wenn�-Anweisung für den teilweisen Abschluss erstellen muss. Allerdings bin ich mir der Syntax dafür wirklich nicht sicher.
Das andere Problem, das ich habe, ist, dass sich die Variablen im Laufe der Zeit ändern, ich möchte jedoch die Werte der Variablen zum Zeitpunkt der Bestellung verwenden. Sind Puffer der einzige Weg, dies zu erreichen?
Vielen Dank im Voraus für jede angebotene Hilfe.
(Es tut mir leid, dass das so rudimentär ist, aber ich lerne immer noch sehr viel!)
Powered by vBulletin® Version 4.2.5 Copyright ©2026 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.