letzter Handelstag im Monat

Viewing 13 posts - 1 through 13 (of 13 total)
  • Author
    Posts
  • #243822 quote
    axmichi
    Participant
    Senior

    Hallo,

     

    ich möchte gern immer am letzten Handelstag im Monat einsteigen.

    Da jeder Monat unterschiedliche Anzahl von  Handelstagen hat, kann ich nicht die Funktion EntryDay = 22 daür nehmen

    Als Ausstieg möchte ich den 5. Handelstag verwenden, dies kann ich mit der folgenden Funktion machen

    ExitDay = 5

    if longonmarket and ((Day = ExitDay) OR ((Day > ExitDay) AND (Day[1] < ExitDay))) then
       sell at market
    endif
    Wie kann ich den letzten Handelstag im Monat im Code schreiben??
    Die Trades sollen im Stundenchart um 09 Uhr eröffnet und geschlossen werden.
    Vielen Dank
    #243857 quote
    robertogozzi
    Moderator
    Master

    Dieser Code funktioniert im täglichen Zeitrahmen.
    Die Variable LastTradingD gibt den letzten bekannten Handelstag an (Feiertage dürfen nicht bekannt sein):

    Timeframe(Monthly,default)
    thisMonth = OpenMonth
    thisYear  = OpenYear
    //
    Timeframe(Daily,UpdateOnClose)
    LastTradingD    = 0
    IF thisMonth <> thisMonth[1] THEN
    thisDay      = OpenDay
    thisDoW      = OpenDayOfWeek
    LastDay      = 31
    IF (thisMonth = 4) OR (thisMonth = 6) OR (thisMonth = 9) OR (thisMonth = 11) THEN
    LastDay = 30
    ELSIF (thisMonth = 2) THEN
    LastDay = 28
    IF (thisYear MOD 4) = 0 THEN
    IF (thisYear MOD 4) = 100 THEN
    IF (thisYear MOD 4) = 400 THEN
    LastDay = 29
    ENDIF
    ELSE
    LastDay = 29
    ENDIF
    ENDIF
    ENDIF
    i            = thisDay
    j            = thisDoW
    LastTradingD = i
    while(1)
    IF j >= 1 AND j <= 5 THEN
    LastTradingD = i
    ENDIF
    j = j + 1
    IF j = 7 THEN
    j = 0
    ENDIF
    i = i + 1
    IF i > LastDay THEN
    break
    ENDIF
    WEND
    ENDIF
    RETURN LastTradingD AS "Last Trading Day"
    Iván González thanked this post
    #243925 quote
    axmichi
    Participant
    Senior

    Hallo Roberto, danke, es ist wohl als Indikator geschrieben und nicht als Handelssystem ?? oder ??

    Ich wollte es als Backtest handeln?

    #243928 quote
    robertogozzi
    Moderator
    Master

    Du hast recht, tut mir leid. Entfernen Sie die letzte Zeile und verwenden Sie die Variable LastTradingD, um den letzten Handelstag herauszufinden.

    #243943 quote
    axmichi
    Participant
    Senior

    Hallo,

     

    habe ich gemacht. Hab es auf dem NQ im Tageschart getestet und es steigt auch am 3. oder 4. des Monats ein?! 03.09.2024,  04.11.2024

     

    Aber es soll ja am Open des letzten Tages im Monat einsteigen?

    #243956 quote
    robertogozzi
    Moderator
    Master

    Bei mir werden die Operationen korrekt auf der Grundlage des am letzten Tag des Monats generierten Signals eröffnet (auf der Grafik sehen Sie also den Eintrag am folgenden Tag), wenn ich in meiner Eintragsbedingung OpenDAY verwende.
    Wenn ich am letzten Tag einsteigen möchte, muss ich DAY verwenden, also den Tag am Ende der Kerze vor dem Einstieg.
    Ich habe diesen Code verwendet:

    Timeframe(Monthly,default)
    thisMonth = OpenMonth
    thisYear  = OpenYear
    //
    Timeframe(Daily,UpdateOnClose)
    IF thisMonth <> thisMonth[1] THEN
    thisDay      = OpenDay
    thisDoW      = OpenDayOfWeek
    LastDay      = 31
    IF (thisMonth = 4) OR (thisMonth = 6) OR (thisMonth = 9) OR (thisMonth = 11) THEN
    LastDay = 30
    ELSIF (thisMonth = 2) THEN
    LastDay = 28
    IF (thisYear MOD 4) = 0 THEN
    IF (thisYear MOD 4) = 100 THEN
    IF (thisYear MOD 4) = 400 THEN
    LastDay = 29
    ENDIF
    ELSE
    LastDay = 29
    ENDIF
    ENDIF
    ENDIF
    i            = thisDay
    j            = thisDoW
    LastTradingD = i
    while(1)
    IF j >= 1 AND j <= 5 THEN
    LastTradingD = i
    ENDIF
    j = j + 1
    IF j = 7 THEN
    j = 0
    ENDIF
    i = i + 1
    IF i > LastDay THEN
    break
    ENDIF
    WEND
    ENDIF
    //RETURN LastTradingD AS "Last Trading Day"
    //
    Timeframe(default)
    IF OnMarket THEN
    sell at Market
    ELSIF Day = LastTradingD THEN   //or OpenDay
    buy at market
    endif
    //
    //graph LastTradingD AS "Last Trading Day" coloured("Red")
    //graph OpenDay      AS "Current DAY"
    #243970 quote
    axmichi
    Participant
    Senior

    Hallo Roberto,

     

    ich habe Ihren Code im Mini Nasdaq verwendet auf Tagesbasis.

    Es gibt Monate das steigt das System zu spät ein und es gibt Monate wo gar nicht eingestiegen wird.

     

    Siehe Bild

    #244345 quote
    axmichi
    Participant
    Senior

    warum tradet das system in manchen Monaten nicht?

    #244348 quote
    robertogozzi
    Moderator
    Master

    Entschuldigen Sie, ich konnte das vorher nicht überprüfen.
    Wie Sie der Liste der geschlossenen Trades entnehmen können, wurden von Januar 2023 bis heute alle Trades am Monatsende eröffnet.
    Ich kann dir keine Erklärung geben. Bitte überprüfen Sie Ihren Code sorgfältig.

    #244350 quote
    axmichi
    Participant
    Senior

    In welchem Markt haben Sie es getestet? ich probier später aus!!

    #244355 quote
    axmichi
    Participant
    Senior

    Hallo ich habe es auf Tagesbasis in der  APPL Aktie getestet und diesen Code verwendet.

    Im Jahr 2023 fehlt der Juli und im Jahr 2024 fehlt bei mir der September und der November. siehe Bild

    hier der Code:

    Timeframe(Monthly,default)
    thisMonth = OpenMonth
    thisYear = OpenYear
    //
    Timeframe(Daily,UpdateOnClose)
    IF thisMonth <> thisMonth[1] THEN
    thisDay = OPENDay
    thisDoW = OpenDayOfWeek
    LastDay = 31
    IF (thisMonth = 4) OR (thisMonth = 6) OR (thisMonth = 9) OR (thisMonth = 11) THEN
    LastDay = 30
    ELSIF (thisMonth = 2) THEN
    LastDay = 28
    IF (thisYear MOD 4) = 0 THEN
    IF (thisYear MOD 4) = 100 THEN
    IF (thisYear MOD 4) = 400 THEN
    LastDay = 29
    ENDIF
    ELSE
    LastDay = 29
    ENDIF
    ENDIF
    ENDIF
    i = thisDay
    j = thisDoW
    LastTradingD = i
    while(1)
    IF j >= 1 AND j <= 5 THEN
    LastTradingD = i
    ENDIF
    j = j + 1
    IF j = 7 THEN
    j = 0
    ENDIF
    i = i + 1
    IF i > LastDay THEN
    break
    ENDIF
    WEND
    ENDIF
    //RETURN LastTradingD AS “Last Trading Day”
    //
    Timeframe(default)
    IF OnMarket THEN
    sell at Market
    ELSIF Day = LastTradingD THEN //or OpenDay
    buy at market
    endif
    //
    //graph LastTradingD AS “Last Trading Day” coloured(“Red”)
    //graph OpenDay AS “Current DAY”

    //ExitDay = 5
    //if longonmarket and ((Day = ExitDay) OR ((Day > ExitDay) AND (Day[1] < ExitDay))) then
    //sell at market
    //endif

    #244438 quote
    robertogozzi
    Moderator
    Master

    Ich verstehe, wo das Problem liegt. Dies liegt daran, dass die Bestellung am Ende jedes Balkens beginnen muss.

    1. Wenn Sie DAY verwenden, wird der Tag zum Schluss eines Balkens geprüft, sodass die Entscheidung zum Einstieg zum Schluss des vorherigen Balkens getroffen werden muss. Im Fall von Juli 2023 ist der letzte Tag Montag, der 31., aber der vorherige Balken ist Freitag, der 28.; zum Handelsschluss am Freitag ist der nächste Balken jedoch nicht bekannt, weil der Handel geschlossen ist. Wenn der Handel am Montag wieder aufgenommen wird, wird die Strategie am Ende des Balkens geschlossen und nimmt daher den 1. August 2023 als Datum an. Der 31. Juli kann daher NICHT berücksichtigt werden.
      .
    2. Wenn Sie OPENDAY verwenden, wird das Schlussdatum jedes Balkens berücksichtigt. So lösen Sie das Problem von JULI 2023. In anderen Monaten treten jedoch ähnliche Probleme auf. Außerdem wird das Datum des letzten Tages beim Schließen der Kerze berücksichtigt, sodass die Position am ersten Tag des Folgemonats eröffnet wird. Allerdings bleibt auch in diesem Fall die Operation Ende März 2024 unberücksichtigt, die eigentlich am 1. April hätte durchgeführt werden sollen, da der Vortag aber ein Wochenende ist, kann die Operation nicht durchgeführt werden.

    Es gibt keine Möglichkeit, diese Probleme zu lösen.

    #244529 quote
    axmichi
    Participant
    Senior

    Hallo und Danke,

     

    danke für die Information ich versuche es mal mit dem Backtest.

     

    Danke

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

letzter Handelstag im Monat


ProOrder: Automatischer Handel & Backtesting

New Reply
Author
author-avatar
axmichi @axmichi Participant
Summary

This topic contains 12 replies,
has 2 voices, and was last updated by axmichi
11 months, 1 week ago.

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