Nach Positionsschließung keine neue Order direkt ausführen
Forums › ProRealTime Deutsch forum › ProOrder Support › Nach Positionsschließung keine neue Order direkt ausführen
- This topic has 41 replies, 3 voices, and was last updated 2 years ago by MatzeDue.
-
-
12/08/2021 at 12:43 PM #183005
Hallo zusammen,
ich habe bei meinem Code das Problem, dass direkt nach der Positionsschließung eine neue Order eröffnet wird, wenn das Setup stimmt.
Hier ein Beispiel:
Der Kauf wird bei einem Kurs über EMA 20 ausgeführt und die Position wird mit einem TakeProfit geschlossen. Wenn sich der Kurs dann weiterhin über dem EMA 20 befindet wird direkt eine neue Position eröffnet.
Das sollte aber nicht der Fall sein.
Wie kann ich das sinnvoll lösen? (Bspw. dass der Kurs zuerst wieder unter den EMA fallen muss etc.)
Besten Dank vorab.
12/09/2021 at 5:09 PM #183079Fügen Sie zu Beginn die Variable FLAG hinzu und weisen Sie ihr den Wert 0 zu, wenn sie nicht auf dem Markt ist und ein Kreuz vorhanden ist:
123IF Not OnMarket AND ((close CROSSES OVER average[20,1](close)) OR (close CROSSES UNDER average[20,1](close))) THENFlag = 0ENDIFfügen Sie dann unter Ihren Bedingungen hinzu, die Sie nur eingeben, wenn auch FLAG = 0 ist:
1IF MyConditions AND Flag = 0 THENschließlich, sobald die Eingabe erfolgt ist (unmittelbar nach BUY oder SELLSHORT), weisen Sie 1 FLAG zu:
12BUY ... // oder SELLSHORTFlag = 112/09/2021 at 5:20 PM #18308112/10/2021 at 8:50 PM #183122Danke Euch erstmal für das Feedback.
Leider klappt mein Code nicht wie gewünscht.
Anweisung:
Kauf: bei Eröffnung > EMA8
Verkauf: bei Eröffnung < EMA8 oder Eröffnung < Tief der vorangegangen zwei Perioden
Problem 1) Die Order (Kauf und Verkauf) wird stets einen Candlestick zu spät ausgeführt
Problem 2) bereits oben genanntes Szenario: Es wird direkt nach einem Verkauf eine neuer Kauf getätigt, wenn das Setup passt. Hier sollte die Bedingung sein, dass der Kurs zuerst wieder unter den EMA 8 fallen muss.
Wäre toll, wenn mir jemand das entsprechend bei meinem Coden anpassen könnte.
Danke vorab.
Hier ist mein Code:
// Festlegen der Code-Parameter
DEFPARAM CumulateOrders = False // Kumulieren von Positionen deaktiviert// Bedingungen zum Einstieg in Long-Positionen
indicator1 = ExponentialAverage[8](totalPrice)
c1 = (open > indicator1)IF c1 THEN
BUY 5 CONTRACT AT MARKET
ENDIF// Bedingungen zum Ausstieg von Long-Positionen
indicator2 = ExponentialAverage[8](totalPrice)
c2 = (open < indicator2)
c3 = (open < low[2])IF c2 OR c3 THEN
SELL AT MARKET
ENDIF12/10/2021 at 10:25 PM #183126Bist du spät? Denken Sie daran, dass Strategien am Ende jeder Kerze ausgeführt werden. Wenn Sie also in den Markt eintreten, sehen Sie den Einstiegspfeil auf der nächsten Kerze.
12/11/2021 at 10:27 AM #183133Danke Roberto,
Ok, das ist ja schade.
- Kann man die Order nicht zu Beginn oder während der Periode ausführen?
- wie kann ich meinen Code anpassen, dass nicht direkt eine neue Order eröffnet wird? Hättest Du einen Vorschlag für mich?
12/11/2021 at 11:09 AM #183138- Die Bedingungen werden nur am Ende einer Kerze überprüft; Vor einigen Jahren wurde jedoch die MTF-Unterstützung (Multiple Time Frame) eingeführt, die es Ihnen ermöglicht, verschiedene Zeitrahmen innerhalb derselben Strategie (oder desselben Indikators) zu verwenden. Auf diese Weise können Sie die Bedingungen auf einem kleineren Zeitrahmen überprüfen, wenn die Kerze steht mehr tolles ist noch in der ausbildung. Wenn Sie beispielsweise den 1-Stunden-Zeitrahmen verwenden, können Sie die Bedingungen in jeder der 60 Minuten, die die Kerze bildet, überprüfen, um zu sehen, ob die Bedingungen VOR dem Schluss eingetreten sind. Der Nachteil dieser Lösung besteht darin, dass Sie weniger Historie für die Backtests haben (200.000 Minuten sind viel weniger als 200.000 Stunden).
- Um eine Order nicht sofort auszuführen, können Sie eine Pending Order verwenden, um dies zu einem anderen Preis zu tun, oder Sie können eine Variable verwenden, der Sie bei Erfüllung einer Bedingung einen bestimmten Wert zuweisen, und dann in den Markt einsteigen, wann immer Sie möchten, in einer der folgenden Balken. Wenn Sie ein Beispiel geben, ist es einfacher, Ihnen die Erklärung zu geben.
12/11/2021 at 11:23 AM #183142Hier ist mein Code mit Anweisung:
Kauf: bei Eröffnung > EMA8
Verkauf: bei Eröffnung < EMA8 oder Eröffnung < Tief der vorangegangen zwei Perioden
Problem: Es wird direkt nach einem Verkauf eine neuer Kauf getätigt, wenn das Setup gültig ist. Hier sollte die Bedingung sein, dass der Kurs zuerst wieder unter den EMA 8 fallen muss.
Wie könnte ich die Variable Flag in meinen Code einbauen?
Wie würde eine MTF-Unterstützung bei meinem Code aussehen, sodass die Order sofort ausgelöst wird?
Können Sie diesen entsprechend erweitern?
Vielen Dank.
// Festlegen der Code-Parameter
DEFPARAM CumulateOrders = False // Kumulieren von Positionen deaktiviert// Bedingungen zum Einstieg in Long-Positionen
indicator1 = ExponentialAverage[8](totalPrice)
c1 = (open > indicator1)IF c1 THEN
BUY 5 CONTRACT AT MARKET
ENDIF// Bedingungen zum Ausstieg von Long-Positionen
indicator2 = ExponentialAverage[8](totalPrice)
c2 = (open < indicator2)
c3 = (open < low[2])IF c2 OR c3 THEN
SELL AT MARKET
ENDIF12/11/2021 at 12:48 PM #183150Leider kann ich Ihnen erst am Montag genauer antworten.
Hier finden Sie Anleitungen und Beispiele:
https://www.prorealcode.com/blog/learning/approach-multi-timeframe-trading-prorealtime/
https://www.prorealcode.com/topic/multi-timeframe-mtf- Indikatoren -for-prorealtime /
Wenn Sie im Forum nach MTF suchen, finden Sie viele weitere Beispiele und nützliche Informationen.
“sofort ” ist falsch, da jede Strategie IMMER am Ende eines Balkens ausgeführt wird (sei es 1 Tag, 1 Stunde oder 1 Sekunde). Mit 1 Minute oder 1 Sekunde kommt man nah an „ sofort “, aber nicht ganz genau!
12/13/2021 at 10:17 AM #183225leider habe ich noch keine passende Lösung gefunden.
Können bei meinem unten befindlichen Code zum einen ergänzen, dass die Order während einer 5min die Order ausgeführt wird und zum anderen, dass direkt nach einem Verkauf kein neuer Kauf getätigt wird, sondern der Kurs zuerst wieder unter den EMA 8 fallen muss.
Hier ist mein Code mit Anweisung: (timeframe: 5min)
Kauf: bei Eröffnung > EMA8
Verkauf: bei Eröffnung < EMA8 oder Eröffnung < Tief der vorangegangen zwei Perioden
Problem: Es wird oft direkt nach einem Verkauf eine neuer Kauf getätigt, wenn das Setup gültig ist. Hier sollte die Bedingung sein, dass der Kurs zuerst wieder unter den EMA 8 fallen muss.
Wie könnte ich die Variable Flag in meinen Code einbauen?
Wie würde eine MTF-Unterstützung bei meinem Code aussehen, sodass die Order während der gültigen 5min ausgelöst wird?
Können Sie diesen entsprechend erweitern?
Vielen Dank.
Hier mein aktueller Code:
// Festlegen der Code-Parameter
DEFPARAM CumulateOrders = False // Kumulieren von Positionen deaktiviert// Bedingungen zum Einstieg in Long-Positionen
indicator1 = ExponentialAverage[8](totalPrice)
c1 = (open > indicator1)IF c1 THEN
BUY 5 CONTRACT AT MARKET
ENDIF// Bedingungen zum Ausstieg von Long-Positionen
indicator2 = ExponentialAverage[8](totalPrice)
c2 = (open < indicator2)
c3 = (open < low[2])IF c2 OR c3 THEN
SELL AT MARKET
ENDIF12/13/2021 at 12:23 PM #183234This should work:
123456789101112131415161718192021222324// Festlegen der Code-ParameterDEFPARAM CumulateOrders = False // Kumulieren von Positionen deaktiviertONCE Flag = 0// Bedingungen zum Einstieg in Long-Positionenindicator1 = ExponentialAverage[8](totalPrice)c1 = (open > indicator1)IF c1 AND Not OnMarket AND Flag = 0 THENBUY 1 CONTRACT AT MARKETFlag = 1ENDIF// Bedingungen zum Ausstieg von Long-Positionenindicator2 = ExponentialAverage[8](totalPrice)c2 = (open < indicator2)c3 = (open < low[2])IF c2 OR c3 AND LongOnMarket THENSELL AT MARKETENDIFIF c2 THENFlag = 0ENDIF12/14/2021 at 7:31 AM #18327912/14/2021 at 10:42 AM #183282Hier ist es, Sie können es auf dem TF in 1 Minute oder sogar 1 Sekunde ausprobieren!
123456789101112131415161718192021222324252627// Festlegen der Code-ParameterDEFPARAM CumulateOrders = False // Kumulieren von Positionen deaktiviertTimeFrame(5 minute)ONCE Flag = 0// Bedingungen zum Einstieg in Long-Positionenindicator1 = ExponentialAverage[8](totalPrice)c1 = (open > indicator1)IF c1 AND Not OnMarket AND Flag = 0 THENBUY 1 CONTRACT AT MARKETFlag = 1ENDIF// Bedingungen zum Ausstieg von Long-Positionenindicator2 = ExponentialAverage[8](totalPrice)c2 = (open < indicator2)c3 = (open < low[2])IF c2 OR c3 AND LongOnMarket THENSELL AT MARKETENDIFIF c2 THENFlag = 0ENDIF//Timeframe(default)12/14/2021 at 11:00 AM #18328812/14/2021 at 3:47 PM #183307Ändern Sie Zeile 3 wie folgt:
1TimeFrame(5 minute,UpdateOnClose) -
AuthorPosts
Find exclusive trading pro-tools on