|
Gruppen: Kunde
Beiträge: 72
|
Hallo Freunde,
immer wieder ist es wichtig, ein Einzelergebnis mit dem einer Gesamtheit zu vergleichen.
Im konkreten Falle soll die Performance eines Einzelwertes mit der Durchschnittsperformance eines Kataloges verglichen werden.
Wie aber findet man den Performance-Durchschnitt dieser Gruppe? Anschließend soll das Ergebnis in eine eigene WKN geschrieben werden.
Meine bisherigen Programmier-Versuche führten nicht zu dem gewünschten Ergebnis. Vmtl. aber gibt es bereits die fertige Lösung? Oder freundliche Hilfe hier??
Beste Grüße KK
|
|
Gruppen: Kunde
Beiträge: 48
|
Listen-Modul: Titeln in einem Katalog entsprechend ihrer Gd50-Steigung über 42 Wochen Ränge zuteilen
Hallo Klaus,
es ist einerseits möglich im Chart-Modul einen gleichgewichteten Index zu erstellen, der die Titel eines Kataloges als Grundlage hat oder anderseits möglich im Listen-Modul Ränge zu vergeben um Titel eines Kataloges zu vergleichen. Nur im ersteren Fall gibt es Sinn das Resultat in eine WKN zu schreiben. Ich bitte Dich diesbezüglich um eine Präzisierung Deiner Fragestellung.
Chart-Modul: Für das erste Problem kann die Formel von Herrn Goerke zum RMI bzs BMI als Vorlage dienen.
Meine nachfolgenden Ausführungen entsprechen nicht Deiner Fragestellung. Ich zeige hier wie man Titeln in einem Katalog für deren Performace des jeweiligen Gd50 über 42Wochen einen Rang zuteilen kann, so dass eine Liste nach dem Rang sortiert werden kann. Dein Problem lässt sich wahrscheinlich ähnlich lösen.
Listen-Modul: Im folgenden Beispiel will ich wissen, bei welchem Titel eines Kataloges die Steigung des Gd50 über 42 Wochen den höchsten Wert hat. Dieser Titel soll dann den Rang "1" erhalten.
Tai-Pan Hauptverteiler -> Listen-Modul öffnen -> "Listen anzeigen"-Fenster mit "Abruch" schliessen. Dann im Hauptfenster gelbes Blatt mit rotem Stern -"Neue Liste anlegen" klicken -> nun öffnet sich der Listenkonfigurator. Im Feld verfügbare Spalten eine Zeile aktivieren dann auf Tastatur "Kurz" tippen - "Kurznahme" wird nun aktiviert - mit "V" auswählen und in das untere weisse Feld einstellen. Wieder ins "Verfügbare Spalten" Feld klicken und auf Tastatur "For" tippen - "Formel" wird gewählt mit "V" nach unten - es öffnet sich "Formel bearbeiten" (müsste eigentlich "Formel-Editor" heissen...) Fenster. Dann dort wie folgt eintippen: (alles was grün ist)
{Ich rechne die Steigung des Gd50 über ein Zeitfenster von 42 Wochen} a2:=lastvalue(roc(sma(c,50),210,%));
{Ich suche nach einem beliebigen Titel, welchen ich als Master verwenden kann. Der Titel muss die Anzahl Elemente (Close-Kurse) haben, welche ich benötige. Im vorliegenden Beispiel 50 + 210 Tage also mindestens 260 Tage (Close-Kurse). (Denn die Zahlenreihe braucht minestens 50 Closewerte damit der Sma50 berechnet werden kann und dann 210 Sma50 Werte damit der Roc210 berechnet werden kann) Den Titel finde ich indem ich im Katalog-Modul in die Überschriften der rechten Darstellung klicke und dann über "Neu" einfach mit der Formel a1:=Count(C) eine Liste ausgebe, in welcher ich die Anzahl Kurse pro Titel sehen kann}
a_Master:=Kurse.LesenNoSync("0A0098","Close","Daily");
{Hier lese ich nun den mir passenden Titel ein. Das tue ich, damit die Berechenzeit nicht ins Unermessliche wächst. Ist es einem egal, die Liste über Stunden berechnen zu lassen, kann man das auch weglassen. Die WKN 0A0098 ist meinem Zweck entsprechend gewählt. Sie können hier eine Ihrem Zweck entsprechende WKN wählen. WKN muss in Anführungszeichen gesetzt werden. Du kannst ohne den a_Master arbeiten. Du lässt dann diese Zeile aus. Unten bei a4:= ganz hinten in der Klammer muss Du dann ",a_Master" weg lassen. Die Synchronisation erfolgt dann in Bezug auf den obersten Titel im Katalog mit der Katalog id = 1. Hat dieser Titel nur 100 Close-Werte, weil es ein IPO ist, gibt es Probleme. Hat dieser Titel 6000 Close-Werte, braucht die Formel etwas lange für die Berechnung}
{Einlesen des Kataloges - dazu muss im "Formel Bearbeiten Editor" auf dem ersten Registerblatt als erster Parameter der Parameter Katalog eingestellt werden. Dazu den entsprechenden Eintrag ganz rechts unter "Typ" auswählen} a_KatId:= Catalog.Open(Para.Katalog);
{Befehl Katalog Open öffnet den unter Para angegebenen Katalog. Kann jeweils beim Aufruf der Listenformel neu gewählt / eingestellt werden }
{Title.Count liest nun die Anzahl Titel des Kataloges (für Schlaufe nötig). TitLE nicht TitEL} n:= Title.Count(a_KatId);
{Platzhalter für die Rang-Zahl. Die Rangzahl wird eine Ganzzahl sein. Ich muss VOR der Schlaufe eine entsprechende Variable definieren, welche vom Typ Ganzzahl / integer sein muss. Tue ich das nicht, erbt a7 innerhalb der Schlaufe den Tyus der vorangehenden Variable innerhalb der Schlaufe also "Array" } a7:integer:=0;
{Schlaufe um den jeweiligen Rang zu bestimmen}
For i:= 1 to n do Begin {Lese Symbol des Titel mit Katalog_Id "i" aus Katalog} a3:=Title.Symbol(a_KatId,i); {Synchronisiere mit meinem Master Titel} a4:=Kurse.Lesen(a3,"Close","Daily",a_Master); {Schliesse Kurslücken beim Eingelesenen Titel} a5:=if(a4=Leer,prev,a4); {Rechne wiederum Steigung Gd50, 42 Wochen von dem als Vergleich dienenen Titel das tue ich mit der Schlaufe für jeden Katalog-Titel!} a6:=lastvalue(roc(sma(a5,50),210,%)); {Berechne den Rang} a7:=a7+if(a6 > a2,+1,+0); {Abbruch der Schleife, wenn jener Titel, dem ich Rang zuteilen will, einen Rang über 50 erhalten würde. Da ich annehme, dass solche Titel für meine Selektion uninteressant sind All das tue ich wieder um Rechenzeit zu kürzen} if a7 > 50 then break else continue
{Ende der Schlaufe; "End" immer nötig wenn Befehlsfolge mit "Begin" eingeleitet} End;
Result:=if(a7<50,a7,51);
Wichtig: Bevor die Liste nun über einen Katalog ausgeführt wird muss Du zuerst nach Aufrufen der Liste im Fenster "Liste-Anzeigen" unten auf den Schraubenschlüssel gehen und diesen Klicken. Der Listenkonfigurator erscheint. Nun die Konlone aktivieren, welche die obige Formel enthält und rechts auf "Einstellung" klicken. Im nun sich öffnenden Pop-Up muss im Trop-Down Feld natürlich der gleiche Katalog gewählt werden über welchen die Liste ausgeführt werden soll.
Hinweis: Tai-Pan ist eigentlich für das Bilden von Rängen ungeeignet. Das Programm muss zum Bestimmen des Ranges eines Titels alle anderen Titel Stück für Stück einlesen. Das muss das Programm für jeden Titel tun. Bei 50 Titel in einem Katalog kommt es also zu 50*50 = 2500 Lesevorgängen. Das frisst sehr viel Zeit. Ich empfehle daher die Liste über die Zwischenablage nach Excel zu kopieren und die Rang - Bewertung in Excel durchzuführen. Es wäre möglich mit Visual-Basic ein entsprechendes Programm zu schreiben. Mir fehlen hierzu die Kenntnisse.
MfG DownUp
|
|
Gruppen: Kunde
Beiträge: 353
|
Sehr geehrter Herr Kroeplin,
es gibt da eine ganz einfache Lösung. Mit dieser Lösung können Sie sogar die einzelnen Wertpapiere gewichten, wenn Sie wollen.
Viele Grüße Wilhelm Zacher
|
|
Gruppen: Kunde
Beiträge: 72
|
Klaus Kroeplin schrieb:Wie aber findet man den Performance-Durchschnitt dieser Gruppe? Anschließend soll das Ergebnis in eine eigene WKN geschrieben werden. Hallo Hannes, danke für deine erneut aufgebrachte Mühe. Natürlich ist das Chartmodul am besten geeignet, um für einen Katalog einen Wert zu berechnen und auszugeben (als Grafik oder/und als WKN). Das soll ähnlich der Berechnung des ADL oder des RSL für den gesamten Katalog erfolgen. Die listenmäßigen Vergleiche sind so sehr einfach möglich, da dieser Durchschnitt dann ja ebenfalls eine WKN ist, genau wie anderen Wertpapiere der gleichen Liste. Wilhelm Zacher schrieb:es gibt da eine ganz einfache Lösung. Mit dieser Lösung können Sie sogar die einzelnen Wertpapiere gewichten, wenn Sie wollen. Hallo Wilhelm, so etwas hatte ich mir schon gedacht, da dieser Wunsch sicher bei allen Nutzern schon mal aufgetaucht war. - Also: Lass' uns nicht dumm sterben! Beste Grüße euch beiden KK
|
|
Gruppen: Kunde
Beiträge: 48
|
Listen-Modul: die Zahlenreihe "Zusatz" (Vergleichswert) im Kurs-Datenarray eines TitelsHallo Klaus, "Performance-Durchschnitte" ? Performance von was ( C zu C, Gd zu Gd, Mom zu Mom)?? über welchen Zeitraum? Ich kann in Tai-Pan Formelbeispielen weder die von Dir erwähnte ADL noch RSL Lösung finden. Bei den Indikatoren beziehen sich die mit Kurzname bzw. Funktion ADL und RSL bezeichneten Formel immer nur auf ein einziges Wertpapier und nicht auf einen Katalog. Könntest Du die "Funktion" Bezeichnung der von Dir erwähnten ADL, RSL Lösungen angeben? Im Kurs-Datenarray zu einem Wertpapier gibt es neben den C, O, H, L Werte-Zahlenreihen noch die Zahlen-Reihe "Zusatz" (= "Vergleichswert"). In der Regel ist als "Zusatz" bei den zu einem Katalog (z.B. Dax) gehördenden Titel im Stammdaten-Fenster des Titels im Feld "Vergleichswert" der entsprechende Index (also z.B. Dax) eingetragen. Bei den Aktien im Katalog Dax müsste also der "Zusatz" bei jedem Wertpapier jeweils die Close-Werte des Dax-Indexes spiegeln. Dann würde die Formel im Listen-Modul - um eine Vorselektion durchzuführen - einfach lauten: Result:=if(Roc(C,20,%)>Roc(Zusatz,20,%),1,Leer);Steigt jedoch ein Titel vom Mdax zum Dax auf, kann es passieren, dass bei L+P der Zusatz in der Datenbank nicht von Mdax zu Dax korrigiert wird. Es kann auch sein, dass der Zusatz bei einem Titel in der Datenbank ganz fehlt. Welcher Index pro Titel als Vergleichswert bei den Stammdaten eingetragen ist kannst Du im Listenmodul mit der Spalte "Name Vergleichswert" oder mit einer Formel mit den Befehlen (grün) herausfinden: a1:=Stamm.Vergleichswert("CurrentSymbol"); //gibt String bzw. Zeichenkette Result:=StrtoDouble(a1); //a1 = frei von mir gewählter Variablen-Name {String also "AsciII-Zeichenkette" muss wenn WPKN aus Zahlen besteht in Dezimalzahl umgewandelt werden, damit der Wert im Listen-Modul in der Liste angezeigt wird. Da stimmt noch etwas nicht - weil dann WPKN die aus Buchstaben bestehen nicht angezeigt werden ??} Ist bei einem Titel der falsche oder kein Vergleichswert eingetragen, so kann der Tai-Pan EoD Benutzer das Stammdaten-Modul öffnent und in das Feld "Vergleichswert" den gewünschten Index in dem sich öffnenden Titelselektionsfenster suchen und dann in das Feld eintragen. Der Benutzer könnte hier also auch einen selbst kreierten Index Titel für Titel eintragen. Umfasst der Katalog jedoch 500 Titel, so würde das zeitaufwendig 500*1Min = 9h Arbeit. Nun haben die L+P Programmiere an dieses Problem gedacht und es gibt zum Glück im Katalog-Modul unter "Funktionen" den Befehl Vergleichswert festlegen für "markierten Titel" oder "markierte Kataloge/Gruppen". Damit lässt sich das festlegen des Vergleichindexes oder Werte für alle Titel in einem Katalog also sehr schnell erledigen. !Que Bien! Bleibt also nur noch die Aufgabe einen eigenen Index für einen selber zusammengestellten Katalog zu erstellen. Dazu gibt es in der Formelsammlung die Formel Marktbreite fMarktbreite, welche zeigt, wie man das macht. /Mov() und /n und unten die Zeilen zum Gd38 setzt Du einfach in { ....} weil Du ja einfach die Close aller Gruppentitel aufsummieren willst. Nun kannst Du diese Formel über Deinen Wunschkatalog laufen lassen. Dann trägst Du das hier geschriebene Symbol als Deinen Vergleichswert wie oben beschrieben ein. @ Lieck, Albrecht Leider werden die Formeln, welche den "Verfügbaren Spalten" hinterlegt sind, von L&P nicht transparent offengelegt. Zum Lernen der Formelsprache wäre es echt hilfreich, wenn in einer pdf oder im Programm selber die hinterlegten Formeln offengelegt würden! MfG DownUp
|
|
Gruppen: Kunde
Beiträge: 72
|
Hallo Hannes,
ich kann heute nicht mehr nachvollziehen, woher diese Programmierung stammt. Jedenfalls verwende ich diese Formeln seit Langem, um mir einen Überblick über die vorhandene Marktbreite (Advance/Decline) eines Kataloges zu machen.
Entsprechendes möchte ich für die durchschnittliche Kursperformance eines ges. Marktes.
Beste Grüße KK
{ ADLinie } fAdvance := AdvIssues; fDecline := DecIssues; AD := fAdvance - fDecline; ADLine := abs(AD + Prev);
ZielWPK := "NEWWPK" ; KatID := Catalog.New (" !ADLINIEN2"); Title.New (KatID, ZielWPK, "NEWWPK", "", "WPArt"); Catalog.Close (KatID); Kurse.Schreiben (ADLine, ZielWPK, "CLOSE");
PS: Die Anfrage bei Herrn Lieck betr. vorhandener (?) Lösung ist bisher unbeantwortet
|
|
Gruppen: Kunde
Beiträge: 48
|
Hallo Klaus, Originalformel über Export sichern, dann wie folgt mit Copy Paste überschreiben: Formeltext -> Grün: { a: Marktindex: Summe der Schlusskurse aller Titeln eines Kataloges berechnen erstellt:27.08.07 geändert: 27.06.2013 b: Marktbreite: Summe der Ratios Schlusskurse/Gd 130 Handelstage über alle Titel eines Kataloges berechnen}
{Platzhalter Zahlenreihe erstellen und Katalog öffnen} wRSLSum:Array := 0; n:Integer := 1; KatID := Catalog.Open(Para2);
{Falls Anwender vergisst Para2=Katalog auszuwählen} If KatID <> 0 Then Begin n := Title.Count(KatID); {Für alle Titel des Kataloges tun} For i := 1 To n Do Begin WPKi := Title.WPK(KatID, i); wClose := Kurse.LesenNoSync(WPKi, "CLOSE"); wRSLi := wClose; // @ Klaus: hier habe ich { / Mov (wClose, Para1, S)}entfernt wRSLiSync := Kurse.Sync(C,wRSLi); // per Titel die Zahlenreihen-Elemente mit C synchronisieren wRSLi0 := If (wRSLiSync = Leer,Prev, wRSLiSync); // Leerwerte durch 0 ersetzen, no durch Prev wRSLSum := wRSLSum + wRSLi0; // aufsummieren End; Catalog.Close(KatID); End; Result := wRSLSum {/ n}; //@ Klaus: setze statt "Bandfläche" "Linie" bei Ausgabewerte WRS:= Kurse.Schreiben(wRSLSum/n,"YYY010","Close"); //@ Klaus: entferne unnötigen Zwischenschritt WRSL:=wRSLSUM/n
{ WGD38:=Sma(WRSL, 38 ) ; //@ Klaus: Klammer die Berechnung eines Gd's aus. Setze Sma WGD38; }
{Hinweis: Befindet / befinden sich im Katalog einzelne Titel mit unsinnigen Preisausschlägen wie VW (Porsche Take over Versuch) Accenture (Flash Crash), Neue Markt Titel, so wird der Index übermässig verzerrt. Dann sollten für die Berechnung ein neuer Katalog, ohne diese Ausnahmetitel erstellt werden}MfG DownUp Die anderen Reiter:
DownUp hat die folgenden Bilder hochgeladen:
|
|
Gruppen: Kunde
Beiträge: 72
|
Hallo Hannes,
danke für deine nächtliche Fleißarbeit. Meinem Ziel der Katalog-Performance kommen wir wohl auch ein Stückchen näher. Trotzdem habe ich immer noch die wohl nicht ganz unberechtigte Hoffnung, dass plötzlich eine simple, geniale Formel auftaucht. Denn frei nach Goethe:
Alles Gescheite ist schon gedacht worden, man muß nur versuchen, es noch einmal zu denken.
Bei den Programmierversuchen fiel mir auf, dass es eine Unmenge Formeln und Indikatoren bereits in Taipan gibt, deren Zusammensetzung und Aussage sehr wertvoll für den täglichen Umgang mit den großen Datenmengen wäre. Man müsste sie eben nur kennen u. anwenden können.
Hier ist erneut die Forderung nach einem Handbuch abzuleiten
Beste Grüße KK
|
|
Gruppen: Kunde
Beiträge: 72
|
Hallo Freunde, anders könnte man die Fragestellung natürlich auch formulieren, nämlich so: Es ist der INDEX eines Kataloges zu ermitteln, ähnlich dem des DAX für seine dreißig Industrieunternehmen. Wobei hier eine unterschiedliche Gewichtung der einzelnen Bestandteile (WKN) wie beim DAX natürlich nicht gewünscht ist. Wer hat die Idee? Beste Grüße KK
|
|
Guest |