Freitag, 19. April 2024, 02:05 UTC+2

Sie sind nicht angemeldet.

  • Anmelden
  • Registrieren

Lieber Besucher, herzlich willkommen bei: INVESTOX-Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

MarcelR

unregistriert

1

Dienstag, 16. Dezember 2014, 14:15

HS investiert ungewollt in 2 Titel gleichzeitig

Hallo liebe Inv-Community,

ich erstelle im Rahmen eines Seminars an meiner Uni ein HS für ein Portfolio mit mehreren Titeln.

Nach der Berechnung der Rangfolge der Titel sollen folgende Enter-Regeln gelten:

Investiere in Rang 1, wenn MACD > 1
Wenn nicht, investiere in Rang 2, wenn MACD > 1
Wenn auch hier die Bedingung nicht erfüllt ist, warte 3 Monate und prüfe dann erneut.


Hier die bestehenden Definitionen/ Enter-Regeln

Def:


global calc Rang:Rang(#ROC(Close, 3, %)#, #STOXX 600#, Ab);


global calc EnterRang1: If(Rang = 1 and MACD(Close) > 1,1,0);
global calc EnterRang2: If(EnterRang1 = 0 and Rang = 2 and MACD(Close) > 1,1,0);



global calc JanuarEntry: DatePart(m) = 3;
global calc AprilEntry: DatePart(m) = 6;
global calc JuliEntry: DatePart(m) = 9;
global calc OktoberEntry: DatePart(m) = 12;

Enter long:

(JanuarEntry
OR
AprilEntry
OR
JuliEntry
OR
OktoberEntry)

and

(EnterRang1
OR EnterRang2)


Trades werden nach einer Dauer von 3 Monaten ausgestoppt (mein Exit).

Mein Problem ist nun, dass das System teilweise gleichzeitig in beide Titel investiert. Mache ich hier ein Fehler bei den Definitionen/den EnterRegeln? Oder gibt es generell eine Möglichkeit, die Anzahl an Titel zu begrenzen, in die das HS gleichzeitig einsteigen kann? Hoffe ich habe mich verständlich ausgedrückt und es kann mir jemand weiterhelfen :)


Vielen Dank vorab!


Beste Grüße
Marcel


Lenzelott Männlich

Experte

Registrierungsdatum: 30. Dezember 2002

Beiträge: 3 051

Wohnort: Giessen

2

Dienstag, 16. Dezember 2014, 18:04

Wenn es so blöd läuft könnte theoretisch zweimal Rang 1 oder zweimal Rang 2 existieren bei identischem ROC ?!

Hab ich schon erlebt.

Um dem Problem auf den Grund zu gehen:

ROC und Rang etc. in den Chart legen und bei den fraglichen Trades prüfen, welche Ergebnisse in den beiden Titeln vorliegen.
Dann wirst Du sehr schnell feststellen woher Dein Fehler kommt.
If you think it´s expensive to hire a professional, wait until you hire an amateur.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Lenzelott« (16. Dezember 2014, 18:12)


Lenzelott Männlich

Experte

Registrierungsdatum: 30. Dezember 2002

Beiträge: 3 051

Wohnort: Giessen

3

Dienstag, 16. Dezember 2014, 18:14

die Kurze Version:

die Berechnung von EnterRang1 und EnterRang2 beziehen sich immer auf den selben Titel.
If you think it´s expensive to hire a professional, wait until you hire an amateur.

Lenzelott Männlich

Experte

Registrierungsdatum: 30. Dezember 2002

Beiträge: 3 051

Wohnort: Giessen

4

Dienstag, 16. Dezember 2014, 22:18

Lösung des Problemes

Das ganze läßt sich aus meiner Sicht nur mittels eines Master/Slave Systemes lösen.

Im Grundsystem lautet der Enter dann:

Quellcode

1
2
Mod(DatePart(m), 3)=0
and  rang<=2 and MACD(Close) > 1


Im Zusatz wird der Rang an das Portfoliosystem übergeben um dort danach zu sortieren.

Und dort beschränkt man mittels

Quellcode

1
global calc position:#_PFPosition Rang 1, wenn MACD > 1\MaxPos=1; NurEntries=Ja; Sortierung=Auf; Synchbasis=STOXX 600              PI;#;

die Positionsanzahl auf nur 1 Position wobei die Sortierung über das aus dem Zusatzfeld übergebenen Rang erfolgt.

Und weil alles nur ein 2 Zeiler ist, hab ichs mal spaßeshalber angehängt.
Ich hoffe das macht genau das, was Du Dir vorstellst.
»Lenzelott« hat folgende Datei angehängt:
If you think it´s expensive to hire a professional, wait until you hire an amateur.

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

5

Mittwoch, 17. Dezember 2014, 08:48

Hallo Marcel,

Zitat

Mein Problem ist nun, dass das System teilweise gleichzeitig in beide Titel investiert. Oder gibt es generell eine Möglichkeit, die Anzahl an Titel zu begrenzen, in die das HS gleichzeitig einsteigen kann?


Es gibt vielleicht noch einen anderen Weg, der sogar ohne Master/Slave-Kombination auskommt.
Es gibt ein Schlüsselwort #_DepotPosition# (die Schreibweise kann falsch sein, bitte checken), welches zurück liefert:
0 ... wenn keine Position
1 ... wenn long Position
-1 ... wenn gerade eine short Position
im Depot ist.

Wenn man die EnterRegel z.B. so erweitert: xxx AND #_DepotPosition#=0 ... würde nur eine Position eröffnet werden, wenn das Depot derzeit leer ist.

Hacken:
Eine kleinen Hacken hat die Verwendung des Schlüsselworts leider, da es direkt das Depot abfragt, ist kein einfacher Backtest möglich.
Um zu einen korrekten Backtest zu kommen, muss das ganze HS von Anfang bis Ende mit simulierten Kursen durchlaufen werden. Da Du wahrscheinlich ein HS mit monatlicher Komprimierung verwendest, sollte das aber vom Berechnungsaufwand noch gehen.

Die Lösung von Lenzelott ist aber die universellere.

Viele Grüße,
Sten

MarcelR

unregistriert

6

Mittwoch, 17. Dezember 2014, 10:50

Hallo Lenzelott,

danke für die schnelle Antwort!
Das System ist genau das, was ich gesucht habe. Leider funktioniert es noch nicht ganz, ich bekomme folgende Fehlermeldung angezeigt:

Berechnung von Kapitalkurvendaten:
"Das in einer Kapitalkurven-Portfolioberechnung angegebene System
'RANG 1, WENN MACD > 1' kann nicht berechnet werden."

Habe eigentlich nur die Titel ersetzt, sonst nichts am System geändert. Ich verwende das HS mit monatlicher Komprimierung, kann das ein Problem sein?
Da ich leider noch kaum Erfahrung mit Investox habe, tue ich mich schwer damit, Fehlermeldungen richtig zu verstehen, bzw. die Ursache herauszufinden.

Viele Grüße
Marcel

Lenzelott Männlich

Experte

Registrierungsdatum: 30. Dezember 2002

Beiträge: 3 051

Wohnort: Giessen

7

Mittwoch, 17. Dezember 2014, 13:16

Ich verwende das HS mit monatlicher Komprimierung, kann das ein Problem sein?


Nein ist absolut kein Proble, das von mir oben gepostete System ist ja auf Monatsbars aufgebaut.
bei einem ROC von 3 hatte ich mir gedacht wäre es wohl nicht sinnvoll mit Tagesbars zu arbeiten. ;)
If you think it´s expensive to hire a professional, wait until you hire an amateur.

Lenzelott Männlich

Experte

Registrierungsdatum: 30. Dezember 2002

Beiträge: 3 051

Wohnort: Giessen

8

Mittwoch, 17. Dezember 2014, 13:19

"Das in einer Kapitalkurven-Portfolioberechnung angegebene System
'RANG 1, WENN MACD > 1' kann nicht berechnet werden."


Hast Du in meinem obigen Investox Projekt einfach nur die Titel ausgetauscht ?

Sind die Titel alle aktiv in beiden Systemen?

Existiert die "Synchbasis" ?

Hast Du in der Rang Funktion den Namen des Kataloges auf Deinen eigenen geändert ?
If you think it´s expensive to hire a professional, wait until you hire an amateur.

MarcelR

unregistriert

9

Mittwoch, 17. Dezember 2014, 15:11

Habe die Titel ausgetauscht und MACD > 1 auf MACD > 0 geändert (so sollte es eigentlich sein, hatte mich vertan). Das sollte allerdings keine Probleme machen, oder?
Die Titel sind aktiv, die Synchbasis passt und der Name des Katalogs ist geändert.

Das HS zeigt die Rangfolge an, und handelt auch. Jedoch werden hier wieder Rang 1 und Rang 2 gleichzeitig gehandelt (trotz unterschiedlicher ROC). Nach wie vor kommt die bereits beschriebene Fehlermeldung


Berechnung von Kapitalkurvendaten:
"Das in einer Kapitalkurven-Portfolioberechnung angegebene System
'RANG 1, WENN MACD > 1' kann nicht berechnet werden."

Rang 1 wenn MACD größer 0.Inv

Lenzelott Männlich

Experte

Registrierungsdatum: 30. Dezember 2002

Beiträge: 3 051

Wohnort: Giessen

10

Mittwoch, 17. Dezember 2014, 15:31

Jedoch werden hier wieder Rang 1 und Rang 2 gleichzeitig gehandelt


Das gehört im Grundsystem auch so.
Da werden alle Signale umgesetzt (rang1&2 werden gekauft wenn macd>x).

Im Portfoliosystem werden die zu vielen Tardes dann eben "heraussortiert".
If you think it´s expensive to hire a professional, wait until you hire an amateur.

Lenzelott Männlich

Experte

Registrierungsdatum: 30. Dezember 2002

Beiträge: 3 051

Wohnort: Giessen

11

Mittwoch, 17. Dezember 2014, 15:33



Quellcode

1
global calc position:#_PFPosition Rang 1, wenn MACD > 1\MaxPos=1; NurEntries=Ja; Sortierung=Auf; Synchbasis=STOXX 600              PI;#;




"Rang 1, wenn MACD > 1" ist hier der Name des Grundsystemes, wenn Du das evtl. geändert hast, geht´s natürlich nicht
If you think it´s expensive to hire a professional, wait until you hire an amateur.

Lenzelott Männlich

Experte

Registrierungsdatum: 30. Dezember 2002

Beiträge: 3 051

Wohnort: Giessen

12

Mittwoch, 17. Dezember 2014, 15:37


Rang 1 wenn MACD größer 0.Inv


Quellcode

1
global calc position:#_PFPosition Rang 1, wenn MACD > 0\MaxPos=1; NurEntries=Ja; Sortierung=Auf; Synchbasis=Stoxx 600 Europe;#;


der Teil hat im Grundsystem auch nix zu suchen, der darf nur im Portfoliosystem stehen.
Warum hast Du das dann da reinkopiert?
If you think it´s expensive to hire a professional, wait until you hire an amateur.

MarcelR

unregistriert

13

Mittwoch, 17. Dezember 2014, 17:36




"Rang 1, wenn MACD > 1" ist hier der Name des Grundsystemes, wenn Du das evtl. geändert hast, geht´s natürlich nicht


Ohje... natürlich. Das ist der Fehler. :baby: Jetzt funktioniert es einwandfrei. Vielen Dank für den Code und die Hilfe!