Hallo kosi,
Chartmodul:
Du möchtest, dass in einen Tageschart zu einem Wertpapier eine Kurve eingezeichnet wird, die nur aus den Close-Werten zu den jeweiligen Monatsenden errechnet wird.
Dazu musst Du im Chartmodul über das Ikon "Chart und Indikatoren auswählen" das entsprechende Fenster öffnen.
Sodann ganz Links über ein Klick auf den Botton "neu" das Fenster "Indikator anlegen" öffnen. In diesem Fenster musst Du dann eine neue Formel erstellen. (Den Botton "neu" siehst Du nur wenn die Zeile "Formeln " aktiv bzw. gewählt bzw. blau unterlegt ist!).
Unter dem Reiter "Allgemein" musst Du Deine beabsichtigte Formel umschreiben. Zum Beispiel:
Beschreibung: "Kosi Usu zu Mon Closes Line in Daily Chart"
Kurznahme: FKU (für z.B. Formel Kosi Untersuchungen )
Funktion: fku_WiDC (für Weekly in Day Chart)
Du kannst Dir Dein eigenes Nomenklatur-Konzept erstellen. Wird dann in einer Chart-Konfiguration jedoch auf einen Funktionsnamen Bezug genommen, darf dieser Name nicht mehr geändert oder die Funktion gelöscht werden. Geschieht dies doch, reklamiert das Chartmodul eine fehlende Funktion. Dann muss die entsprechende Konfiguration gelöscht werden)Willst Du später in Deiner Formel einzelne Eingabewerte bzw. Parameter flexibel ändern können, so musst Du jetzt unter dem Reiter Allgemein die "Anzahl Parameter" in der gewünschten Zahl wählen. Willst Du die Anzahl Tage z.B. für die Berechnung eines gleitenden Durchschnittes später einstellen können, so ist der Parameter-Typ = Integer, Ganzzahl (keine halben Tage). Willst du dagegen eine Linie zwischen zwei Daten erstellen, so wäre die zu wählende Anzahl Parameter 2 und der zu wählende Typ Datum. Möchtest Du die Berechnungsart eines gleitenden Durschnittes ändern können, so wäre der zu wählende Typ MOV... etc.
Ich wähle hier einen Parameter, weil ich die Anzahl Wochen, über welche dann ein Simple Moving Average berechnet werden soll, einstellen will.
Im Fenster Formeltext habe ich folgendes eingegeben:
a1:=C; //Erstellt Zahlenreihe mit Closewerten
a2:=Kurse.Lesen(currentsymbol,"Close","weekly");debug; //Öffnet Debugger - kann nach Testphase gelöscht werden
Mit Kurse.Lesen(currentsymbol..... liest Du die Schluss-Kurse des beim öffnen des Chart-Modul von Dir gewählten Wertpapieres ein.
Mit Kurse.Lesen("846900" ... würdest Du die Kurse des Dax einlesen weil 846900 das
Symbol für den Dax ist. (Beim direkten Einlesen über ein Symbol die "..." Parantesis Zeichen
nicht vergessen!)
Mit "Close" sagst Du dem Programm, dass Du Close-Werte und nicht Open, Low, H einlesen willst.
Mit "Weekly" sagst Du, dass Du die Schlusskurse vom jeweiligen Freitag oder falls Freitag ein Feiertag ist, den letzten Handelstag der Woche willst. Wenn Du Monatskurse willst, so musst Du - "monthly" statt "weekly" in die Formel eingeben.
Klicke nun auf den Reiter Ausgabewert im Fenster Indikator Anlegen. Hier musst Du eine Bezeichnung für Deine Linie wählen z.B. Weekly. Als Ausgabetyp muss Linie eingestellt werden.
Unter dem Reiter "Erweiterte Einstellung" kannst Du das Kästchen "Basisfenster" aktivieren, denn Deine Linie soll im gleichen Fenster wie der Tageschart des von Dir gewählten Wertpapieres erscheinen.
Teste nun die Formel. Schliesse das Fenster "Indikator anlegen" mit Ok. Prüfe im Fenster "Chart und Indikatoren auswählen" dass im Dropdownfeld "Basisfenster" eingestell ist (siehe oben 2te Abbildung, Feld neben "Ok"). Klicke dann auf "Ok". Bei den nun aufpoppenden Einstellungsfenstern übernimmst Du die vorgeschlagenen Einstellungen mit Klicken auf Ok. Nun öffnet sich das Formular-Debugger-Fenster weil das Programm Deine Anweisung "debug;" befolgt.
Im Debugger-Fenster prüfe ob die Fenster Variablen, Code und Source sichtbar sind. Wenn nicht, gehe im Menu auf den Botton "Ansicht" und setze "aktiv" bzw. √ vor die Worte Source und Variablen.
Gegebenenfalls klicke auf den Botton "Fenster" und wähle nebeneinander. Dann verschiebe die Fenster wie im oben gezeigten Bild des Debuggers.
Schau Dir nun im Fenster "Variable" des Debuggers die in Deine Variable
a2 eingelesene Zahlenreihe an. Doppelklicke hierzu im Debugger im Fenster Variable in der Kolonne "Werte" auf die letzte
ZELLE der mit a2 beginnenden Zeile. Jetzt öffnet sich ein weiteres Fenster im Debugger wo Du die in die neue Kurs-Zahlenreihen-Variable a2 eingelesenen Close-Werte sehen kannst. Im folgenden Bild siehst Du ein zweites Pop-Up Fenster, weil ich zum Vergleich auch für die Zahlenreihe a1, die für alle Handelstage einen Close-Wert enthält, das entsprechende Fenster geöffnet habe.
Mit einem Rechtsklick auf diese Unterfenster öffnet sich ein Kontextmenü. Du kannst hier "Zwischenablage" wählen. Die gesamte Kursdatenreihe wird dann in die Zwischenablage kopiert.
Sie kann dann für eine weitere Analyse in ein Excel-Blatt kopiert werden. Das eröffnet gewaltige
Möglichkeiten eigene Ideen zu verwirklichen. Also unbedingt ausprobieren.
Wie Du siehst wird mit Kurse.Lesen ...."Weekly" eine Zahlenreihe erstellt die alle 5 Handelstage einen Close-Wert, nämlich den Freitags Schlusskurs-Wert enthält. Für alle anderen Tage wird "Leer" gesetzt (siehe rote Pfeile).
Lässt Du nun das Chart-Modul diese Zahlenreihe a2 im Chartfenster zeichnen, so erhältst Du nur alle 5 Tage einen PUNKT. Das heisst, im Tageschart, siehst Du nur die Umrisse der gewünschten
Kurve.
Würdest Du nun nur die "weekly" Close-Daten im Chart darstellen, so würden diese Freitags-Schlusskurse ja mit den Freitags-Close Kursen deckungsgleich sein (Weekly Close = Daily Close vom Freitag). Du würdest dann nichts sehen, weil die Punkte Deiner Weekly-Close-Linie von den Einzeichnungen der Tages-Chart-Werte des Wertpapieres verdeckt werden.
Ich nehme also an, dass Du einen Durchschnittswert von z.B. 5 Wochen-Closes sehen möchtest. Dazu musst Du nun noch einen Gleitenden Durchschnitt über die Weekly-Closes bilden.
Die Zahlenreihe a2 besteht vorerst nur aus Leer-Werten und alle 5 Tage aus einem Close Wert. Der SMA-Befehl ( Simply Moving Average z.B. mit Parameter= 5) überspringt die "Leer" Elemente und sucht so lange bis er 5 Close Werte summieren und dann durch 5 Teilen kann, also den Durchschnitt über 5 Werte bilden kann. Mit der Einstellung Para1=5 erhältst Du also den Mittelwert der 5 vorangehenden Weekly Close Werten.
Im Fenster Source des Debuggers ist "debug" blau unterlegt. D.h. das Programm hat hier gestoppt. Mit F8 kannst Du nun die nächste Zeile abarbeiten lassen. Drücke also
einmal F8 nun ist im Source Fenster die nächste Zeile blau unterlegt. Schaue jetzt im Variablenfenster die Zeile a3 an. Dort steht immer noch "Nil". Drücke jetzt nochmals F8. Jetzt hat sich der Zellenwert in der Zeile a3 im Fenster Variablen gefüllt. Ein Doppelklick zeigt, dass nun auch für a3 eine Zahlenreihe erstellt wurde mit der Anzahl an Elementen bzw. Indexnummern wie in der [Klammer] angegeben. Auch diese Reihe besteht nur alle 5 Tage aus Close-Werten. Also auch der nun berechnete gleitende Durchschnitt würde nur als Punkte-Folge im Chart zu sehen seinl
Mit F5 Deiner Tastatur gelangst Du sofort an das Ende der Abarbeitung Deiner Formel und der Debugger schliesst sich. Im Chart wird nun die Linie gezeichnet. Jedoch hier zurück zu den weiteren
Anweisungen in der Formel.
a3:=sma(a2,Para1); //Gd über "Para1" Werte. Para1 (hier 5 Tage) unter "Allgemein" einstellen.
Das Problem ist, dass Du ja mit dem Einlesen von "weekly" oder "monthly" Close-Werten eben nur alle 5 Tage bzw alle 19 Tage einen Wert erhältst. Wie soll nun aus diesen Werten eine "Linie" entstehen. Eine Möglichkeit wäre, dass Du Dich mit einer Treppenlinie zufrieden gibst.
Mit dem
HHV Befehl kannst Du in der Zahlenreihe a3 jene Handelstage wo die Zahlenreihe mit einem "Leer" statt einem "Close" belegt ist, füllen. Eine Eigenschaft des HHV Befehl ist nun jedoch, dass dieser nur Leer - wiedergibt, wenn er in der in Bezug genommenen Zahlenreihe auf ein Element das mit "Leer" belegt ist, stösst. Daher ersetze ich zuerst alle "Leer" mit "Null". Dazu musst Du eine weitere Zahlenreihe mit einem If = Bedingungsbefehl erstellen. "If" das Programm in der Zahlenreihe a3 auf Leer stösst dann soll es der Zahlenreihe a4 eine Null andernfalls den in der Zahlenreihe a3 enthaltenen Close-Wert übergeben.
a4:=if(a3=leer,0,a3); //Ersetzen von Leer mit Null in weiterer Zahlenreihe a4
Jetzt kann ich mit dem HighestHighVon Befehl HHV für die Tage wo Null steht den jeweils
letzten vorhandenen Wert der a4 Reihe übernehmen.
a5:=if(a4>0,a4,hhv(a4,5));
Result1:= a5;Als Resultat erhältst Du nun im Chart eine Treppenlinie die unter oder über den täglichen Close
Werten läuft.
Du siehst, dass Dein Wunsch nach einer "Monats
kurve" einen gedanklichen Fehler enthält. Monats-Closes sind denknotwendig nur alle Monate einmal vorhanden. Die Werte die im Tages Chart für die dazwischenliegenden Tage erstellt werden sollen müssen "rechnerisch" (z.B. durch Interpolation) ergänzt werden.
Läuft alles zu Deiner Zufriedenheit so kannst Du die "debug;" Zeile aus der Formel entfernen oder einfach {ausklammern}.
Mit freundlichen Grüssen
DownUp
DownUp hat die folgenden Bilder hochgeladen: