Nach Positionsschließung keine neue Order direkt ausführen

Viewing 15 posts - 1 through 15 (of 42 total)
  • Author
    Posts
  • #183005 quote
    MatzeDue
    Participant
    Junior

    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.

    #183079 quote
    robertogozzi
    Moderator
    Master

    Fü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:

    IF Not OnMarket AND ((close CROSSES OVER average[20,1](close)) OR (close CROSSES UNDER average[20,1](close))) THEN
       Flag = 0
    ENDIF

    fügen Sie dann unter Ihren Bedingungen hinzu, die Sie nur eingeben, wenn auch FLAG = 0 ist:

     IF MyConditions AND Flag = 0 THEN

    schließlich, sobald die Eingabe erfolgt ist (unmittelbar nach BUY oder SELLSHORT), weisen Sie 1 FLAG zu:

    BUY ...   // oder SELLSHORT
    Flag = 1
    #183081 quote
    phoentzs
    Participant
    Master

    Vielleicht reicht auch schon:

     

    close crosses over EMA20

    #183122 quote
    MatzeDue
    Participant
    Junior

    Danke 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
    ENDIF

    #183126 quote
    robertogozzi
    Moderator
    Master

    Bist 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.

    #183133 quote
    MatzeDue
    Participant
    Junior

    Danke Roberto,

    Ok, das ist ja schade.

    1. Kann man die Order nicht zu Beginn oder während der Periode ausführen?
    2. wie kann ich meinen Code anpassen, dass nicht direkt eine neue Order eröffnet wird? Hättest Du einen Vorschlag für mich?
    #183138 quote
    robertogozzi
    Moderator
    Master
    1. 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).
    2. 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.
    #183142 quote
    MatzeDue
    Participant
    Junior

    Hier 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
    ENDIF

    #183150 quote
    robertogozzi
    Moderator
    Master

    Leider 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!

    #183225 quote
    MatzeDue
    Participant
    Junior

    leider 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
    ENDIF

    #183234 quote
    robertogozzi
    Moderator
    Master

    This should work:

    // Festlegen der Code-Parameter
    DEFPARAM CumulateOrders = False // Kumulieren von Positionen deaktiviert
    ONCE Flag = 0
    // Bedingungen zum Einstieg in Long-Positionen
    indicator1 = ExponentialAverage[8](totalPrice)
    c1 = (open > indicator1)
    
    IF c1 AND Not OnMarket AND Flag = 0 THEN
       BUY 1 CONTRACT AT MARKET
       Flag = 1
    ENDIF
    
    // Bedingungen zum Ausstieg von Long-Positionen
    indicator2 = ExponentialAverage[8](totalPrice)
    c2 = (open < indicator2)
    c3 = (open < low[2])
    
    IF c2 OR c3 AND LongOnMarket THEN
       SELL AT MARKET
    ENDIF
    
    IF c2 THEN
       Flag = 0
    ENDIF
    #183279 quote
    MatzeDue
    Participant
    Junior

    yes it works, thanks

    Können Sie mir in den Code auch noch das MTF einbauen, sodass eine 5min – Kerze während ihrer Periode gekauft wird und nicht erst am Ende. Bestmöglich zu Beginn, wenn das Setup eintrifft.

    Danke.

    #183282 quote
    robertogozzi
    Moderator
    Master

    Hier ist es, Sie können es auf dem TF in 1 Minute oder sogar 1 Sekunde ausprobieren!

    // Festlegen der Code-Parameter
    DEFPARAM CumulateOrders = False // Kumulieren von Positionen deaktiviert
    TimeFrame(5 minute)
    ONCE Flag = 0
    // Bedingungen zum Einstieg in Long-Positionen
    indicator1 = ExponentialAverage[8](totalPrice)
    c1 = (open > indicator1)
     
    IF c1 AND Not OnMarket AND Flag = 0 THEN
       BUY 1 CONTRACT AT MARKET
       Flag = 1
    ENDIF
     
    // Bedingungen zum Ausstieg von Long-Positionen
    indicator2 = ExponentialAverage[8](totalPrice)
    c2 = (open < indicator2)
    c3 = (open < low[2])
     
    IF c2 OR c3 AND LongOnMarket THEN
       SELL AT MARKET
    ENDIF
     
    IF c2 THEN
       Flag = 0
    ENDIF
    //
    Timeframe(default)
    
    #183288 quote
    MatzeDue
    Participant
    Junior

    das klappt leider nicht.

    Ich möchte, dass die Order sofort in der 5min Kerze ausgeführt wird, die über dem EMA 8 eröffnet. Bestmöglich eine Sekunde später. Können Sie das integrieren?

    #183307 quote
    robertogozzi
    Moderator
    Master

    Ändern Sie Zeile 3 wie folgt:

    TimeFrame(5 minute,UpdateOnClose)
Viewing 15 posts - 1 through 15 (of 42 total)
  • You must be logged in to reply to this topic.

Nach Positionsschließung keine neue Order direkt ausführen


ProOrder: Automatischer Handel & Backtesting

New Reply
Author
author-avatar
MatzeDue @matzedue Participant
Summary

This topic contains 41 replies,
has 3 voices, and was last updated by MatzeDue
4 years ago.

Topic Details
Forum: ProOrder: Automatischer Handel & Backtesting
Language: German
Started: 12/08/2021
Status: Active
Attachments: 10 files
Logo Logo
Loading...