Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Panel

Inhaltsverzeichnis:

Table of Contents

Zielsetzung

Der Filter in SHAREholder ist ein Filtersystem, dass die Eingrenzung von Werten auf Basis von Kriterien erlaubt. Als Kriterien sind alle Stammdaten & Technische-Indikatoren in beliebigen Kombinationen umsetzbar. Die Ergebnisliste wird in speziellen Beobachtungslisten zur weiteren Bearbeitung gespeichert. Die Filter sollen somit die Screening und das Scannen von interessanten Titeln am Markt unterstützen. Eine Kauf/Verkaufsentscheidung muss aber vom Anleger selbst getroffen werden.

...

Bedingungen sind entweder in mathematischer Form oder als Pattern zu formulieren. Hierbei entscheidet das Programm automatisch, wann welche Form genutzt wird, anhand der bisher genutzten Ausdrücke, Funktionen oder Variablen.

 


Verwendbare Filterkriterien bzw. Funktionen

 


Datenfelder und KennzahlenWeitere Details
Aktienstammdaten / Unternehmens-Stammdaten und Unternehmens-Kennzahlen

siehe Reguläre Expressions für Text-Stammdaten wie Notizen, Name, Markt etc.

Alle in SHAREholder bekannten Kennzahlen sind auch im Filter nutzbar.

  • KGV(Basisjahr) : Kurs Gewinn Verhältnis des Basisjahres (1-nächste,0-aktuelle)
  • KBV : Kurs Buchverhältnis
  • KCV : Kurs Cashflow - Verhältnis
  • UMK : Umsatz Kursverhältnis
  • Buchwert
  • Cashflow
  • Aktienstueckzahl
  • Umsatz
  • Gewinn(Basisjahr) : Gewinn des Basisjahres (1-nächste,0-aktuelle)
  • Dividende(Basisjahr): Dividende des Basisjahres (1-nächste,0-aktuelle)e
  • PEG(Basisjahr) : Gewinnwachstum des Basisjahres (1-nächste,0-aktuelle) 
  • DivR: Dividendenrendite
Technische Indikatoren und dessen Kauf-Verkaufssignalesiehe Indikatoren-Funktionen in Filtern nutzen
Mathematische und Logische Basisfunktionen 

Einige mathematische und logische Basisfunktionen:

  • SQR(x) Quadrat X
  • SIN(x) Die Funktion Sin berechnet den Sinus eines Winkels.
  • COS(x) Die Funktion Cos berechnet den Cosinus eines Winkels im Bogenmaß
  • ATAN(x) Die Funktion ArcTan berechnet den Arcustangens einer bestimmten Zahl.
  • SINH(x) Die Funktion ArcSin berechnet den inversen Sinus einer bestimmten Zahl.
  • COSH(x) ArcCos berechnet den inversen Cosinus einer bestimmten Zahl.
  • COTAN(x) Die Funktion Cotan berechnet den Cotangens eines Winkels (Intern wird 1 / Tan(X) gerechnet)
  • TAN(x) Tan berechnet den Tangens von X.
  • EXP(x) Die Funktion Exp gibt die Potenz von X zurück.
  • LN(x) Die Funktion Ln gibt den natürlichen Logarithmus eines Real-Ausdrucks zurück (Ln(e) = 1)
  • LOG(x) Logarithmus zur Basis 10
  • SQRT(x) Wurzel x
  • ABS(x) Die Funktion Abs gibt einen absoluten Wert zurück.
  • SIGN(x) Vorzeichen (-1,1,0)
  • TRUNC(x) Abschneiden der Nachkommastellen
  • CEIL(x) Ceil rundet den Wert einer Variablen auf z.B. Ceil(-2.8) = -2; Ceil(2.8) = 3; Ceil(-1.0) = -1
  • FLOOR(x) Floor rundet Variablen ab z.B. Floor(-2.8) = -3; Floor(2.8) = 2; Floor(-1.0) = -1
  • RND() Die Funktion Random erzeugt eine Zufallszahl innerhalb eines bestimmten Bereichs.
  • RANDOM() Initlisierung für die Nutzung von Zufallszahlen
  • INTPOW(x,y) IntPower errechnet die Potenz aus einer Basis.
  • POW(x,y) Power errechnet aus der Basis Base und dem beliebigen Wert Exponent die Potenz.
  • LOGN(x,y) LogN berechnet den Logarithmus X zur angegebenen Basis.
  • MIN(x,y) Minium von X, Y
  • MAX(x,y) Maximum von X,Y
  • IF(A,B,C) Wenn A>0 dann B sonst C
Kursdaten

Es gibt für den Zugriff auf Kursdaten zwei relevante Funktionen:

  • Intraday(<baiswert>,<kurstyp>)
  • History(<basiswert>,<kurstyp>,<Heute-X-Zeitpunkt>)

Der Basiswert (Bezugswert für die Auswertung) ist im Normalfall mit "varAll" belegt und somit innerhalb einer Suchliste variabel, d.h. es wird immer der aktuelle Titel als Basiswert gesetzt und kein fixer Titel. Es ist aber auch möglich z.B. den TecDAX mit seiner (!)WKN zu verwenden "Intraday(<TECDAX-WKN>,<KursTyp>)" und hier einzusetzen. Es ist somit der betrachtete Wert unbestimmt mit varAll oder bereits vorbelegt mit der WKN nutzbar. Das Prinzip ist so für alle vorhandenen Funktionen übertragbar.

 


Als Kurstypen (<kurstyp>) sind erlaubt (O-1,H-2,L-3,C-4,V-5,D-8). Um die Schreibweise leserlicher zu machen (statt der Zahlenwerte), gibt es korrespendierende Konstanten: 
varKOpen, varKHigh, varKLow, varKClose, varKVolumen, varKDatum.

Um die Lesbarkeit zu behalten, sollten diese wenn möglich auch immer verwendet werden. Diese werden aber nicht erzwungen. Intraday gibt dabei immer den aktuellen interen Tageskurs zurück. Liegen noch keine aktuellen Daten vor, wird der letzte bekannte Wert zurückgegeben. Der Wert entspricht immer der Anzeige in den Kurslisten unter AK (Aktuellem Kurs).

Heute-X-Zeitpunkt für History

History besitzt ein Parameter der bei 0 beginnt zu zählen, d.h. mit 0 : Tageswert und somit = Intraday entsprechend dem gewählten Kurstyp z.B.

  • History(varAll,varKClose,0) - Heutiger Schlusskurs bzw. letzter AK von heute.
  • History(varAll,varKClose,-1) - Vortageswert
  • History(varAll,varKClose,-2) - Vorgestern
    usw.

Logisch ist damit

  • History(<basiswert>,<kurstyp>,0) = Intraday(<basiswert>,<kurstyp>)

 


Ebenfalls verwendet werden kann für die Rückgabe von Kursdaten. Hierbei kann jedoch auf keinen Fremdtitel referenziert werden, sondern es wird im Filter immer der jeweilige aktuell geprüfte Titel verwendet im Filter-Durchlauf:

RasInt und RasHis(O|H|L|C|V|Min|Max) wobei die Felder als Zeit oder Indexfelder verwendet werden können

  • z.B. RasHisC(-2) gibt den Schlusskurs von vor 2 Handelstagen wieder
  • z.B. RasHisMax(-5) gibt den Höchstkurs der letzten 5 Handelstage wieder

 


HistoryCount() gibt die Anzahl der vorhandenen Kursdaten auf Schluss-Kurs-Basis zurück. Dies soll vor allem dem herausfiltern von Titeln dienen, die keine ausreichende Kursbasis haben.

Nutzung der Ergebnisse eines anderen Filters (SubFilter)

Die Bedingungen in einem DynFilter können zusätzlich strukturiert werden innerhalb von Sub-Filtern, d.h. es können definierte Filter in anderen Filtern aufgerufen werden. Dieser Aufruf darf nicht rekursiv erfolgen.

Die Berechnung des Subfilters erfolgt zu dem Zeitpunkt der ersten Nutzung innerhalb eines Bedingungsbaumes, sofern dies logisch notwendig ist (wenn die vorherigen AND Bedingungen nicht erfüllt werden können, kommt es zu keinem Aufruf der Funktion). Die Ergebnisse des Filters werden zwischengespeichert, so dass ein nochmaliger Zugriff nicht zu einer kompletten Neuberechnung führt.

Die Zugriffsfunktionen sind:

  • SubFilter(ID des Filters,varAll,Ergebniswert)

Als Ergebniswerte eines Subfilters sind definiert:

  • varFilterRanking - Rückgabe des Rankingwertes des betrachteten Basistitels
  • varFilterExists - 1 wenn existiert
  • varFilterPos - Position in der Ergebnismenge auf Basis der sortierten Liste mittels der Rankingfunktion
    zulässig.

Somit läßt sich sowohl die Position als auch die Existenz eines Wertes in einem anderen Filter ermitteln. Auch die Auswertung auf Basis eines bestehenden Rankings ist möglich.

Datumsfunktionen
  • toDate(DD,MM,YYYY): EXTENTED
  • toTime(HH,MI): EXTENTED (Nachkommastelle)
  • BaseDATE(<basis-verschiebung>) : EXTENTED,
  • FirstEOD: EXTENDED, womit der erste Kurs des Bastitels ermitteln wird und ein Vergleich zur Prüfung einer ausreichenden Kursbasis möglich wird z.B. FirstEOD<toDate(01,01,2000) möglich wird

wobei <basis-verschiebung> zwischen -3000 und 3000 liegen kann und sich auf das aktuell Datum bezieht

...


Optimierung

Zur Zeit gibt es nur eine Variante eines automatischen Brute-Force-Optimierungsalgorithmus, d.h. es wird der Filter komplett berechnet mit vollständiger Auswertung aller logischen Ausdrücke (auch wenn logisch bereits klar ist, dass der Gesamtausdruck festgelegt ist wahr/falsch). Somit werden die Laufzeiten und die Gesamt-Aufrufe der Einzelbedingungen festgestellt.

...