Donnerstag, 18. April 2024, 03:44 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.

frank sinatra

unregistriert

1

Samstag, 24. September 2011, 14:29

Fehlermeldung

Hallo allerseits,

Ich bin noch Newbie versuche gerade ein erstes einfaches HS aufzusetzen und laufe immer in neue Probleme ;( Ich habe mal zum testen folgendes geschrieben und bekomme eine Fehlermeldung, dass der "Parameter gestiegen" "unverständlich" sein. Das system soll den Dax handeln und bezieht den Ifo-Index als externen index ein:

Definitionen:

calc enterlong: SUM(gestiegen,5)>=3;

calc TagImMonat: If(DatePart(d)=27,1,0);
calc gestiegen: If(ValueWhen("Ifo-Geschäftsklima", TagImMonat=1,1,V) > ValueWhen(Close, TagImMonat=1,2,V),1, 0);

calc entershort: SUM(gefallen,5)>=3;

calc gefallen: If(ValueWhen("Ifo-Geschäftsklima", TagImMonat=1,1,V) < ValueWhen(Close, TagImMonat=1,2,V),1, 0);

Enter Long:
enterlong

Exit Long:
entershort

enter Short
entershort

exit Short
enterlong

eine weitere Fehlermeldung ist, dass ein Programmfehler während des Datenimports aufgetreten ist.. Die Daten werden aber alle astrein im Chart angezeigt... ?(

P.S. Das das System stur die Daten vom 27. nimmt soll jetzt nicht das Problem sein, ich bearbeite die Datenreihe manuell, dass es passt. Es geht hier mehr um die Fehlermeldungen...

Investox

Administrator

Registrierungsdatum: 31. August 2002

Beiträge: 5 680

2

Samstag, 24. September 2011, 15:46

Hallo,

>> eine Fehlermeldung, dass der "Parameter gestiegen" "unverständlich" sein

das liegt an der Reihenfolge der Definitionen. Für die Berechnung von "enterlong" wird "gestiegen" verwendet, obwohl "gestiegen" erst danach definiert wird. Verschieben Sie also "enterlong" und "entershort" bitte nach unten.

>>Programmfehler während des Datenimports
Das könnte sich auch auf den Vergleichstitel (also Ifo-Geschäftsklima) beziehen. Teilen Sie bitte gflls. die genaue Fehlermeldung und deren Details mit.

Viele Grüße
Andreas Knöpfel

Ganesha

unregistriert

3

Samstag, 24. September 2011, 23:59

Hallo Frank,

Dein Ansatz wird nicht funktionieren. Der IFO ändert sich einmal im Monat. Du berechnest aber einmal pro Tag eine Änderung:

calc entershort: SUM(gefallen,5)>=3;

Damit bekommst Du keine sinvollen Signale.


Für Deinen Ansatz solltest Du den Zeitrahmen des HS auf 'Monat' stellen.

Dann so arbeiten:

---------------------
calc gestiegen: if(close("IFO")>ref(close("IFO),-1), 1, 0);
calc gefallen: if(close("IFO")<ref(close("IFO),-1), -1, 0);
calc enterLong: sum(gestiegen, 5)>3;
calc enterShort: sum(gefallen, 5)<-3;
---------------------

Wenn der Ansatz grundsätzlich positiv ist, hast Du einen guten Langfrist-Indikator und kannst dann auf einer tieferen Zeitebene versuchen die Drawdowns weg zu optimieren.

Zum Beispiel ein Slave-System bauen, welches die Positionierung des Langfrist-Systems abfragt. Angenommen das Handelssystem mit dem IFO nennt sich "IFO" und das System für den täglichen Trade nennt sich "TAG" dann:

calc trend: #_Position IFO\?#;

Trend ist dann "1" wenn IFO long ist, "-1" short und "0" flat.

Aufpassen musst Du aber bei einem potentiellen Zukunftsblick, da Du gleichzeitig auf unterschiedlichen Zeitebenen arbeitest. Im IFO-System würde ich dann keine Stops setzen (musst das Teil ja nicht live handeln, soll ja nur die Richtung verraten). Es zeigt dann immer die große konjunkturelle Richtung an.

PS: Poste doch mal die Kapitalkurve von IFO. :)

Viele Grüße

Ganesha

unregistriert

4

Sonntag, 25. September 2011, 00:23

In Ergänzung: Wenn Du mein Beispiel nutzen willst, ist es sinnvoll _kein_ ref(-1) in den Handelsbedingungen zu benutzen, delay=0 setzen (Positionseröffnung ohne Verzögerung) und die Position zu Close zu eröffnen und schließen. Investox versucht würde dann am letzten Handelstag des Monats in der letzten Handelsminute die entsprechende Order abgeben. Bei IFO-Veröffentlichung am 27. ist das eine sinnvolle Näherung.

Aus dem Bauch raus würde ich vermuten, dass der Ansatz _nicht_ positiv ist, weil das HS mit mehrmonatiger Verspätung reagiert. Aber Investox wird es Dir zeigen.

Die nächsten Schritte wären dann die Verzögerungen zu reduzieren. Zum Beispiel antizyklisch bei Extremwerten short/long zu gehen oder einen gleitenden Durchschnitt zu bilden, auf Divergenzen zu achten, ...

Problem: Dein Ansatz ist viel zu grob (=zuwenige Daten) um sinnvolle statistische Analysen machen zu können.

frank sinatra

unregistriert

5

Sonntag, 25. September 2011, 11:01

Ja danke Herr Knöpfel,

nach dem Umstellen der Definitionen hat es geklappt. Der Fehler beim Datenimport ist auch verschwunden...

Dafür habe ich ein neues Problem dass ich nicht so ganz verstehe, ich habe das HS zusammen mit dem Chart des DAx und des Ifo als Projekt gespeichert. Ich habe dann auf Charts/Vergleichstitel zufügen geclickt und wollte mir zusätzlich zum Dax den Chart des Info index in einem zweiten Fenster anzeigen lassen. Danach ist mein HS gelöscht und ich ich kann es auch nirgends mehr finden. Nur wenn ich das Projekt schließe nicht speichere und wieder neu öffne ist es wieder da. Was mache ich falsch....

Grüße

Edit: Ich habe es nochmals probiert und eben ging es. Nachdem ich jedoch einige Einstellungen im Chart veränder hatte war das HS wieder weg und auch nicht mehr zu öffnen - worauf muss ich da aufpassen?

frank sinatra

unregistriert

6

Sonntag, 25. September 2011, 15:21

Doch leider nicht gelöst

Hallo Herr Knöpfel und Ganesha,

leider war ich etwas voreilig, es kam zu einigen sehr merkwürdigen Problemen, dass teilweise das Handelsystem einfach verschunden war und einiges mehr. Ich habe jetzt erstmal Investox auf Version 5.9.6 XL geupdatet - das Projekt gelöscht und versucht das HS erneut einzugeben. Jetzt bin ich bei dem Problem, dass andauernd die Fehlermeldung kommt Unverständlicher Parameter: Datenreihe oder Unterbrechung erwartet Parameter: Ifo-Index

Ich habe alles ausprobiert was mir so einfällt, die Datendatei auf der Festplatte zu überprüfen, den Namen verändern... Den Chart anschauen (problemlos)... Ich weiß nicht mehr weiter...

Die Kursreihe heißt Ifo-Index und bedindet sich im Katalog "MK und Renditen", die Referenzierung in der ValueWhen-Funktion, die den Fehler verursacht ist: If(ValueWhen("Ifo-Index",....)

Wo liegt der Fehler?

frank sinatra

unregistriert

7

Sonntag, 25. September 2011, 15:42

Hi Ganesha,

danke für die ausführliche Antwort, ich verstehe aber nicht so ganz wie Du das meinst...:

Zitat

Dein Ansatz wird nicht funktionieren. Der IFO ändert sich einmal im Monat. Du berechnest aber einmal pro Tag eine Änderung:

calc entershort: SUM(gefallen,5)>=3;

Damit bekommst Du keine sinvollen Signale.


Für Deinen Ansatz solltest Du den Zeitrahmen des HS auf 'Monat' stellen.
Also ich sehe meinen Code so:

calc TagImMonat: If(DatePart(d)=27,1,0); /erstellt eine Reihe in der Jeder Tag den Wert 0 hat außer der 27. =1

calc gestiegen: If(ValueWhen("Ifo-Geschäftsklima", TagImMonat=1,1,V) > ValueWhen(Close, TagImMonat=1,2,V),1, 0);
' Das ValueWhen nimmt den Kurs von Ifo-Geschäftsklimaindex wenn der 27. ist und vergleicht es mit dem Wert vom vorangegangenen 27.

Sollte doch laufen oder... Die Logik von Deinem Code ist auch gut, nur würde ich dann noch länger warten müssen nämlich bis Monatsende. Der Ifo-Index wird eher am 22. - 25/26. veröffentlicht. Jetzt habe ich die Kursreihe manuell bearbeitet, dass da immer 27. steht. Nur noch weiter nach hinten will ich es nicht verschieben. Ich suche eher eine Methode mit der Investox "erkennt" wann zwischen dem 22-27. ein neuer Indexwert zustandekommt und diesen dann nimmt. Leider weiß ich nciht wie das geht, aber immerhin ist es ja so, dass es in dem Datenfile ja drinsteht, irgendwie müsste das dann doch gehen...

Mein System ist übrigens EOD und ich glaube auch nciht dass es wirklich geeignet ist +Ev zu sein. Es ist eher ein einfacher Testlauf um mich mit der Progammierung vertraut zu machen...

Das fällt mir gerade so ein, was ist eigentlich wenn bei Deinem Code der Monatsletzte ein Sa oder So ist wie händelt Investox das dann...

Und was passiert eigentlich wenn eine Enterlong bedingung 2mal nacheinander erfüllt wird - handelt Investox dann mit doppelten Kapital und macht noch eine long auf oder wie :D

Ganesha

unregistriert

8

Sonntag, 25. September 2011, 20:32

Hallo,

sowas geht schon, ist aber durchaus kompliziert. Hängt auch davon ob, ob Du einen durchgehenden Wert hast oder ob an einem Tag der Wert <> 0 ist. Angenommen Du hast eine Zeitreihe die nur am Tag der Veröffentlichung einen Wert <> 0 hat, dann könnte die Logik so aussehen:

calc ifo: close("ifo"); //zugriff auf den Wert
calc aenderung: if(ifo <> ref(ifo, -1); //steht am Tag der Veroeffentlichung auf 1
calc v1: valuewhen(ifo, aenderung=1, 1, V);
calc v2: valuewhen(ifo, aenderung=1, 2, V);
calc v3: valuewhen(ifo, aenderung=1, 3, V);
calc v4: valuewhen(ifo, aenderung=1, 4, V);
calc v5: valuewhen(ifo, aenderung=1, 5, V);
calc v6: valuewhen(ifo, aenderung=1, 6, V);

calc g1: v1>v2;
calc g2: v2>v3;
calc g3: v3>v4;
calc g4: v4>v5;
calc g5: v5>v6;

calc f1: v1<v2;

calc f2: v2<v3;

calc f3: v3<v4;

calc f4: v4<v5;

calc f5: v5<v6;



calc gestiegen: g1+g2+g3+g4+g5;
calc gefallen: f1+f2+f3+f4+f5;
calc enterlong: gestiegen > 3;
calc entershort: gefallen > 3;


Aber wie schon gesagt: Die Verzögerung ist enorm. Um bei fallenden IFO-Werten short zu gehen, würdest Du bei dieser Logik fünf Monate nach dem ersten gefallenen IFO-Wert short gehen. Da kommt es auf ein paar Tage nicht mehr an.

Investox

Administrator

Registrierungsdatum: 31. August 2002

Beiträge: 5 680

9

Montag, 26. September 2011, 08:54

Hallo,

><Wo liegt der Fehler?

wie lautet denn die ganze Formel?

Viele Grüße
Andreas Knöpfel

frank sinatra

unregistriert

10

Montag, 26. September 2011, 18:34

Hallo Herr Knöpfel,

vorab hätte ich jetzt noch ein anderes Problem. Wie genau speichert (also wo) Investox die Handelssysteme? In dem Projekt? In einem eigenen Ordner? Wird ein Handelssystem mit Fehlern nicht gespeichert? Ich habe jetzt schon mehrfach Investox geöffnet und das HS war nicht mehr da. Ich habe das System mittlerweile bestimmt 5mal eingegeben...

Alsol der gesamte Code ist:

calc TagImMonat: If(DatePart(d)=27,1,0);

calc gestiegen: If(ValueWhen("Ifo-Index", TagImMonat=1,1,V) > ValueWhen(Close, TagImMonat=1,2,V),1,0);

calc gefallen: If(ValueWhen("Ifo-Index", TagImMonat=1,1,V) < ValueWhen(Close, TagImMonat=1,2,V),1,0);



calc entershort: SUM(gefallen,5)>=3;
calc enterlong: SUM(gestiegen,5)>=3;


Die ValueWhen-Funktio verursacht den Fehler.Die Fehlermeldung lautet unverständlicher Parameter: Datenreihe oder Unterbrechung erwartet Parameter: Ifo-Index. Die Daten aus der csv auf der Platte sind aber absolut in Ordnung und werden auch problemlos in einem Chart dargestellt....

Grüße!

frank sinatra

unregistriert

11

Montag, 26. September 2011, 18:46

Hi Ganesha,

den Weg über Ref -1 und <>0 kommt für mich nicht in Frage, da die Daten in folgender Form vorliegen:

20.02.1995;101,5
21.03.1995;102,8

Wenn ich nun von Hand überall 0en reinopieren müsste, wäre das wahnsinnig aufwendig. Gibt es in Investox nicht eine Möglichkeit abzufragen wann eine Kursreihe zum erstenmal einen Wert angenommen hat? Prinzipiell ist das ja bei allen Wirtschaftsdaten so, dass die Wöchentlich monatlich oder mehrmonatlich veröffentlicht werden. Wenn ich nun einige Werte aus der Vergangenheit vergleichen möchte sollte das natürlich an Veröffentlichungsdatum geschehen und in die Berechnung sollten nicht 30mal die Wiederholung des Wertes vom letzten Monat eingehen, sondern eben nur einmal... Zu unterscheiden dasss der Wert unterschiedlich zum Vorgänger ist könnte auch daneben gehen wenn der (zugegeben seltene Fall) eintritt, dass der Index indentische Werte hat. Kern des Problems ist halt das Investox aus einem Wert immer eine Reihe von X-Wiederholungen macht, bis ein neuer Wert eintritt ohne zu markieren was eigentlich der "Original-Wert" und was die Wiederholung davon ist...

frank sinatra

unregistriert

12

Montag, 26. September 2011, 20:31

Hi Ganesha habe mir Deinen Code ncoh genauer angeschaut - ich glaube ich werde ihn doch mal austesten. Vielleicht geht dann der Fehler weg. Außerdem habe ich das Problem mit den identischen Werten so gelöst dass ich in dem Fall, dass zwei Werte aufeinanderfolgend identisch waren durch minimales verrauschen gelöst. Also wenn die beiden Werte 105 waren dann habe ich für den zweiten Wert in den Originaldaten 105,01 eingegeben - macht für die Berechnungen keinen Unterschied aber ist jetzt unterscheidbar.

Was ich Dich zu Deinem Code noch fragen wollte (danke nochmal dafür) ist:

Zitat

calc aenderung: if(ifo <> ref(ifo, -1); //steht am Tag der Veroeffentlichung auf 1
Das ist ein typo oder? Du meinst: If(ifo<> ref(ifo, -1),1,0)

Und an folgender Stelle lässt Du die If-Struktur weg? kann man das so schreiben?:

Zitat

calc g1: v1>v2;
Ist das die Kurzform von :

calc g1: If(v1>v1,1,0)


Grüße!

Ganesha

unregistriert

13

Montag, 26. September 2011, 20:51

Zweimal ja. :)

Edit: Das mit dem verrauschen macht hier aber keinen Sinn. Ich weiß nicht wie Investox mit unvollständigen Kursreihen bei der Berechnung umgeht.

Das mit if(ifo<>ref(ifo,-1),1,0) macht Sinn, wenn zwischen den Werten 0-Werte stehen.

Wenn die Werte hintereinander im CSV-stehen, macht es keinen Sinn mehr. Der Kurs ist ja eine Zeitreihe, d.h. einem Zeitpunkt wird ein Kurs zugeordnet. Investox syncronsiert verschiedene Zeitreihen über ihre Zeitpunkte.

Dadurch kann man dann verschiedene Datenreihen parallel betrachten.

Das ref(-1) ist aber ein Zugriff auf die letzte Periode, NICHT ein Zugriff auf den letzten Eintrag des ursprünglichen CSVs. Die Periode wird vom Handelssystem bestimmt. EOD = 1 Periode dauert einen Tag, 5 Minuten = Periode dauert fünf Minuten.

Investox

Administrator

Registrierungsdatum: 31. August 2002

Beiträge: 5 680

14

Dienstag, 27. September 2011, 08:27

Hallo,

unabhängig vom Sinn der Formel: nur einfach "Ifo-Index" als Parameter produziert die Fehlermeldung. Schreiben Sie statt dessen bitte

ValueWhen(Close("Ifo-Index"), TagImMonat=1,1,V)

um das gewünschte Kursfeld zu kennzeichnen.

>>Wie genau speichert (also wo) Investox die Handelssysteme? In dem Projekt?

Richtig. Das gesamte Projekt wird in einer Datei gespeichert. Ein Handelssystem kann auch nicht verschwinden, es sein denn Sie speichern das Projekt vor dem Schließen nicht. Da kommt ja aber eine entsprechende Nachfrage.

Viele Grüße
Andreas Knöpfel

frank sinatra

unregistriert

15

Dienstag, 27. September 2011, 13:36

Hallo Herr Knöpfel,

Danke für den Tipp, das funktioniert jetzt. Danke auch für den Hinweis mit der Logik der Formel - so funktioniert das natürlich nicht...

frank sinatra

unregistriert

16

Dienstag, 27. September 2011, 20:20

Hi Ganesha,

also deine Formel funktioniert gut, was genau meinst Du mit:

Zitat

Das mit if(ifo<>ref(ifo,-1),1,0) macht Sinn, wenn zwischen den Werten 0-Werte stehen.
Ich meinte das so wenn im .csv z. B. steht
27.01.2010;115
27.02.2010;115 dann würde ich den zweiten Wert in 115,01 ändern damit er mit Ref(-1) wieder <>0 ist. Funktioniert gut...

Schönen Abend noch...

frank sinatra

unregistriert

17

Dienstag, 27. September 2011, 20:41

Ach ja unsere Vermutung war übrigens richtig: Das System ist tiefrot... Der Ifo-Index ist einfach zu langsam. Der Dax sagt schon eher den Ifo voraus als umgekehrt ;)

Ganesha

unregistriert

18

Dienstag, 27. September 2011, 22:22

Ach ja unsere Vermutung war übrigens richtig: Das System ist tiefrot... Der Ifo-Index ist einfach zu langsam. Der Dax sagt schon eher den Ifo voraus als umgekehrt ;)
Der DAX hat gegenüber der Realwirtschaft eine Vorlaufzeit von irgendwo einem halben Jahr.

Ansonsten: Diese tiefroten Handelssysteme werden Dich die nächsten Wochen/Monate begleiten. Bis Du irgendwann den Dreh raus hast. Dann weißt Du intuitiv was funktioniert und was nicht.

Viel Erfolg.