Hallo,
in diesem System müssten die 3 Trades nach 100 Kerzen geschlossen werden.
Leider werden alle Trades zum gleichen Zeitpunkt geschlossen.
Was muss man codieren, dass jeer Trade korrekt schließt
DEFPARAM CumulateOrders = TRUE
// dates to enter (format: yyyymmdd)
$moDate[1] = 20250519
$moDate[2] = 20250521
$moDate[3] = 20250523
EntryDate = 0
FOR i = 1 TO 3
IF Date = $moDate[i] THEN
EntryDate = Date
break
ENDIF
NEXT
//
IF Date = EntryDate AND Time = 210000 THEN
buy 1 CONTRACT AT MARKET
EntryDate = 0
ENDIF
IF longonmarket and barindex - Tradeindex = 100 Then
sell AT MARKET
ENDIF
Der Grund dafür, dass alle Ihre Geschäfte auf einmal geschlossen werden, liegt darin, dass in ProRealTime die SELL-Anweisung ohne Angabe eines Betrags die gesamte Position schließt. Darüber hinaus speichert die TRADEINDEX-Funktion nur die Referenz der zuletzt durchgeführten Operation, sodass vorherige vom System „vergessen“ werden.
Die vorgeschlagene Lösung ist folgende: Wir verwenden Arrays für die Eingabe und Ausgabe und speichern den Barindex in der Eingabe.
DEFPARAM CumulateOrders = TRUE
$moDate[0] = 20250519
$moDate[1] = 20250521
$moDate[2] = 20250523
FOR i = 0 TO 2 DO
IF Date = $moDate[i] AND Time = 210000 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
JSParticipant
Senior
Du kannst auch mit “TradeIndex(3)” arbeiten…
DefParam CumulateOrders=True
$moDate[1]=20250519
$moDate[2]=20250521
$moDate[3]=20250523
For i=1 to 3
If $moDate[i]=OpenDate Then
EntryDate=$moDate[i]
Break
EndIf
Next
IF OpenDate=EntryDate then
Buy 1 Contract at Market
ENDIF
If LongOnMarket and BarIndex-TradeIndex(3)=100-1 Then
Sell 1 Contract at Market
ENDIF
Vielen Dank.
@ IVAN der Einstieg passt super.
Können wir den Ausstieg noch so anpassen, dass das system nach 100 Tagen um 21 Uhr wieder aus steigt?
@ JD auch Dir danke. leider steigt dein system nicht am 19.05 ein, sondern einen Tag später und es werden nicht 3 Trades gestartet, sondern nur 2. Ich denke es hängt damit zusammen, dass der Vortag ein Freitag ist???
JSParticipant
Senior
Hi,
ich habe die Zeiten nicht berücksichtigt, aber die kannst du jederzeit selbst hinzufügen…
Da keine Zeiten verwendet werden, werden die Trades zum „Open“ des nächsten Tages eröffnet…
Bei mir eröffnet der Algo drei Trades … (siehe Abbildung)…
ok meinst Du es so ??
IF OpenDate=EntryDate and Time = 210000 then
Hab es jetzt so geändert aber die Trades werden zwar richtig geöffnet aber nicht geschlossen
IF OpenDate=EntryDate and Time = 210000 then
Buy 1 Contract at Market
ENDIF
If LongOnMarket and BarIndex-TradeIndex(3)=10-1 and Time = 210000 Then
Sell 1 Contract at Market
ENDIF
JSParticipant
Senior
Das ist mit Zeiten…
(Bitte mit einem Timeframe von maximal 1 Stunde verwenden, da sonst die Zeiten nicht korrekt ausgelesen werden.)
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(1)=100-1 Then
Sell 1 Contract at Market
ENDIF
Hi. jeder Trade soll nach 100 Tagen um 21 uhr schließen? !
JSParticipant
Senior
Wenn du diese Zeiten verwenden möchtest, kannst du kein Tages-Timeframe benutzen, da die Zeiten sonst nicht ausgelesen werden können…
Bei Verwendung von Zeiten musst du ein Timeframe von maximal 1 Stunde einsetzen…
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)=100-1 then
Sell 1 Contract at Market
ENDIF
JSParticipant
Senior
Um die Positionen exakt um 21:00 Uhr zu schließen (nach 100 Tagen), kannst du die unten angegebene Anzahl an Bars verwenden…(TF=1 Uhr)
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
Ich habe es im 1 Stunden timeframe gemacht aber die trades schließen nicht am 100. Tag sondern schon nach 30 tage
Probier es mal bei dir, bitte
In deiner ausstiegsregel ist auch kein 21 uhr drin??
JSParticipant
Senior
Du kannst die Zeit hinzufügen, aber das ist nicht notwendig, da hier die Anzahl der verstrichenen Bars das Schließen der Positionen bestimmt…
2302 Bars entsprechen exakt 100 Tagen, und wenn die Position um 21:00 Uhr eröffnet wird, wird sie auch wieder um 21:00 Uhr geschlossen…
Ich verwende dies in Kombination mit IG.
Ok, ich hab die Kurse von interactive brokers, malsehen ob das auch geht, Danke Dir