Maximal 1 Trade inerhalb eines Zeitraums

Viewing 12 posts - 1 through 12 (of 12 total)
  • Author
    Posts
  • #35516 quote
    imokdesign
    Participant
    Senior

    Hallo, ich habe auf der Seite von WH Selfinvest eine scheinbar profitable Strategie gesehen, die ich gerne in ProOrder selber nachbauen würde:

    https://www.whselfinvest.de/de/trading_strategien_35_EUR_USD_07h30.php

    Im grunde ist die Strategie Recht simpel und für jemanden wie mich (ohne Programmierkenntnisse) grad noch umsetzbar. Was mir allerdings fehlt, ist das nur Maximal 1 Trade zwischen 7:30 und 12:00 Uhr eingegangen werden soll und das beim ersten aufkommenden Signal in diesem Zeitraum. Alle weiteren aufkommenden Signale in diesem Zeitraum sollen ignoriert werden. Der Trade wird auch spätestens 12:00 Uhr geschlossen.

    Kann mir da jemand helfen?
    Vielen Dank im Vorraus

    #35689 quote
    Nicolas
    Keymaster
    Master

    Nun, ich bin in der Übersetzung mit der Strategiebeschreibung verloren. Könnten Sie bitte den Link (oder die Beschreibung vielleicht) der Strategie auf Englisch finden und posten? Danke vielmals!

    #35695 quote
    beeb
    Participant
    Average

    Hallo du vergibst einfach eine variable dafür.

    Du lässt “onetrade” immer um 6 Uhr auf den Wert 0 setzten und wenn eine Position ausgeführt wir lässt du sie auf 1 setzen dann dürfte er keine Postion mehr eingehen wenn “onetrade” nicht auf 0 steht.

    So würde ich das Programmieren :

    If OpenTime = 060000 then
         onetrade = 0
    ENDIF
    
    c1 = ....Die bedingungen
    
    IF c1 AND (onetrade = 0) THEN
         BUY 1 CONTRACT AT MARKET
         onetrade = 1
    ENDIF

    Bitte vorher Testen.

    Gruß Benny

    Nicolas thanked this post
    #35871 quote
    imokdesign
    Participant
    Senior

    Hi beeb & Nicolas,

    danke für euer Feedback. @beeb, ich habe deinen Codeschnipsel fast erfolgreich integrieren können und es handelt “fast” überall nur einmal von 7:30 bis 12:00 Uhr. Ich weiß noch nicht woran es genau liegt. Vielleicht weil ich deinen Code etwas rudimentär eingebaut habe. Beim Stop habe ich doch noch meine Probleme und wollte ihn improvisatorisch durch einen 48 Donchain stop am Lowe oder upper Band festsetzen. Aber da dieser bei IG in der Simplen befehlsmaske nicht anwählbar ist bin ich mir auch mit der Umsetzung des stops im Unklaren. Daher konnte ich den Backtest noch nicht exakt nach strategie testen.


    @Nicolas
    i try to explane this Strategie in a few words:

    Timeframe: 30Min (Trade max. one (the first) signal per Day)

    Buy or Sell: Just at the first signal between 7:30 and 12:00 oclock.

    Long Parameters: MACD > Signal, DMI Upper Band > DMI Lower Band, Supertrend < Close

    Short Parameters: MACD < Signal, DMI Upper Band < DMI Lower Band, Supertrend > Close

    Take Profit: 12 pips

    Stop Loss (Long/Short: The lowest low or Highest high between the last 48 Candles. The 12:00 Timecap closes the Trade
    (I try to use the Donchain Lower and Upper band (48) but there is noch chance to use it in the simple programming mask (pro Realtime IG Markets) so i dont know what to do at this point.

    Hier ist mal der code. Bitte nicht wundern, ich hab nicht so die Programmier-kenntnisse:

    // Festlegen der Code-Parameter
    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 = 073000
    // Stornieren aller pending Orders und Schließen aller Positionen zur "FLATAFTER"-Zeit
    DEFPARAM FLATAFTER = 120000
    
    // Verhindert das Platzieren von neuen Ordern zum Markteintritt oder Vergrößern von Positionen vor einer bestimmten Uhrzeit
    timeEnterBefore = time >= 073000
    
    // Verhindert das Platzieren von neuen Ordern zum Markteintritt oder Vergrößern von Positionen nach einer bestimmten Uhrzeit
    timeEnterAfter = time < 120000
    
    // Verhindert das Trading an bestimmten Wochentagen
    daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0
    
    If OpenTime = 073000 then
    onetrade = 0
    ENDIF
    
    // Bedingungen zum Einstieg in Long-Positionen
    indicator1 = SuperTrend[3,10]
    c1 = (indicator1 < close)
    indicator2 = MACDline[12,26,9](close)
    indicator3 = ExponentialAverage[9](indicator2)
    c2 = (indicator2 > indicator3)
    indicator4 = DIplus[14](close)
    indicator5 = DIminus[14](close)
    c3 = (indicator4 > indicator5)
    
    IF (c1 AND c2 AND c3) AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry THEN
    BUY 1 CONTRACT AT MARKET
    ENDIF
    
    IF (c1 AND c2 AND c3) AND (onetrade = 0) THEN
    BUY 1 CONTRACT AT MARKET
    onetrade = 1
    
    // Bedingungen zum Einstieg in Short-Positionen
    indicator6 = SuperTrend[3,10]
    c4 = (indicator6 > close)
    indicator7 = DIminus[14](close)
    indicator8 = DIplus[14](close)
    c5 = (indicator7 > indicator8)
    indicator9 = MACDline[12,26,9](close)
    indicator10 = ExponentialAverage[9](indicator9)
    c6 = (indicator9 < indicator10)
    
    IF (c4 AND c5 AND c6) AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry THEN
    SELLSHORT 1 CONTRACT AT MARKET
    ENDIF
    
    IF (c4 AND c5 AND c6) AND (onetrade = 0) THEN
    SELLSHORT 1 CONTRACT AT MARKET
    onetrade = 1
    ENDIF
    
    // Stops und Targets
    SET STOP  ???
    SET TARGET pPROFIT 12
    ENDIF
    #35895 quote
    beeb
    Participant
    Average

    Hallo also wegen dem fast keine doppeltrades :

    Ich bin mir nicht ganz im klaren warum du diese Position doppelt drin hast

    IF (c1 AND c2 AND c3) AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry THEN
    BUY 1 CONTRACT AT MARKET
    ENDIF

    IF (c1 AND c2 AND c3) AND (onetrade = 0) THEN
    BUY 1 CONTRACT AT MARKET
    onetrade = 1

    Die erste Order wird nicht durch onetrade gestoppt sondern trotzdem ausgeführt, wenn mich nicht alles täuscht müsste es so heißen

     

    IF (c1 AND c2 AND c3) AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry AND (onetrade = 0) THEN
    BUY 1 CONTRACT AT MARKET
    
    Onetrade = 1
    
    ENDIF

     

    Und die zweite Order weglassen, ausserdem fehlt da ein ENDIF.

    Gruß Benny

    Wegen dem stop muss ich mich nochmal reinlesen.

    Nicolas thanked this post
    #35950 quote
    beeb
    Participant
    Average

    Zu deinem Stop teste bitte mal das hier (von mir ungetestet)

    //long
    IF (c1 AND c2 AND c3) AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry AND (onetrade = 0) THEN
    BUY 1 CONTRACT AT MARKET
    Onetrade = 1
    stoplow = LOWEST[48](low)
    mystop = close-stoplow
    ENDIF
    
    //für short
    IF(c4 AND c5 AND c6) AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry AND (onetrade = 0) then
    SELLSHORT 1 CONTRACT AT MARKET
    onetrade = 1
    stophigh = HIGHEST[48](high)
    mystop = stophigh-close
    ENDIF
    
    //stops
    Set stop loss mystop
    #35963 quote
    imokdesign
    Participant
    Senior

    beeb, danke fürs Feedback, deinem Hinweis und Code. Ich werds heut Abend mal versuchen zu ergänzen. 🙂

     


    @Nicolas
    Here you can read the Strategy in English:

    https://www.whselfinvest.de/en/trading_strategies_35_EUR_USD_07h30.php

    #36102 quote
    imokdesign
    Participant
    Senior

    Hallo zusammen,

    hab alles mal eingebaut und laufen lassen. Ich meine nun läuft sie korrekt. Allerdings ist diese scheinbar doch nicht profitabel wie auf whs (auf 2 Jahren komplett absteigender Ast). 🙁

    Meine überlegung an dieser Stelle ist, ob diese strategie nur mit einem zusätzlichen Money Management (stichwort Zinseszins) bezogen auf den 48 auskommt/funktioniert, da dieser ja vom Entry immer unterschiedlich weit weg ist, oder ob Sie so oder so einfach nicht funktioniert?

    … oder vertue ich mich da grad mit dem Indikator  DM und DMI ?

     

    Hier der Code:

    // Festlegen der Code-Parameter
    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 = 073000
    // Stornieren aller pending Orders und Schließen aller Positionen zur "FLATAFTER"-Zeit
    DEFPARAM FLATAFTER = 120000
    
    // Verhindert das Platzieren von neuen Ordern zum Markteintritt oder Vergrößern von Positionen vor einer bestimmten Uhrzeit
    timeEnterBefore = time >= 073000
    
    // Verhindert das Platzieren von neuen Ordern zum Markteintritt oder Vergrößern von Positionen nach einer bestimmten Uhrzeit
    timeEnterAfter = time < 120000
    
    // Verhindert das Trading an bestimmten Wochentagen
    daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0
    
    
    If OpenTime = 073000 then
    onetrade = 0
    ENDIF
    
    // Bedingungen zum Einstieg in Long-Positionen
    indicator1 = SuperTrend[3,10]
    c1 = (indicator1 < close)
    indicator2 = MACDline[12,26,9](close)
    indicator3 = ExponentialAverage[9](indicator2)
    c2 = (indicator2 > indicator3)
    indicator4 = DIplus[14](close)
    indicator5 = DIminus[14](close)
    c3 = (indicator4 > indicator5)
    
    IF (c1 AND c2 AND c3) AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry AND (onetrade = 0) THEN
    Buy 1 CONTRACT AT MARKET
     
    Onetrade = 1
    
    //Stop long
    IF (c1 AND c2 AND c3) AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry AND (onetrade = 0) THEN
    BUY 1 CONTRACT AT MARKET
    Onetrade = 1
    stoplow = LOWEST[48](low)
    mystop = close-stoplow
    ENDIF
    
    ENDIF
    
    // Bedingungen zum Einstieg in Short-Positionen
    indicator6 = SuperTrend[3,10]
    c4 = (indicator6 > close)
    indicator7 = DIminus[14](close)
    indicator8 = DIplus[14](close)
    c5 = (indicator7 > indicator8)
    indicator9 = MACDline[12,26,9](close)
    indicator10 = ExponentialAverage[9](indicator9)
    c6 = (indicator9 < indicator10)
    
    IF (c4 AND c5 AND c6) AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry AND (onetrade = 0) THEN
    SELLSHORT 1 CONTRACT AT MARKET
     
    Onetrade = 1
     
    ENDIF
     
    //Stop short
    IF(c4 AND c5 AND c6) AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry AND (onetrade = 0) then
    SELLSHORT 1 CONTRACT AT MARKET
    onetrade = 1
    stophigh = HIGHEST[48](high)
    mystop = stophigh-close
    ENDIF
     
    //stops
    Set stop loss mystop
    SET TARGET pPROFIT 12
    #38338 quote
    Despair
    Blocked
    Master

    Hab mir auch mal die Muehe gemacht die Strategie zu programmieren, aber sie ist auch fuer mich nicht profitabel. Weder mit festem Takeprofit (12 pips) noch mit trailing stop loss und das trotz des recht weitem stoploss (48-Perioden low). Ich glaub, das wird nichts…

    #38363 quote
    Nicolas
    Keymaster
    Master

    Ich erleichtert den Code und verändert ein paar Zeilen, siehe unten.
    Ich bekomme ziemlich nahe dem gleichen Ergebnis wie das ursprüngliche Ergebnis, aber auf der gleichen Zeit wie ihr Beispiel zwischen August 2010 und Januar 2013! Um die gleiche Gewinnkurve hat, wird es um die Ausbreitung zu ändern und / oder Zeitzone Ich denke, ..

    // Festlegen der Code-Parameter
    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 = 073000
    // Stornieren aller pending Orders und Schließen aller Positionen zur "FLATAFTER"-Zeit
    DEFPARAM FLATAFTER = 120000
    
    // Verhindert das Platzieren von neuen Ordern zum Markteintritt oder Vergrößern von Positionen vor einer bestimmten Uhrzeit
    timeEnterBefore = time >= 073000
    
    // Verhindert das Platzieren von neuen Ordern zum Markteintritt oder Vergrößern von Positionen nach einer bestimmten Uhrzeit
    timeEnterAfter = time < 120000
    
    // Verhindert das Trading an bestimmten Wochentagen
    daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0
    
    If OpenTime = 073000 then
    onetrade = 0
    ENDIF
    
    //indis
    indicator1 = SuperTrend[3,10]
    c1 = (indicator1 < close)
    indicator2 = MACDline[12,26,9](close)
    indicator3 = ExponentialAverage[9](indicator2)
    c2 = (indicator2 > indicator3)
    indicator4 = DIplus[14](close)
    indicator5 = DIminus[14](close)
    c3 = (indicator4 > indicator5)
    
    // Bedingungen zum Einstieg in Long-Positionen
    IF (c1 AND c2 AND c3) AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry AND onetrade = 0 THEN
    Buy 1 CONTRACT AT MARKET 
    Onetrade = 1
    stoplow = LOWEST[48](low)
    mystop = close-stoplow
    ENDIF
    
    // Bedingungen zum Einstieg in Short-Positionen
    IF (not c1 AND not c2 AND not c3) AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry AND onetrade = 0 THEN
    SELLSHORT 1 CONTRACT AT MARKET 
    Onetrade = 1
    stophigh = HIGHEST[48](high)
    mystop = stophigh-close
    ENDIF 
    
     
    //stops
    Set stop loss mystop
    SET TARGET pPROFIT 12
    #46246 quote
    besserwerden
    Participant
    Junior

    Hallo, arbeite mich gerade erstmals in “Strategien”/autmatisiertes Trading ein.

    Hab einige Versuche hinter mir und verstehe grundsätzlich nicht, dass ich bei meinen codes häufig entweder keinen einzigen oder nur einen einzigen Trade oder nur verlusttrades hinbekomme.

    Habe mir deshalb den obigen Code, um diesen an meine Indikatoren anzupassen, bzw. meine Indikatoren einzusetzen.

    Leider ohne Erfolg. Also hab ich einfach mal den Code oben, also den von Niclas (06/15/2017 at 2:49 PM) kopiert ohne etwas anzupassen und einen Dax-Backtest durchlaufen lassen. Keine Fehlermeldung, aber wieder wurde kein einziger Trade eröffnet. Habe verschieden Zeiteinheiten und lange Zeiträume ausprobiert…

    Kann mir jemand sagen woran das liegen könnte?

    Schöne Grüße

    Micha

    #46256 quote
    Despair
    Blocked
    Master

    Habe es mal ausprobiert. Nur copy/paste von Nicolas Code und unverändert auf EURUSD mini 30min laufen lassen.

    Angehängt das Resultat. Nicht berauschend, aber 1602Trades…

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

Maximal 1 Trade inerhalb eines Zeitraums


ProOrder: Automatischer Handel & Backtesting

New Reply
Author
author-avatar
imokdesign @imokdesign Participant
Summary

This topic contains 11 replies,
has 5 voices, and was last updated by Despair
8 years, 4 months ago.

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