Quit / Stop Funktion backtesting

Viewing 9 posts - 1 through 9 (of 9 total)
  • Author
    Posts
  • #35075 quote
    wreini1982
    Participant
    Junior

    Hallo,

    ich bin beim Backtesting auf etwas gestossen, was nicht funktionierte, eventuell hat jemand Erfahrung damit.

    Es geht um die QUIT Funktion bzw. um das Stoppen des Systems bei einem bestimmen STRATEGYPROFIT Wert.

    Bei meinem Backwardstesting funktioniert das nicht, daher wollte ich frage ob jemand Erfahrung hat und ob das nur in backwards nicht geht, aber in echt schon.

    z.B.

    IF Strategyprofit -1000 THEN

    QUIT

    END IF

    oder

    if Gewinn < (-a*startcontracts + dyncontracts*a) THEN
    contractnumber = 0
    ENDIF

    Danke für eure Hilfe.

    MFG

    Wolfi

    #35203 quote
    Nicolas
    Keymaster
    Master

    Um eine Strategie vollständig zu stoppen, sollte dein Code so aussehen:

    IF Strategyprofit <-1000 THEN
     QUIT
    ENDIF

    Hast du das schon so geschrieben?
    Sie können in der Dokumentation etwas mehr über die STOP-Funktion erfahren: https://www.prorealcode.com/documentation/quit/

    #35225 quote
    wreini1982
    Participant
    Junior

    Ja, habe ich probiert und soeben noch einmal probiert.

    Das Ergebnis sieht aber komisch für mich auch, bis zu einem gewissen Wert funktioniert es recht gut und dann auf einmal ist ein Riesen Sprung drinnen.

    Im Detail stelle den Wert auf -1000, dann stoppt er bzw. drowdown ist 1200, – 1500 drowndown 1700 und dann auf einmal bei -2500 ist der drowndown -14000, er hat aber keine Position die so groß ist dann.

    Ich schick dir den Code hier mit.

    Ich habe auch probiert die Zeile des Codes im Programm zu verändern, am Anfang oder Ende, aber das hat keinen Einfluss, was ich gesehen habe.

    Der mitgeliefert Code ist irgendein System von mir.

     

    // Tagestrend H1 17042017
    
    // System optimiert wegen retourrechnen und weiters Stop Limit reduziert
    
    // Festlegen der Code-Parameter H1
    DEFPARAM CumulateOrders = False // Kumulieren von Positionen deaktiviert
    // Das Handelssystem wird um 0:00 Uhr alle pending Orders stornieren und alle Positionen schließen. Es werden vor der "FLATBEFORE"-Zeit keine neuen Orderaufträge zugelassen.
    DEFPARAM FLATBEFORE = 090000
    // Stornieren aller pending Orders und Schließen aller Positionen zur "FLATAFTER"-Zeit
    DEFPARAM FLATAFTER = 173000
    
    // dynamische Anpassung contract auf Basis Evaluierung / testen des Wertes
    
    //c1 = AverageTrueRange[10](close)
    
    IF Strategyprofit <-2500 THEN
    QUIT
    ENDIF
    
    startcontracts = 5 //start of contract system with 2000 Euro Base
    
    Gewinn = STRATEGYPROFIT
    
    if gewinn > 2000 then
    dyncontracts = 1
    ENDIF
    
    if gewinn > 4000 then
    dyncontracts = 2
    ENDIF
    
    if gewinn > 6000 then
    dyncontracts = 3
    ENDIF
    
    if gewinn > 8000 then
    dyncontracts = 4
    ENDIF
    
    if gewinn > 10000 then
    dyncontracts = 5
    ENDIF
    
    //dyncontracts = round(Gewinn/1500)
    //dyncontracts = 0
    
    contractnumber = startcontracts + dyncontracts
    
    //c5 = AverageTrueRange[10](close)
    indicator2 = Average[200](close)
    indicator3 = Average[200](close)
    //indicator4 = Average[80](close)
    //indicator5 = Average[80](close)
    c2 = (indicator2 > indicator3[4])
    c3 = (indicator2 < indicator3[4])
    //c4 = (indicator4 > indicator5[7])
    //c5 = (indicator4 < indicator5[7])
    
    
    
    if currenttime = 100000 and c2 then
    BUY contractnumber CONTRACT AT MARKET
    ENDIF
    
    if currenttime = 100000 and c3 then
    SELLSHORT contractnumber CONTRACT AT MARKET
    ENDIF
    
    SET STOP %LOSS 0.55
    //SET STOP LOSS 1.5*c1
    //SET TARGET %PROFIT 0.8
    //SET TARGET PROFIT 1.5*c1
    
    //----
    
    #35226 quote
    wreini1982
    Participant
    Junior

    Weil auch der höchste berechnete Verlust nicht in einer Größenordnung ist, wo man sagt er macht Tausende Euro Minus bei einem falschen Trade.

    MFG

    Wolfi

    #35319 quote
    Nicolas
    Keymaster
    Master

    Strategieprofit nur geschlossene Aufträge, es berechnet nicht den ganzen Gewinn mit aktuellen geöffneten Aufträgen. Wussten Sie es schon?

    #35381 quote
    wreini1982
    Participant
    Junior

    Das ist mir bekannt, das wenn alle Positionen geschlossen sind die Berechnung erfolgt und nicht die Potentielle Gewinne berücksichtig werden. Für mich ist es aber trotzdem nicht erklärbar, warum ein so großer Sprung drinnen ist.

    ich sehe z.B. das bei einer Erhöhung des Verlustes bei welchem das System beendet werden soll, dass ein gewaltiger Sprung im Drowndown vorhanden ist, der weit über dieser Grenze liegt, aber der angezeigte maximale Verlust ist viel kleiner, siehe z.B. aus den beigefügten Bilder.

    In den Bilder sieht man:

    DAXmini, H1, 10.000 Startkapital, Spread 1

    1. Bild ist mit Grenze bei -2000 Euro = sieht logisch aus
    2. Bild ist mit Grenze bei -2000 Euro = sieht nicht logisch aus, weil max. drohdown = 14000 Euro, aber Höchster Verlust ist mit 702 Euro angeführt

    –> Also wäre der extrem Fall, das System hat einen Strategyprofit von -1999,99 Euro und beim nächsten Trade können maximal die -702 Euro (höchster Verlust) hinzukommen und dann das System gestoppt werden.

    Eventuell habe ich einen Gedankenfehler, aber so würde ich mir diese Funktionen erwarten aus den vorhanden Zahlen aus dem Backtesting.

    #35410 quote
    Nicolas
    Keymaster
    Master

    Meiner Meinung nach sollten Sie GRAPH STRATEGYPROFIT und sehen, ob es effektiv den -2000 Verlust und wann erreicht hat.

    #35417 quote
    wreini1982
    Participant
    Junior

    Vielen Dank, ich hab meinen Fehler schon gesehen, dass System funktioniert schon. Der Drowndown und maximale Verlust haben keine Aussage, weil erst bei einem absolut Wert von -2000 des Systemes, es abgeschalten wird.

    Der Drowdown kann auch passieren natürlich nach dem vorher schon viel viel mehr gewonnen wurde und dadurch nicht die Schwelle von -2000 durchbrochen wird.

    Daher habe ich dann das System entwickelt, welches den Stop kontinuierlich nachzieht.

    if Gewinn < (-a*startcontracts + dyncontracts*a) THEN
    contractnumber = 0
    ENDIF

    Vielen Dank beim Schreiben hier ist mir nun der Fehler aufgefallen und vielen Dank für den Hinweis mit der GRAPH-Funktion

    #203012 quote
    rmhandel
    Participant
    Junior

    Hallo und vielen Dank für die tolle Info!

     

    if Gewinn < (-a*startcontracts + dyncontracts*a) THEN
    contractnumber = 0
    ENDIF

    Bitte das noch einmal für Nicht Mathematiker wenn möglich. Besonders würde mich das (-a*) interessieren von der Bedeutung her.

    bedeutet dass das Strategyprofit damit das System nicht ganz abschaltet sondern in der eingestellten Anzahl die Strategie sich wiederholen lässt.

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

Quit / Stop Funktion backtesting


ProOrder: Automatischer Handel & Backtesting

New Reply
Author
author-avatar
wreini1982 @wreini1982 Participant
Summary

This topic contains 8 replies,
has 1 voice, and was last updated by rmhandel
3 years, 3 months ago.

Topic Details
Forum: ProOrder: Automatischer Handel & Backtesting
Language: German
Started: 05/10/2017
Status: Active
Attachments: 2 files
Logo Logo
Loading...