Skip to end of metadata
Go to start of metadata

Grundverfahren

Zielformat für alle Aktualisierungen ist ein zeilenorientiertes Textformat. Es muss dabei in der Datei eine eindeutige Kennung wie ISIN, WKN, freie Variable vorhanden sein, die den betroffenen Titel identifizieren kann.

Die Aktualisierung der Kursdaten über Internet erfolgt direkt über FTP oder HTTP(s) Verbindungen. Werden Proxyserver für die Internetverbindung genutzt, so sind zwingend unter Einstellungen - Programmeinstellungen die entsprechenden Adressdaten des Proxies einzutragen.

Die Kursaktualisierung erfolgt komplett über freie Angebote im und aus dem Netz. Die im Programm eingebundenen Seiten sind dabei frei konfigurierbar. Unterstützt werden folgende Formate:

  • CSV-Textdateien wie sie z.B. vom Yahoo-Server geliefert werden mit beliebigen Trennzeichen, Formateinstellungen sofern die Daten zeilenweise geliefert werden können.
  • Kursdaten in HTML formatiert, sofern die Daten einer Zeilenstruktur folgen also in Tabellen oder als Rohtext hintereinander aufgeführt sind.

Konfigurationsparameter

Aktualisierungsgruppen


Wenn innerhalb des Programms die Kursdaten aktualisiert werden, werden alle Aktualisierungsinformationen aus der Aktualisierungsgruppe ausgelesen. Diese Gruppen bilden eine eindeutige Zuordnung zu den für eine Aktualisierung notwendigen Abfragen ab wie z.B. Abfrageadresse (URL) für die Tagesdaten, Historischen Datenadresse und Formate.

Um die Bedeutung der Aktualisierungsgruppen kurz zu umreißen (hier die Einstellungsmaske zu den Gruppen), nachfolgend ein Sceenshot der Einstellungsmaske. Zu sehen sind rechts die aktuellen möglichen Gruppen und links für Yahoo.de[isin][hamburg] die zugehörigen Einstellungen.

Erst die Aktualisierungsgruppen stellen die klare Verbindung zu den Abfrageadressen, Börse und Währung her. Da die Zuordnung von Titel/Aktie und Aktualisierungsgruppe immer 1:1 ist, muss immer nur eine passende Gruppe gefunden werden und kein Einzeltest auf Adessebene. Hierzu steht in den Titelstammdaten (siehe oben) neben der Auswahlbox ein entsprechende Testformular zur Verfügung.

Eine Aktualisierungsgruppe nutzt daher:

  • Internetadressen als Tagesdatenadresse
  • Internetadressen als Historische Daten
  • Börse bzw. das spezifische Börsenkürzel für die Abfrageadresse, da Yahoo z.B. andere Kürzel als Consors verwendet. Die Kürzel müssen auf der jeweiligen Plattform manuell ermittelt werden und sind weitgehend spezifisch in der Abbildung sein. Es wird damit eine sehr genaue Festlegung der Zieladressen erreicht.

Über die Internetadressen werden Sammelabfragen, d.h. gleichzeitige Abruf von Titel-Kursdaten festgelegt und die für den Import zu nutzenden Importformate. Eventl. zu nutzende (Zwischen-)Variablen für den Abruf werden über die Internetadressen festgelegt. Diese Variablen können statisch oder fest sein, so benötigt z.B. Yahoo eine spezielles Yahoo-Symbol für die Abfrage. Dies wird über die Internetvariablen pro Titel gespeichert und kann darüber hinaus, wenn notwendig und bisher nicht bekannt automatisch ausgelesen werden.

Im Normalfall sind daher für neue Titel immer nur die WKN, ISIN und Name sowie die Aktualisierungsgruppe festzulegen. Alles andere wird versucht automatisch auszulesen.

Internetadressen


Eine Internetadressen-Template enthält 2 Basisinformationen:

  1. Wie ermittle ich die Zieladresse (URL) für ein Titel, welches über diese Adresse aktualisiert werden kann. Adresse mit Nutzung von Freien und Festen Variablen
    1. Um eine Zieladresse zu bilden, werden eine Reihe von festen Variablen angeboten. Diese stellen einen Zugriff auf die Stammdaten einer Aktie und den aktuellen Einstellungen für die Kursaktualisierung dar. Variablen werden immer in { } eingeschlossen, um diese von anderen Teilen der URL-Zeichenkette unterscheiden zu können. Freie Variablen sind Platzhalter für Werte, die selbst über feste Variablen oder andere freie Variablen aufgelöst werden müssen. Sie dienen dazu Sammelabfragen aufzulösen oder Zwischenwerte von einem Server zu ermitteln, die benötigt werden um an die eigentlich Kursinformation zu kommen. Zum Beispiel verwendet Stockworld eine interne zufällige Chart.ID, die beim Abruf von Kursdaten benötigt wird. Erst die Auflösung dieser Chart.ID erlaubt den "finalen" Kursdatenabruf.
  2. Wie werte ich das zurückgegebene Ergebnis der Seite aus
    1. Datentyp der Rückgabe (CSV, HTML, Profil)
      1. CSV: Reines Textformat ohne HTML-Steueranweisungen.
      2. HTML: Textformat mit HTML-Steueranweisungen, die zunächst geparst werden müssen. Die Steueranweisungen sind dabei immer in < > eingeschlossen. Die für den Import notwendigen Tests können unter "Einstellungen.HTML-Parsing" durchgeführt werden.
      3. Profil: Zurückgegebene Daten werden direkt als Text komprimiert und in eine Profildatei gespeichert. Kursdaten können hier nicht gewonnen werden.
    2. Importformat
    3. HTML-Seitenimport, falls HTML-Typ

Internetvariablen

Internetvariablen werden ausschließlich für die Zielauflösung von URL-Adressen benötigt. Es gibt hier zwei Anwendungsfälle:

  1. Sammelabfragen
  2. Sich verändernden Adressteilen (je Abruf) auf der Website z.B. Chart.ID bzw. auch Adressteilen die Serverspezifisch sind und einmalig ermittelt werden müssen. Ein Beispiel ist die CompanyID der gespeicherten Profile auf dem Comdirect-Server. Diese IDs sind weitestgehend spezifisch für den Server, bleiben allerdings konstant.

Umbenennung

Da Variablen Bestandteil anderer Variablen sein können als auch Bestandteil von verschiedenen Internetadressen ist die Umbenennung von Variablen nicht unproblematisch. Um den Vorgang aber nicht unnötig kompliziert zu halten, werden automatisch nach einer Umbenennung alle abhängigen Teile aktualisiert. Dies verhindert Inkonsistenzen.

Sammelabfragen


Hier das beste und einfachste Beispiel für eine Sammelabfrage. Definiert wird eine solche Abfrage durch die Eingabe von "Maximale Anzahl von gleichzeitigen Abrufen" >1. Geachtet werden sollte auf das Trennzeichen zwischen den Werten für die Abfrage. Werden somit 3 Aktien ausgewählt und verwenden das selbe Aktualisierungstemplate ergibt sich für die Variable (Wir nehmen an alle Werte verwenden die XETRA-Börse):

760080.FX+508850.FX+508810.FX

Die Kürzel für die Börsen werden entsprechend den Festlegungen unter Einstellungen/Börse gesetzt und sind teilweise Serverspezifisch. Für den Zugriff ist daher ein Index erlaubt bei 1 beginnend z.B. BOERSE(2)

Die Reihenfolge muss dabei für alle Eintragungen gleich bleiben.

Dynamische Variablen


Ein schönes Beispiel für den 2. Anwendungsfall sehen wir hier. Hierbei wird als ein Zielseite zunächst abgerufen und intern nach der Zeichenkette

Tagesdaten durchsucht. Der {Suchstring} wird dabei nicht gesucht, sondern kennzeichnet einfach nur den Teilbereich, der als Rückgabewert für die Variable gelten soll.

Wird somit eine Seite zurückgegeben:

ist der Rückgabewert hier 233323.

Internetformate


Die Formateinstellungen entscheiden maßgeblich über den Erfolg oder Mißerfolg einer Kursaktualisierung. Festgelegt werden können für die Kursdatenaktualisierung zwei unterschiedliche Importformattypen: Für Aktienkursdaten und Für Aktienstammdaten z.B. KGV, DivR usw.

Aktienkursdaten
Zur Veranschaulichung einmal ein Protokollauszug für dieses Format "Yahoo.Daily.DE":

Trennzeichen

Unterscheidungskennzeichen zwischen den einzelnen Datenfeldern. Im Protokollauszug hier ein Semikolon. Für das Trennzeichen können auch mehrere Zeichen angegeben werden, wenn gleichzeitig mehrere gleichartige Formate abgebildet werden sollen, die sich nur durch das Trennzeichen unterscheiden. Das Trennzeichen wird dabei mit dem gleichwertigen Dezimaltrennzeichen verwendet. Verwendet wird dabei das Trennzeichen, was in der Zeile an kleinster Position gefunden werden kann. Bei Verwendung des X.Trennzeichen wird auch das X.Dezimaltrennzeichen verwendet. Wenn dies nicht möglich ist, dann wird immer das 1. verwendet.
Dezimaltrennzeichen: Kommazeichen z.B. für Dezimalzahlen z.B. 12,23
Datumsformat:

  • M- Monat, wobei nur M und MM erlaubt sind, Ausgeschriebene Monate können sowohl Engl/Deut. ausgewertet werden
  • D- Tag, wobei hier wieder nur D oder DD erlaubt sind. Ausgeschriebene Tage können zur Zeit nicht ausgewertet werden
  • Y- Jahr, wobie hier nur YY oder YYYY möglich sind. Fehlt die Angabe wird das aktuelle Jahr angenommen.
  • Da nicht immer klar ist ob nun einstellig oder zweistellige Datumsfelder vorhanden sind ist ein Joker möglch z.B. ist folgendes erlaubt: D*-M*-Y*.

Als Platzhalter ist {DATE} erlaubt, wenn immer das aktuelle Basisdatum angenommen werden soll.

Zeitformat:
H- Stunde, wobei nur H oder HH erlaubt sind
M- Minute, wobei nur M oder MM erlaubt sind

Als Platzhalter ist {NOW} erlaubt bzw. {NOW:HH:MM}, wobei HH:MM für die anzunehmende Uhrzeit steht. Beispiel: {NOW:20:00}

Positionsangaben:
Die Zählung bei allen Positionsangaben beginnt bei 1.

Pos(Datum) wäre bei folgendem Beispiel: 910468.DE;87,60;19:56;5/17/2001;0,00;0,00;0,00;0 mit 4 zu setzen.

Pos(Suchkennung): Da Kursdaten oftmals in Kurslisten zurückgegeben werden, die nicht identisch in der Reihenfolge der Abfrage vorliegen, muss eine Zuordnung der Daten zu den abgefragten Kurswerten vorgenommen werden. Hierfür wird die Suchkennung verwendet, die als Ausprägungen die Variablen:

  • {WKN}
  • {SYMBOL}
  • {NAME}
  • {ISIN}
    erlauben. Da diese Angaben teilweise ergänzt sind durch unnötige Angaben sind einschließende Angaben (Präfix, Postfix) erlaubt z.B. {WKN}. für Angaben in der Form 620378.FX;01/01/2001;4.3 wäre ein {WKN}. somit ausreichend da hier nur eine Teilsuche gemacht wird.

Zeitverschiebung

Um Kursaktualisierungen von Servern mit lokaler Zeit effektiver verwenden zu können, ist es möglich die ausgelesene Zeit um X Stunden zu verschieben. Für den Yahooserver (USA) ist somit 6 einzutragen um eine positive Verschiebung um 6h zu erreichen. Negative Werte sind natürlich auch möglich.

Kurzschreibweise für Importformate

Die Importformate sind für einen Kursanbieter zwischen Fonds, Zertifikaten und Aktien/Indizes unterschiedlich. Sollten diese importiert werden, mussten bisher für jeden Typ ein Importformat festgelegt werden. Die Importformate sind jedoch weitgehend identisch, haben aber eine unterschiedliche Informationsmenge.

Fonds: <Datum>;<Ausgabepreis>;<Rücknahmepreis>
Zertifikate: <Datum>;<Kurs>;<Volumen>
und letzlich Aktien: <Datum>;<Open>;<High>;<Low>;<Close>;<Volumen>

Um dies Abzukürzen gilt folgendes System:
Wenn durch das Trennzeichen und der Art der Informationen(korrekte Zahlenwerte) mind. 2 Felder extrahiert werden können:

  • Datum: Entsprechend Pos.Datums-Angabe
  • Zeit: Entsprechend Pos.Zeit-Angabe
  • Close: Kleinste nicht 0 Wert aus den vorhandenen belegten Feldern
  • Volumen: Wenn mehr als 2 vorhanden sind, werden Werte über 1000 als Volumen angenommen

Aktienstammdaten

Ursprünglich eingerichtet war diese Option für den Import der Daten von Börse Online aus dem Onlinemedium. Mittlerweile gibt es hierfür den direkten Import der BO-Statistik-Tabelle. Dennoch alle Angaben gelten hier parallel zu den Aktienkursdaten.

Anzumerken ist hier insb. beim Dividendenfeld, dass hier die DividendenRendite eingelesen wird und intern über die zugehörige Kursangabe zurückgerechnet wird.

Aktualisierungen von HTML-Seiten


HTML Dateien können in CSV Dateien übersetzt werden durch die Transformation von Tabellen. In HTML werden Tabellen mit

dargestellt.

Diese Struktur wird in:

transformiert. Diese kann dann normal durch die Importformatbeschreibungen ausgelesen werden.
Da die Infotabellen nicht zwingend allein auf einer HTML Seite stehen müssen, kann ein Suchschlüssel für eine Tabelle angegeben werden um anderen davor liegende Tabellen zu überspringen z.B. für Werbeblöcke. Nachfolgende werden ohnehin ignoriert.

Informationen werden normalerweise zeilenweise gespeichert. Dies macht eine Transformation von Tabellenzeilen in Informationseinheiten notwendig. Mit "TR=Zeilenvorschub" aktivieren Sie diese Funktionalität. Mit Suchschlüssel können Sie gezielt ein Suchwert festlegen, der an irgend einer Stelle innerhalb der gesuchten Tabelle vorhanden ist. Im obrigen Beispiel würden Sie gezielt die 1.Tabelle mit "Kursdaten" filtern, die 2. entsprechend mit Copyright. Alle anderen Tabellen die den Suchbegriff nicht enthalten würde herausgefiltert werden.

Testvorgehen

Um effektiv zu arbeiten, sollte zunächst im Browser die gewünschte Seite angesurft werden, hier dann der Quelltext (Kontextmenü Quelltext anzeigen) in die Zwischenablage kopiert werden.

Dann öffnen Sie im Hauptmenü den Menüpunkt "Einstellungen / Test-HTML-Parsing" und übernehmen mit dem Button "HTML aus Zwischenablage einfügen" im Formular den HTML-Quelltext und parsen diesen automatisch. Das Parsingergebnis wird mit Zusatzinformationen im unteren Ergebnisfenster gezeigt. Über den Button "Importformat" kann bereits von hier aus direkt dieses festgelegt oder geändert werden.

Protokoll und Fehlersuche


Mit <STRG><F> unter dem Hauptmenü / Aktualisieren / Filter - Internet sollte zunächst das Protokoll aktiviert werden.

  • Checkbox "Protokoll" dient der Aktivierung der Aufzeichnung aller Aktivitäten. Das Protokoll wird nach der Aktualisierung automatisch mit einem Texteditor geöffnet
  • Checkbox "Reines Fehlerprotokoll" dient nur der Aufzeichnung von gemeldeten Fehlern. Nach Abschluss wird das Protokoll auch nur automatisch geöffnet wenn Fehler aufgetreten sind.

Das Protokoll dient ausschließlich der Überwachung der Internetkursaktualisierung und sollte auch entsprechend
dafür genutzt werden. Folgende Informationen lassen sich direkt aus dem Protokoll herausnehmen:

  • Welche Adressauflösung wurde verwendet mit welchen Variablenauflösungen
  • Welche Rückgabewerte wurden vom Server gemeldet
  • Zusammenfassung der eventl. Problemkandidaten

Genau aus diesem Grunde sollte auch für die Einrichtung neuer Adressen der Unittest (lokale Test an einer Beispielaktie) mit dem Protokoll durchgeführt werden um die Eingaben zu prüfen.

Im Protokoll sind Sektionen sichtbar, die für Einzelrequest an Server stehen und bei ausschließlicher Verwendung von Aktualisierungstemplates ohne Sammelabfragen = Anzahl der aktualisierten Papiere entsprechen. Die Sektionen bei verwendeten Sammelabfrage entstehen zum einen durch das Maximum für eine Sammelabfrage und zum anderen durch die Trennung von unterschiedlichen Variablen für Sammelabfragen.

Protokollrückgabe: