Austausch historische Kurse
Die Implementierung von GT-Net ist noch nicht vollständig abgeschlossen. Diese Dokumentation beschreibt die geplante und teilweise bereits umgesetzte Funktionalität.
Work in Progress
Anfrage-Struktur
Bei der Anfrage von historischen Kursen werden folgende Informationen übermittelt:
- Instrumentidentifikation: ISIN + Währung (Wertpapiere) oder Währungspaar
- Datumsbereich: Von-Datum (üblicherweise der letzte lokal vorhandene Kurs + 1 Tag) bis Bis-Datum
Ablauf des Datenaustauschs
Der Austausch historischer Kurse folgt einem mehrstufigen Prozess mit einer besonderen Funktion: dem «Empfangswunsch»-Mechanismus.
flowchart TD
A[Anfrage für historische Kurse] --> B{GT-Net aktiviert?}
B -->|Nein| C[Keine Aktion]
B -->|Ja| D[Push-Offen-Server abfragen]
D --> E[Offen-Server abfragen]
E --> F[Empfangene Daten speichern]
F --> G{Empfangswunsch-Antworten?}
G -->|Ja| H[Historische Daten zurücksenden]
G -->|Nein| I[Fertig]
H --> I
Detaillierter Ablauf
Schritt 1: Push-Offen-Server abfragen
Zuerst werden alle konfigurierten Push-Offen-Server nach Priorität abgefragt:
- Die Anfrage enthält die Instrumentliste mit gewünschtem Datumsbereich.
- Die Antwort enthält OHLCV-Daten (Eröffnung, Hoch, Tief, Schluss, Volumen) für jeden verfügbaren Tag.
Schritt 2: Offen-Server abfragen
Für noch nicht gefüllte Instrumente werden die Offen-Server abgefragt. Diese können zusätzlich «Empfangswunsch»-Markierungen zurückgeben.
Schritt 3: Empfangene Daten speichern
Die Speicherung der empfangenen historischen Kurse hängt davon ab, ob das Instrument lokal existiert:
| Instrumenttyp | Speicherort |
|---|---|
| Lokales Instrument (existiert in der eigenen Datenbank) | Tabelle historyquote |
| Fremdes Instrument (nur im GT-Net-Pool) | Tabelle gt_net_historyquote |
flowchart LR
A[Empfangene Kurse] --> B{Instrument lokal?}
B -->|Ja| C[historyquote-Tabelle]
B -->|Nein| D[gt_net_historyquote-Tabelle]
Der «Empfangswunsch»-Mechanismus
Ein besonderes Merkmal des historischen Kursdatenaustauschs ist der bidirektionale Datenaustausch über den «Empfangswunsch»-Mechanismus.
Funktionsweise
Wenn ein Offen-Server keine Daten für ein angefragtes Instrument bereitstellen kann, aber selbst Daten für dieses Instrument empfangen möchte, sendet er eine «Empfangswunsch»-Markierung zurück:
- Die Markierung enthält das Datum, ab dem Daten gewünscht werden.
- Der anfragende Server prüft, ob er lokale Daten für dieses Instrument hat.
- Falls ja, sendet er diese Daten proaktiv an den interessierten Server.
sequenceDiagram
autonumber
participant A as Anfragender Server
participant B as Offen-Server
A->>B: Anfrage: Historische Kurse für Instrument X
Note over B: Hat keine Daten,<br/>möchte aber empfangen
B-->>A: Antwort: Empfangswunsch ab Datum Y
Note over A: Prüft lokale Daten
A->>B: Push: Historische Kurse ab Datum Y
Note over B: Speichert empfangene Daten
Vorteile des Mechanismus
- Bidirektionaler Austausch: Beide Server profitieren vom Datenaustausch.
- Automatische Ergänzung: Server können automatisch Datenlücken schliessen.
- Effizienz: Der Datenaustausch erfolgt gezielt für benötigte Zeiträume.
Unterschiede zum Intraday-Austausch
| Aspekt | Historische Kurse | Intraday-Preise |
|---|---|---|
| Auslöser | Gezielte Anfrage | Watchlist-Aktualisierung |
| Datenumfang | OHLCV für jeden Tag | Aktueller Preis mit Zeitstempel |
| Speicherung (fremd) | gt_net_historyquote | gt_net_lastprice |
| Empfangswunsch | Ja | Nein |
| Rückwirkende Daten | Ja | Nein |
Datenqualität
Beim Speichern empfangener Daten werden Duplikate vermieden:
- Vor dem Speichern wird geprüft, ob für das Datum bereits ein Eintrag existiert.
- Nur neue Datensätze werden gespeichert.
- Bereits vorhandene Daten werden nicht überschrieben.
Anmerkung
Der historische Kursdatenaustausch ergänzt den Intraday-Austausch. Während der Intraday-Austausch für aktuelle Preise optimiert ist, ermöglicht der historische Austausch das Auffüllen von Datenlücken in der Vergangenheit.