Hallo,
Ich will eine Buy&Hold Strategie backtesten. Der Ansatz ist "Kaufe jeden Monat einen CFD-Kontrakt".
Weitere Bedingungen sind
- Kaufe pro Monat einen DAX-CFD Kontrakt dazu, egal wie hoch oder tief der DAX steht." Im ersten Monat soll also 1 Kontrakt gehalten werden, im zweiten Monat sollen zwei Kontrakte gehalten werden, im dritten Monat ...
- Wird ein Downtrend festgestellt, verkaufe alles und gehe mit gleicher Positionsanzahl short (drehen)
- Wird ein Uptrend festgestellt, drehe zurück.
- Punktwert für CFD-Kontrakt 1,- EUR (Achtung, kein Future!)
- Kapitalkosten und Handelskosten sollen ignoriert werden.
Das HS sieht so aus:
-----
global calc menge: 1 + 1*Abschnitt(m, 1, k, l); //jeden Monat einen mehr.
calc EnterLong: tr=1 and DatePart(m)<>Ref(DatePart(m),1);
calc ExitLong: DatePart(m)<>Ref(DatePart(m),2);
calc EnterShort: tr=-1 and DatePart(m)<>Ref(DatePart(m),1);
calc ExitShort: DatePart(m)<>Ref(DatePart(m),2);
-----
tr=1 ist dabei der langfristige Trend (z.B. kreuzende GDs) und das DatePart-Konstrukt bewirkt, dass am Monatsletzten ver- und am Ersten gekauft wird. Damit erzwinge ich, dass Investox die richtige Menge an Kontrakten hält.
Meine Frage/Problem
Die Funktion Abschnitt beginnt bei der ersten vorhandenen Periode. Ich will aber an der ersten Periode des Betrachtungszeitraum/Signalzeitraums mit einem Kontrakt beginnen. Wie kann ich das umsetzen?
Vielen Dank