Hallo zusammen!
ist es möglich, bei 2 Stop Orders – Bsp. Stop at High + Sell at Low – die ausgeführte Order mit einer highest high, bzw lowest low Stop zu verknüpfen, der nach jeder Bar neu berechnet wird? Ich hoffe mein Programm erklärt meinen Wunsch:) Bekomme es einfach nicht hin… 🙁 vielen Dank vorab für Eure Hilfe!!
// Festlegen der Code-Parameter
DEFPARAM CumulateOrders = false
// Achtung bei True wird kumuliert!
////////////////////Definitionen////////////////////
GreenBar = (close >= open)
RedBar = (close < open)
////////////////////--Entry Long--////////////////////
////MinSizeOk
IF GreenBar or RedBar THEN
BUY 1 CONTRACT AT HIGH STOP
SET STOP Loss close-(lowest[3](low))
SELLSHORT 1 CONTRACT AT LOW STOP
SET STOP Loss close+(highest[3](high))
ENDIF
////////////////////--Stops und Targets--////////////////////
If LongOnMarket Then
SET STOP Price lowest[3](low)
ENDIF
If ShortOnMarket Then
SET STOP Price highest[3](high)
ENDIF
Denn die Zeilen 14 und 17 werden immer dann ausgeführt, wenn mindestens eine der beiden Bedingungen erfüllt ist (auch wenn die Zeilen 13 und 16 nicht ausgeführt werden).
Ersetzen Sie Zeile 12 durch diese, damit die obigen Zeilen nur ausgeführt werden, wenn KEINE Position offen ist:
IF (GreenBar or RedBar) AND Not OnMarket THEN
Hallo Roberto, danke – das habe ich geändert. Aber habe anscheinend noch einen Fehler in den Zeilen 14 und 17, sobald ein Entry erfolgt – wird nicht das highest high oder lowest low der letzten 3 Perioden genommen, PRT setzt einen sehr nahen Stop (anscheinend Low der vorherigen Perionde!?) System stoppt dann immer da MindestStop Abstand unterschritten…? Als normales Long oder Short System ist es einfacher zu programmieren, die Crux scheint in dem ersten Stop bei Eröffnung zu liegen… Danke für die Hilfe! 😉
Zeile 14 muss Zeile 23 entsprechen und Zeile 17 muss Zeile 27 entsprechen.
Wir kommen dem Ergebnis näher:) Bei der Eröffnung z.B. Short wird das High der Vor-Periode bzw. der aktuell geschlossenen Candle genommen, nicht das High der letzten [3], bei Entry Long wird auch das High der Vorperiode genommen…!? ab der folgenden Periode funktioniert es richtig wie Zeile 23 oder 27. …tricky 🙂
Sie haben geschrieben, dass Sie den höchsten oder niedrigsten Preis der letzten drei Kerzen (der aktuellen + der beiden vorherigen) nehmen und ihn mit jeder neuen Kerze aktualisieren sollen.
In den Tests, die ich durchgeführt habe, funktioniert es korrekt.
Ich habe Debugging-Anweisungen hinzugefügt, damit Sie auf dem Chart sehen können, wo der Stop-Loss platziert ist, Kerze für Kerze.
// Festlegen der Code-Parameter
DEFPARAM CumulateOrders = false
// Achtung bei True wird kumuliert!
////////////////////Definitionen////////////////////
GreenBar = (close >= open)
RedBar = (close < open)
////////////////////--Entry Long--////////////////////
////MinSizeOk
IF (GreenBar or RedBar) AND Not OnMarket THEN
BUY 1 CONTRACT AT HIGH STOP
xL = lowest[3](low)
SET STOP Price xL
SELLSHORT 1 CONTRACT AT LOW STOP
xS = highest[3](high)
SET STOP Price xS
ENDIF
////////////////////--Stops und Targets--////////////////////
If LongOnMarket Then
xL = lowest[3](low)
SET STOP Price xL
ENDIF
If ShortOnMarket Then
xS = highest[3](high)
SET STOP Price xS
ENDIF
graphonprice xL AS "Long STOP" coloured("Red")
graphonprice xS AS "Short STOP" coloured("Red")
Herzlichen Dank für die tolle Unterstützung! Werde testen …
Hallo nochmal,
habe mit us500 und gold live getestet – Short funktioniert wie es soll, aber:
Bei Long Entries wird der Stop immer am High der vorherigen Kerze (ehem. Long Trigger) gesetzt, in den meisten Fällen fliegt man sofort raus da Entry gleich neuer Stop – falls nicht, funktioniert das lowest low ab der nächsten Kerze. Wie gesagt, nur Long – bei Short wird ab Entry das highest high (3) gesetzt. Wobei mir schleierhaft ist, woher der High-Stop kommt!?!? Könnte es der 2. xS Stop sein?, dass der xL womöglich ignoriert wird?
IF (GreenBar or RedBar) AND Not OnMarket THEN
BUY 1 CONTRACT AT HIGH STOP
xL = lowest[3](low) ——wird nicht gesetzt sondern vorheriges High??
SET STOP Price xL
SELLSHORT 1 CONTRACT AT LOW STOP
xS = highest[3](high)—— möglich, dass dieses High auch für obige Long Pos. gesetzt wird!?
SET STOP Price xS
ENDIF
Der Fehler rührt daher, dass ich sowohl den LONG-Stop-Loss als auch den SHORT-Stop-Loss zwischen den Zeilen 13 und 22 positioniert habe. Da es möglich ist, NUR EINEN Stop-Loss einzufügen, wird immer der zweite, also der SHORT-Stop-Loss, verwendet.
Jetzt habe ich dafür gesorgt, dass der Stop-Loss beim Einstieg deaktiviert ist, aber erst ab dem nächsten Balken eingefügt wird, wenn bekannt ist, ob der Einstiegshandel LONG oder SHORT ist:
// Festlegen der Code-Parameter
DEFPARAM CumulateOrders = false
// Achtung bei True wird kumuliert!
////////////////////Definitionen////////////////////
GreenBar = (close >= open)
RedBar = (close < open)
////////////////////--Entry Long--////////////////////
////MinSizeOk
IF (GreenBar or RedBar) AND Not OnMarket THEN
SET STOP PRICE 0
BUY 1 CONTRACT AT HIGH STOP
xL = lowest[3](low)
//
SELLSHORT 1 CONTRACT AT LOW STOP
xS = highest[3](high)
ENDIF
////////////////////--Stops und Targets--////////////////////
If LongOnMarket Then
xL = lowest[3](low)
SET STOP Price xL
ENDIF
If ShortOnMarket Then
xS = highest[3](high)
SET STOP Price xS
ENDIF
graphonprice xL AS "Long STOP" coloured("Fuchsia")
graphonprice xS AS "Short STOP" coloured("Red")
graphonprice PositionPrice
vielen Dank für die Hilfe!;)