Austausch historische Kurse

Work in Progress

Die Implementierung von GT-Net ist noch nicht vollständig abgeschlossen. Diese Dokumentation beschreibt die geplante und teilweise bereits umgesetzte Funktionalität.

Der Austausch von historischen Kursdaten ermöglicht es, Schlusskurse der Vergangenheit mit anderen GT-Net-Instanzen zu teilen und zu empfangen. Im Gegensatz zum Intraday-Preisaustausch erfolgt dieser Austausch nicht automatisch über die Watchlist, sondern wird gezielt für bestimmte Instrumente und Zeiträume angefordert.

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:

InstrumenttypSpeicherort
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

AspektHistorische KurseIntraday-Preise
AuslöserGezielte AnfrageWatchlist-Aktualisierung
DatenumfangOHLCV für jeden TagAktueller Preis mit Zeitstempel
Speicherung (fremd)gt_net_historyquotegt_net_lastprice
EmpfangswunschJaNein
Rückwirkende DatenJaNein

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.