Hallo Ich möchte eine Wochenstrategie handeln.
Ich möchte ein Datum als Startdatum eingeben, dies wird immer ein Montag sein!
Ab diesem Startdatum an jedem xten Montag, soll ein Trade um 16 Uhr eröffnet werden und am nächsten Montag um 09 Uhr gesschlossen werden.
Jetzt kommt das schwierige…
Mit dem xten Montag ist gemeint, dass die Strategie zum Beispiel in einem 10 Wochen Rythmus kauft.
Hier ein Beispiel.
Startdatum ist der 29.07.2023, nun kauf die Strategie um 16 Uhr 1 kontrakt und verkauft es wieder eine Woche später am Montag um 16 Uhr. Dies alle 10 Wochen!
Der nächste Trade wäre dann am 09.10.2023, dann wieder am 18.12.2023 und dann 26.02.2024
Man müsste dies im Code sicher mit den Kalenderwochen kombinieren!
In welchem Rythmus die Strategie kauft, möchte ich später mit einer Variable testen!?
Die Strategie soll auch über mehrere Jahre arbeiten und somit muss sie beim Jahreswechsel, wo es wieder mit Kalenderwoche 1 los geht fortlaufend weiter zählen
Es wäre gut wenn dies so codiert wäre.
Ich weiß nicht ob das überhaupt geht?
Vielen Dank
Der 29. Juli 2023 war NICHT auf einem Montag. Bedeutet das, dass wir, wenn das Startdatum nicht Montag ist, bis zum ersten folgenden Montag warten müssen?
Nein, denn ich habe mich im Datum vertan es war falsch!
Das Datum war Montag der 24.07.2023
Danke ihnen
IF (DayOfWeek = 1) AND (DayOfWeek <> DayOfWeek[1]) AND OnMarket THEN
SELL AT MARKET
ENDIF
IF (DayOfWeek = 1) AND (DayOfWeek <> DayOfWeek[1]) THEN
Tally = Tally + 1
ENDIF
IF (DayOfWeek = 1) AND (Time = 160000) AND (Tally > 10) AND Not OnMarket THEN
BUY 1 CONTRACT AT MARKET
Tally = 1
ENDIF
//graph (DayOfWeek = 1) AND (DayOfWeek <> DayOfWeek[1])
//graph Tally
Hallo, danke
ich möchte gern, dass das system am Montag den 05.02.2024 den ersten Trade macht und dann nach 10 Wochen wieder??
Wenn ich es beim Kalender einstelle geht das nicht??!! Siehe Foto
Vielen Dank
Das sollte funktionieren. Sie können das Datum nach Belieben ändern.
ONCE Tally = 0
IF Date >= 20240205 THEN
IF (DayOfWeek = 1) AND (DayOfWeek <> DayOfWeek[1]) AND OnMarket THEN
SELL AT MARKET
ENDIF
IF (DayOfWeek = 1) AND (DayOfWeek <> DayOfWeek[1]) THEN
Tally = Tally + 1
ENDIF
IF (DayOfWeek = 1) AND (Time = 160000) AND ((Tally MOD 10) = 1) AND Not OnMarket THEN
BUY 1 CONTRACT AT MARKET
Tally = 1
ENDIF
ENDIF
//graph (DayOfWeek = 1) AND (DayOfWeek <> DayOfWeek[1])
//graph Tally
Hallo, danke. das System startet nun am Datum wie ich es gern wollte.
Leider ist es so, dass wenn der Montag in der Woche als handelstag fehlt, dann zählt das system die woche nicht und handelt eine Woche später.
Im Bild in habe ich das system am 16.10.2023 im ES auf Stundenbasis gestartet.
Da in den Wochen bei Weihnachten kein Montag gehandelt wird handelt das system erst nach 18 Wochen weiter??!!
Das heißt, wenn es keinen Montag gibt, an dem der Trade schließen kann, muss der Trade am Dienstag 9 Uhr geschlossen werden und dann auch am Dienst um 16 neu eröffnet werden, bis es wieder einen Montag gibt?!
Im Bild sind die Montage grün gemacht das man besser zählen und erkennen kann.
Vielen Dank
Hier der geänderte Code ich habe die Wochenrythmus auf 16 geändert (MODE 16)
ONCE Tally = 0
IF Date >= 20231014 THEN
IF (DayOfWeek = 1) AND (DayOfWeek <> DayOfWeek[1]) AND OnMarket THEN
SELL AT MARKET
ENDIF
IF (DayOfWeek = 1) AND (DayOfWeek <> DayOfWeek[1]) THEN
Tally = Tally + 1
ENDIF
IF (DayOfWeek = 1) AND (Time = 160000) AND ((Tally MOD 16) = 1) AND Not OnMarket THEN
BUY 1 CONTRACT AT MARKET
Tally = 1
ENDIF
ENDIF
graph (DayOfWeek = 1) AND (DayOfWeek <> DayOfWeek[1])
graph Tally
Ich habe meine Version so geändert, dass:
- Wenn die Einreise am Montag geschlossen ist, erfolgt die Einreise am ersten darauffolgenden Tag.
- wenn der Veröffentlichungsmontag geschlossen ist, erscheint es am ersten darauffolgenden Tag;
- wenn der Montag geschlossen ist, wird die Woche gleich gezählt:
ONCE Tally = 0
IF Date >= 20240205 THEN
IF ((DayOfWeek = 1) OR (DayOfWeek > 1) AND ((DayOfWeek[1] = 0) OR (DayOfWeek[1] > DayOfWeek))) AND (DayOfWeek <> DayOfWeek[1]) AND OnMarket THEN
SELL AT MARKET
ENDIF
IF ((DayOfWeek = 1) OR (DayOfWeek > 1) AND ((DayOfWeek[1] = 0) OR (DayOfWeek[1] > DayOfWeek))) AND (DayOfWeek <> DayOfWeek[1]) THEN
Tally = Tally + 1
ENDIF
IF ((DayOfWeek = 1) OR ((DayOfWeek > 1)) AND ((DayOfWeek[1] = 0) OR (DayOfWeek[1] > DayOfWeek))) AND (DayOfWeek <> DayOfWeek[1]) AND ((Tally MOD 10) = 1) AND Not OnMarket THEN
BUY 1 CONTRACT AT MARKET
Tally = 1
ENDIF
ENDIF
//graph ((DayOfWeek > 1) AND ((DayOfWeek[1] = 0) OR (DayOfWeek[1] > DayOfWeek))) AND (DayOfWeek <> DayOfWeek[1]) AS "Other" coloured("Red")
//graph ((DayOfWeek = 1) AND (DayOfWeek <> DayOfWeek[1])) AS "Monday" coloured("Green")
//graph Tally
Hallo
ist es möglich die Strategie so zu ändern, dass die Strategie wie im code alle 10 Wochen startet, aber nicht nur eine Woche im Markt bleibt sondern 3 Wochen??
Vielen Dank
Ersetzen Sie Zeile 3 durch Folgendes:
IF ((DayOfWeek = 1) OR (DayOfWeek > 1) AND ((DayOfWeek[1] = 0) OR (DayOfWeek[1] > DayOfWeek))) AND (DayOfWeek <> DayOfWeek[1]) AND OnMarket AND (Tally = 3) THEN
Hallo,
wenn ich Zeile 3 lösche und Ihre Zeile einsetze, dann tradet das system alle 2 Wochen und bleibt eine Woche im Markt.
Ich möchte aber, dass das system alle 10 Wochen long geht und jeweils 3 Wochen im Markt bleibt?
Danke Ihnen
Dies ist der Code mit der geänderten Zeile und er funktioniert wie gewünscht. Der Handel erfolgt alle 10 Wochen und jeder Trade dauert 3 Wochen.
Ich habe es mit DAX im täglichen Zeitrahmen versucht (siehe beigefügtes Foto):
ONCE Tally = 0
IF Date >= 20240205 THEN
//IF ((DayOfWeek = 1) OR (DayOfWeek > 1) AND ((DayOfWeek[1] = 0) OR (DayOfWeek[1] > DayOfWeek))) AND (DayOfWeek <> DayOfWeek[1]) AND OnMarket THEN
IF ((DayOfWeek = 1) OR (DayOfWeek > 1) AND ((DayOfWeek[1] = 0) OR (DayOfWeek[1] > DayOfWeek))) AND (DayOfWeek <> DayOfWeek[1]) AND OnMarket AND (Tally = 3) THEN
SELL AT MARKET
ENDIF
IF ((DayOfWeek = 1) OR (DayOfWeek > 1) AND ((DayOfWeek[1] = 0) OR (DayOfWeek[1] > DayOfWeek))) AND (DayOfWeek <> DayOfWeek[1]) THEN
Tally = Tally + 1
ENDIF
IF ((DayOfWeek = 1) OR ((DayOfWeek > 1)) AND ((DayOfWeek[1] = 0) OR (DayOfWeek[1] > DayOfWeek))) AND (DayOfWeek <> DayOfWeek[1]) AND ((Tally MOD 10) = 1) AND Not OnMarket THEN
BUY 1 CONTRACT AT MARKET
Tally = 1
ENDIF
ENDIF
Montag, 5. Februar 2024, Montag, 15. April 2024 und Montag, 24. Juni 2024.
Jeder Handel wird nach 3 Wochen geschlossen.