"CloseAllOrders" am SL einer 2. Position
Liebe Trader, liebe User-Gemeinde,
seit geraumer Zeit komme ich einfach nicht weiter und würde mich über Eure Unterstützung sehr freuen. Das Problem: Eine 1. Position wird eröffnet und mit einem Trailing_Stop ausgestattet. Hier funktioniert der nachfolgende Code: Code:
double TSL = Trail_SL *100 *Point; Code:
if (OrderType() == OP_BUY && openOrders == 2) Würde mich über Eure Hilfestellung sehr freuen. LG. piptrade |
Das fällt mir auf die Schnelle dazu ein:
Zitat:
Irgendwie verstehe ich aber noch nicht ganz, wie Deine beiden Position laufen, etwa so: 1. Position eröffnet mit TS und läuft, 5 Min später 2. Position eröffnet mit TS und läuft hinterher - wenn 2. Position den TS der ersten einholt, alles zumachen? |
Hallo AVT,
herzlichen Dank für Dein schnelles Statement. An Hand der Antworten merkt man erst einmal, was man ggf. falsch erläutert hat und wie präzise die deutsche Sprache ist. Zitat:
Unabhängig von allen strategischen Überlegungen und allen "Pips und Paps" (wäre zu umfangreich) hier nochmals eine kurze Erläuterung, was ich eigentlich will: Es sind 2 Positionen geöffnet (die 1. Pos. ohne TP und ohne SL) und die 2. Position läuft in den TS. Genau an dieser Stelle sollen nun BEIDE Positionen geschlossen werden. Der Code soll einfach nur BEIDE Positionen schließen, falls die 2. Position den TS erreicht. Deshalb der "Einbau" "CloseAllOrders" unter ---> if (openOrders() == 2). LG. piptrade |
Zitat:
Zitat:
Code:
if(OrderType() == OP_BUY) den TrailingStop der zweiten Order mit "OrderModify()" aktualisierst, direkt danach dann aber "CloseAllOrders()" aufrufst. |
Hallo, next user,
der Zitate-Widerspruch resultiert daraus, dass ich alles etwas zu vereinfachen versuche, um am Kern des Problems ein Stückchen weiterzukommen. Zum Zweiten: Das Zusammenfügen beider Code-Bestandteile bei gleichzeitiger Ergänzung der Ausnahme (if (openOrders == 2)) ist ein guter Hinweis. Werde ich so anwenden. Und zum 3.: "CloseAllOrders()" sollte soweit richtig sein, da es an mehreren Stellen des EA angewendet wird und dort gut funktioniert. Was aber wichtig zu sein scheint ist die Tatsache, dass ich den Trail_SL mit "OrderModify()" aktualisiere, sofort danach aber "CloseAllOrders()" aufrufe. Damit kann ein Modify bestenfalls nur 1 x erfolgen. Wäre dann die nachfolgende Code-Ergänzug möglich und sinnvoll ? ("CloseAllOrders()" soll ja erst dann stattfinden, wenn der modifitierte Trail_SL durchbrochen wird.) Code:
if(OrderStopLoss() < Bid - TSL || OrderStopLoss() == 0) LG. piptrade |
Zitat:
andere Richtung läuft und ein Nachziehen des StopLoss nötig wird. |
Hallo, next user,
richtig, der Trail_SL soll natürlich nachgezogen werden. Verläuft der Kurs dann aber in die entgegengesetzte Richtung, verbleibt der Trail_SL an seiner letzten Stelle, wo er u.U. gebrochen wird. Und erst dann soll CloseAllOrders() erfolgen. Also müssen neue, separate if-Bedingungen geschaffen werden: Code:
{ Kommen wir so der Lösung etwas näher ? LG. piptrade |
Ich würde Schwankungen immer im Code beachten, das heißt kein "==" sondern
Code:
if(Bid <= OrderStopLoss()) |
Ohhh, sorry,
ich hatte nicht kompelliert. So sollte es etwas richtiger sein ! Code:
LG. piptrade |
Das <= gefällt mit gut ! (hatte ich vorher auch schon `mal, - allerdings mit den anfänglich falschen if-Bedingungen)
Im Moment bin ich recht zuversichtlich, werde den Code jetzt testen. Somit vorab recht herzlichen Dank; - ich melde mich noch einmal, wenn alles funktioniert (- oder auch, wenn nicht!) LG. piptrade |
Alle Zeitangaben in WEZ +2. Es ist jetzt 01:54 Uhr. |
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum