Jeden Trade einzeln schließen

Viewing 8 posts - 31 through 38 (of 38 total)
  • Author
    Posts
  • #255116 quote
    JS
    Participant
    Senior

    Weil in seinem Beispiel IG verwendet wird und nicht IB…

    robertogozzi thanked this post
    #255123 quote
    axmichi
    Participant
    Senior

    OK verstehe!!  Aber ehrlich verstehe wer will  ??!!

    Ich habe noch eine andere Idee wie wir das machen können.

     

    Du hast mir doch geschrieben, dass ich Tradeindex und dann die Zahl dahinter verweden soll. Das funktioniert leider nicht genau, weil die Anzahl der Balken gezählt werden, wenn aber Feiertage usw. dazwischen sind, dann steigt das System nicht genau nach 100 Tagen aus. Kann man den Code nicht ändern das das System genau nach 100 Tagen raus geht ohne dieses Tradeindex-Barindex Das kann auch auf Stundenbasis geschehen, die Ausstiegszeit ist eher unrelevant, kann irgend eine sein

    Hier dein Code

    DEFPARAM CumulateOrders=True

    $moDate[1]=20250519
    $moDate[2]=20250521
    $moDate[3]=20250523

    For i=1 to 3
    If $moDate[i]=Date Then
    EntryDate=$moDate[i]
    Break
    EndIf
    Next

    IF Date=EntryDate and Time=210000 then
    Buy 1 Contract at Market
    ENDIF

    If LongOnMarket and BarIndex-TradeIndex(3)=2302 then
    Sell 1 Contract at Market
    ENDIF

    #255133 quote
    robertogozzi
    Moderator
    Master

    Es ist aus mehreren Gründen nicht möglich, exakt 100 Tage zu berechnen:

    • Datumsberechnungen sind mathematisch schwierig;
      .
    • Der 100. Tag nach Einstieg lässt sich zwar mit komplizierten Berechnungen ermitteln, aber es gibt keine Möglichkeit vorherzusagen, ob der Markt an diesem Tag geöffnet sein wird. Falls er geschlossen ist, wird die Position am nächsten Tag geschlossen, der ein, zwei oder mehr Tage später liegen kann.
    #255140 quote
    axmichi
    Participant
    Senior

    Ok, das verstehe ich.

    Leider können ja auf Tagesbasis keine Trades am Montag geöffnet werden…

     

    Ist es möglich die Einstiegsbedingungen auf Stundenbasis zu ändern, sodass der Trade um 21 Uhr auf einem Montag eröffnet wird und die Ausstiegsbedingungen auf Tagesbasis zu lassen, wie in Ivans Code, oder dem Datum ein oder zu geben, sodass das der Trade, wenn das Datum ein Montag ist, der Trade auf einem Dienstag eröffnet??

    DEFPARAM CumulateOrders = TRUE
     
    $moDate[0] = 20250519
    $moDate[1] = 20250521
    $moDate[2] = 20250523
     
    FOR i = 0 TO 2 DO
    IF Date = $moDate[i] THEN
    BUY 1 CONTRACT AT MARKET
    $moDateidx[i] = BarIndex + 1
    ENDIF
    NEXT
     
     
    IF LongOnMarket THEN
    FOR j = 0 TO 2 DO
    IF $moDateidx[j] > 0 THEN
    IF BarIndex - $moDateidx[j] = 100 THEN
    SELL 1 CONTRACT AT MARKET
    $moDateidx[j] = 0
    ENDIF
    ENDIF
    NEXT
    ENDIF
    #255334 quote
    robertogozzi
    Moderator
    Master

    Ivans Code funktioniert bereits korrekt, solange die eingegebenen Daten Montage sind (die Eingabe erfolgt um 21:00 Uhr am eingegebenen Datum).
    Bezüglich des Abschlusses sagten Sie, Ivans Methode sei in Ordnung.
    Ich verstehe nicht genau, was Sie am Dienstag tun möchten.

    #255341 quote
    axmichi
    Participant
    Senior

    Hallo Roberto

     

    am dienstag möchte ich nichts machen. Ich habe nur nicht verstanden, warum bei mir im Chart an  Montagen wie auch am 19.05.2025 kein Trade eröffnet wird.

     

    In anderen Systemen funktioniert es.

     

    
    DEFPARAM CumulateOrders = TRUE
     
    $moDate[0] = 20250519
    $moDate[1] = 20250521
    $moDate[2] = 20250523
     
    FOR i = 0 TO 2 DO
    IF Date = $moDate[i] THEN
    BUY 1 CONTRACT AT MARKET
    $moDateidx[i] = BarIndex + 1
    ENDIF
    NEXT
     
     
    IF LongOnMarket THEN
    FOR j = 0 TO 2 DO
    IF $moDateidx[j] > 0 THEN
    IF BarIndex - $moDateidx[j] = 100 THEN
    SELL 1 CONTRACT AT MARKET
    $moDateidx[j] = 0
    ENDIF
    ENDIF
    NEXT
    ENDIF
    #255372 quote
    robertogozzi
    Moderator
    Master

    Ich glaube, ich verstehe, was Sie meinen: Jede Position muss nach 100 Bars geschlossen werden.
    Dazu müssen Sie den ersten Bar jedes Trades in einem Array speichern, dessen Index durch abs(CountOfPosition) gegeben ist, also 1, 2, 3 usw. (in Ihrem Fall nur 3).
    Ich habe außerdem DATE in OPENDATE geändert.

    DEFPARAM CumulateOrders = TRUE
    //
    $moDate[0] = 20250519
    $moDate[1] = 20250521
    $moDate[2] = 20250523
     
    FOR i = 0 TO 2 DO
       IF OpenDate = $moDate[i] THEN
          BUY 1 CONTRACT AT MARKET
          $moDateidx[abs(CountOfPosition)] = BarIndex + 1
       ENDIF
    NEXT
    // 
    IF LongOnMarket THEN
       //FOR j = 0 TO 2 DO
       //IF $moDateidx[j] > 0 THEN
       //IF BarIndex - $moDateidx[j] = 100 THEN
       //SELL 1 CONTRACT AT MARKET
       //$moDateidx[j] = 0
       //ENDIF
       //ENDIF
       //NEXT
    FOR j = 0 TO abs(CountOfPosition) DO
       IF $moDateidx[j] > 0 THEN
          IF BarIndex - $moDateidx[j] = 100 THEN
             SELL 1 CONTRACT AT MARKET
             $moDateidx[j] = 0
          ENDIF
       ENDIF
    NEXT
    ENDIF
    #255416 quote
    axmichi
    Participant
    Senior

    Ja richtig, vielen Dank!!!

    robertogozzi thanked this post
Viewing 8 posts - 31 through 38 (of 38 total)
  • You must be logged in to reply to this topic.

Jeden Trade einzeln schließen


ProOrder: Automatischer Handel & Backtesting

New Reply
Author
author-avatar
axmichi @axmichi Participant
Summary

This topic contains 37 replies,
has 4 voices, and was last updated by axmichi
1 month, 1 week ago.

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