System mit zufälligen Einsiegen

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

    Hallo, ist es möglich ein System zu schreiben, sodass 10 Trades an 10 zufälligen Tagen / Datum innerhalb eines bestimmten Zeitraums eröffnen würden.

    Die 10 Trades sollen per Zufall im Zeitraum vom 01.01.2024 – 30.06.2025 eröffnet werden.

    Ist so etwas machbar??

    Vielen Dank

    #255294 quote
    Iván González
    Moderator
    Master

    Ja, das ist möglich. Hier ein Beispiel:

    DEFPARAM CumulateOrders = False
    
    startDate = 20240101
    endDate = 20250630
    
    ONCE tradesTotal = 0
    
    IF Date >= startDate AND Date <= endDate AND tradesTotal < 10 THEN
       diceRoll = RANDOM(1, 20)
       IF diceRoll = 1 AND NOT ONMARKET THEN
          BUY 1 CONTRACT AT MARKET
          tradesTotal = tradesTotal + 1
       ENDIF
    ENDIF
    
    IF ONMARKET THEN
       SELL AT MARKET
    ENDIF
    

    Wichtig: Die Funktion RANDOM() generiert bei jedem Backtest andere Zufallszahlen. Das bedeutet, dass die Einstiegstage bei jeder Ausführung unterschiedlich sein werden.
    Die Exit-Logik im Beispiel schließt die Position am nächsten Tag. Sie können dies nach Bedarf anpassen (z.B. Stop-Loss, Take-Profit, oder längere Haltedauer).

    robertogozzi thanked this post
    #255315 quote
    axmichi
    Participant
    Senior

    Hallo,und Wow, vielen Dank!!!

    ich hätte noch die Frage, welche Funktion hat die Zahl 20 in Ihrem code?

    diceRoll = RANDOM(1, 20)

    Wenn ich den Zeitraum von Wann bis Wann es zufällige Trades geben soll, vergrößern will, muss ich auch die Zahl 20 vergrößern??!!

    #255316 quote
    axmichi
    Participant
    Senior

    Wie wäre der Code wenn ich 100 zufällige Trades in einem Zeitraum von 01.01.2008 – Heute haben will??

    #255323 quote
    Iván González
    Moderator
    Master

    Die Zahl 20 bestimmt die tägliche Wahrscheinlichkeit: RANDOM(1,20) bedeutet, dass jeden Tag eine Chance von 1/20 = 5% besteht, einen Trade zu eröffnen.
    Der Trick ist: Wir verwenden eine relativ hohe Wahrscheinlichkeit und lassen den Zähler (tradesTotal < 10) die Trades auf genau 10 begrenzen. Wenn Sie den Zeitraum vergrößern und die Zahl 20 nicht ändern, werden die Trades schneller erreicht und konzentrieren sich am Anfang des Zeitraums. Wenn Sie möchten, dass die Trades gleichmäßiger über einen längeren Zeitraum verteilt werden, können Sie die Zahl erhöhen (z.B. 30 oder 40). Für 100 Trades von 2008 bis heute:

    DEFPARAM CumulateOrders = False
    
    startDate = 20080101
    
    ONCE tradesTotal = 0
    
    IF Date >= startDate AND tradesTotal < 100 THEN
        diceRoll = RANDOM(1, 30)
        IF diceRoll = 1 AND NOT ONMARKET THEN
            BUY 1 CONTRACT AT MARKET
            tradesTotal = tradesTotal + 1
        ENDIF
    ENDIF
    
    IF ONMARKET THEN
        SELL AT MARKET
    ENDIF

    Hinweis: Sie können mit der Zahl 30 experimentieren. Eine kleinere Zahl (z.B. 20) konzentriert die Trades mehr am Anfang, eine größere Zahl (z.B. 40-50) verteilt sie gleichmäßiger über den gesamten Zeitraum.

    #255327 quote
    axmichi
    Participant
    Senior

    Toll, das hat gut funktioniert.

    Können sie mir noch sagen, wie die Ausstiegsbedingung lauten muss, jeder Trade auch zufällig nach einer zufälligen Anzahl von Tagen schließen soll, die im Bereich von 2 – 30 Tagen liegt.

     

    Vielen Dank

    #255330 quote
    Iván González
    Moderator
    Master

    Hier ist der Code mit zufälligem Ausstieg nach 2-30 Tagen:

    DEFPARAM CumulateOrders = False
    
    startDate = 20080101
    
    ONCE tradesTotal = 0
    
    // Random entry
    IF Date >= startDate AND tradesTotal < 100 AND NOT ONMARKET THEN
       diceRoll = RANDOM(1, 30)
       IF diceRoll = 1 THEN
          BUY 1 CONTRACT AT MARKET
          tradesTotal = tradesTotal + 1
          exitDays = RANDOM(2, 30)
       ENDIF
    ENDIF
    
    // Random exit after 2-30 days
    IF ONMARKET THEN
       barsInTrade = barsInTrade + 1
       IF barsInTrade >= exitDays THEN
          SELL AT MARKET
       ENDIF
    ELSE
       barsInTrade = 0
    ENDIF

    Bei jedem Trade wird eine zufällige Haltedauer zwischen 2 und 30 Tagen generiert. Der Zähler barsInTrade zählt die Tage im Trade und wird beim Ausstieg automatisch zurückgesetzt.

    plbourse thanked this post
    #255348 quote
    axmichi
    Participant
    Senior

    Hallo Ivan,, Danke Dir das ist toll

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

System mit zufälligen Einsiegen


ProOrder: Automatischer Handel & Backtesting

New Reply
Author
author-avatar
axmichi @axmichi Participant
Summary

This topic contains 7 replies,
has 2 voices, and was last updated by axmichi
1 month, 2 weeks ago.

Topic Details
Forum: ProOrder: Automatischer Handel & Backtesting
Language: German
Started: 01/14/2026
Status: Active
Attachments: No files
Logo Logo
Loading...