ATR Trendfolge-System

Viewing 11 posts - 1 through 11 (of 11 total)
  • Author
    Posts
  • #136919 quote
    Tilmann
    Participant
    New

    Hallo,
    ich habe ein Handelssystem, welches ich versuche in ProBuilder zu programmieren.
    Es scheint jedoch ein Fehler im Programmcode zu existieren, weil im Backtest die Orders falsch gesetzt werden.

    Nun weiß ich nicht mehr weiter.
    Evtl. kann mir jemand helfen:

    defparam cumulateorders=false
    
    if not onmarket then
    atr=AverageTrueRange[5](close)
    buy 1 contract at close[1]+atr*0.88 STOP
    sellshort 1 contract at close[1]-atr*0.88 STOP
    
    buysl = close[1]-atr*0.88
    sellsl = close[1]+atr*0.88
    endif
     
    if longonmarket then
    set stop loss buysl
    endif
     
    if shortonmarket then
    set stop loss sellsl
    endif
    

    Das System ist simpel:

    Long: Wenn Schlusskurs letzte Kerze + (ATR[5]*0,88)

    Short: Wenn Schlusskurs letzte Kerze – (ATR[5]*0,88)

    Stop Long: Schlusskurs letzte Kerze – (ATR[5]*0,88)

    Stop Short: Schlusskurs letzte Kerze + (ATR[5]*0,88)

    Die Werte beziehen sich auf 5-Minuten-Perioden.

    Vielen Dank bereits vorab!

    #137090 quote
    Nicolas
    Keymaster
    Master

    Warum sind die Bestellungen Ihrer Meinung nach nicht richtig eingestellt? Haben Sie versucht, die Preisniveaus grafisch darzustellen, mit denen Sie Ihre ausstehenden Bestellungen festlegen? So was:

    graphonprice close[1]+atr*0.88
    graphonprice close[1]-atr*0.88

    Die Anweisung Schließen [1] bezieht sich auf den Kerzenhalter vor 1 Balken und nicht auf das Lesen des Codes. Das Problem könnte sein, dass Sie versuchen, STOP-Aufträge auf ein Niveau zu bringen, das bereits durch den Preis gebrochen ist. Daher könnten Sie dort denken, dass es ein Problem gibt.

    Tilmann thanked this post
    #137093 quote
    Tilmann
    Participant
    New

    Hallo Nicolas, vielen Dank! Die Nachverfolgung der Orders habe ich über die Orderliste aus dem Backtest nachvollzogen. Die Orderliste zeigt, dass schon die erste Order falsch gesetzt wird.

    Vorher habe ich mir noch folgenden Indikator erstellt, um die Preise vergleichen zu können:

    atrs = AverageTrueRange[5] * 88
    
    LongBuy = Close[1] + atrs
    Shortsell = Close[1] - atrs
    
    return LongBuy coloured(0, 178, 66) as "Long Buy", Shortsell coloured(255, 0, 0,)as "Short Sell"

     

    Hiernach wird der erste Preis der neuen Kerze nach dem letzten Schlusskurs (CLOSE[1]) genommen und die ATR überhaupt nicht berücksichtigt.

    Bei den STOP-Aufträgen macht die ATR den Unterschied. Im Fall einer LONG-Position wird bei CLOSE[1]+ATR *0.88 gekauft und der STOP liegt bei CLOSE[1] ATR*0.88. Dadurch müsste der Preis zwischen Kauf und Stop eigentlich unterschiedlich sein, wenn die ATR berücksichtigt wird. Danke!

     

    #137097 quote
    Nicolas
    Keymaster
    Master

    Wird die ATR mit 88 oder mit 0,88 multipliziert? Das ist ein großer Unterschied zwischen dem Indikator und der Strategie! 🙂 🙂

    #137102 quote
    Tilmann
    Participant
    New

    🙂 Uups, ein Übertragungsfehler in den Beitrag. Die ATR sollte mit 0,88 multipliziert werden. Beim Vergleich mit der Strategie habe ich die 0,88 verwendet….

    #137132 quote
    Nicolas
    Keymaster
    Master

    Mit diesem Code sollte alles gut funktionieren:

    defparam cumulateorders=false
    
    if not onmarket then
    atr=AverageTrueRange[5](close)
    buy 1 contract at close[1]+atr*0.88 STOP
    sellshort 1 contract at close[1]-atr*0.88 STOP
    
    
    
    buysl = atr*0.88
    sellsl = atr*0.88
    endif
     
    if longonmarket then
    set stop loss buysl
    endif
     
    if shortonmarket then
    set stop loss sellsl
    endif
    
    graphonprice close[1]+atr*0.88
    graphonprice close[1]-atr*0.88

    SET STOP LOSS ist eine Entfernung, kein Preisniveau!

    #137142 quote
    Tilmann
    Participant
    New

    Ich habe den Code so angewendet aber leider funktioniert bereits die BUY- und SELL Order nicht so wie gedacht. Es scheint, dass die ATR einfach nicht berücksichtigt wird.

    Gekauft/Verkauft wird zum Eröffnungskurs der Folgekerze ohne die ATR*0,88 auf den Schlusskurs der Vorkerze zu addieren/hinzuzurechnen.

    Trotzdem großen Dank für die Hilfestellung Nicolas!

    #137153 quote
    Nicolas
    Keymaster
    Master

    Ich glaube nicht, wenn Sie sich das Diagramm ansehen, in dem der korrekt berechnete Wert korrekt angegeben ist, der vorherige Abschluss +/- 88% der ATR 5-Perioden. Ich verstehe nicht, warum Sie ihn nicht sehen. Wenn Sie einen BUYSTOP auf ein Preisniveau setzen, über dem Sie liegen, wird die Bestellung direkt auf den Markt gebracht.

    #137216 quote
    Tilmann
    Participant
    New

    Okay, verstanden. Ich habe das mit dem BUYSTOP falsch verstanden. So funktioniert das in der Tat richtig.

    In der Strategie hatte ich das jedoch so gedacht, dass CLOSE[1] +/- ATR*0,88 wie zwei Bänder (oberes und unteres Band) mitlaufen und die Orders dann jeweils zu den Kursen (limitierte Order) ausgeführt werden, sobald die Bänder durchbrochen werden (BUY LIMIT ?)

    Wenn der Kurs das obere Band durchbricht wird gekauft (BUY) und wenn der Kurs das untere Band durchbricht wird verkauft (SHORTSELL). Die Stoploss werden jeweils an das obere und untere Band gesetzt. Sorry für meine schlechte Programmierkenntnisse…

    #137242 quote
    Nicolas
    Keymaster
    Master

    Das macht der Code schon! Schauen Sie sich die Bänder an, wenn Sie einen Backtest durchführen. Dies sind die Ebenen der Kauf- / Verkaufsaufträge. Möglicherweise haben Sie auch nicht verstanden, dass der Code beim Schließen der Leiste nur einmal ausgeführt wird. Daher bezieht sich die Anweisung Schließen [1] auf den Balken vor dem aktuellen. Sie sollten es mit Close [0] versuchen. Dies ist die Leiste, wenn der Code gelesen wird.

    Tilmann thanked this post
    #137249 quote
    Tilmann
    Participant
    New

    Mit Close[0] hat es geklappt – VIELEN DANK NICOLAS!

     

    defparam cumulateorders=false
    
    atr=AverageTrueRange[11](close)
    buy 1 contract at close+atr*0.55 STOP
    sellshort 1 contract at close-atr*0.55 STOP
    
    buysl = atr*0.55
    sellsl = atr*0.55
    
    if longonmarket then
    set stop loss buysl
    
    if shortonmarket then
    set stop loss sellsl
    endif
    
    graphonprice close[1]+atr*0.55
    graphonprice close[1]-atr*0.55
    endif

     

    Die ATR habe ich zwischenzeitlich auf 11 und den Multiplikator auf 0,55 gesetzt.

    Um die Sache abzuschließen habe ich noch das Gewinn-/Verlustprofil im Backtest angehängt. Ein schönes Wochenende….

Viewing 11 posts - 1 through 11 (of 11 total)
  • You must be logged in to reply to this topic.

ATR Trendfolge-System


ProOrder: Automatischer Handel & Backtesting

New Reply
Author
author-avatar
Tilmann @tilmann Participant
Summary

This topic contains 10 replies,
has 2 voices, and was last updated by Tilmann
5 years, 7 months ago.

Topic Details
Forum: ProOrder: Automatischer Handel & Backtesting
Language: German
Started: 06/23/2020
Status: Active
Attachments: 1 files
Logo Logo
Loading...