Finanzen: Aktienkurse per Go-Programm überwachen

Die Kursentwicklung wichtiger Aktien verfolge ich mit einer Anwendung, die aktuelle Kurse mittels API einholt und in einer Terminaloberfläche anzeigt.

Eine Anleitung von Michael Schilli veröffentlicht am
Wie sich aktuelle Kurse mit einem eigenen Go-Programm verfolgen lassen.
Wie sich aktuelle Kurse mit einem eigenen Go-Programm verfolgen lassen. (Bild: thapana onphalai / 123RF.com)

Laut US-Vizepräsidentin Kamala Harris ginge der Mehrheit der Amerikaner das Geld aus, wenn nur 400 US-Dollar unerwartete Kosten anfielen. Seit ich das weiß, ist es mir ein Anliegen, jeden Tag darüber Bescheid zu wissen, ob ich noch genügend Reserven auf der hohen Kante habe. Dazu gehört es, die aktuelle Kursentwicklung der Aktien bekannter Unternehmen zu verfolgen. Zwar gibt es zuhauf Apps mit Portfolio-Einstellungen, die eine Reihe ausgewählter Wertpapiere beobachten. Ich nutze aber lieber in Go geschriebene Kommandozeilenwerkzeuge, die im Terminal laufen.

Inhalt:
  1. Finanzen: Aktienkurse per Go-Programm überwachen
  2. Wühlen in JSON
  3. FANG und mehr
  4. Nächste Fahrt rückwärts!

Das Bild unten zeigt die Ausgabe des Go-Programms Pofo – das Kürzel steht für Portfolio. In sechs Kacheln veranschaulicht jeweils eine Balkengrafik den Kursverlauf der Aktien der Firmen Apple, Netflix, Meta, Amazon, Tesla und Google während der vorherigen sechs Wochen. Die aktuellen und historischen Kursdaten bezieht das Programm kurz nach dem Aufruf in einem Sekundenbruchteil vom Datendealer Twelvedata. Der bietet für Bastler einen kostenlosen Basic Plan an, der bis zu acht Requests pro Minute und bis zu 800 am Tag erlaubt, bevor das Rate Limiting greift.

  • Ein Screenshot mit der Ausgabe des Go-Programms Pofo (Screenshot: Michael Schilli)
  • Kursentwicklung der Netflix-Aktie aus JSON-Daten (Screenshot: Michael Schilli)
  • Die Aktien-App auf dem iPhone zeigt keine absoluten Werte an. (Screenshot: Michael Schilli)
  • Der kostenlose API-Key für Kursdaten auf Twelvedata.com (Screenshot: Michael Schilli)
  • Der JSON-Salat nach einer Kursabfrage an Twelvedata (Screenshot: Michael Schilli)
Ein Screenshot mit der Ausgabe des Go-Programms Pofo (Screenshot: Michael Schilli)

Das Programm holt die Schlusskurse in US-Dollar der sechs überwachten Aktien an der New Yorker Börse für die vergangenen 45 Werktage ein. Das erledigt es in einer einzigen Anfrage an den Server, in einem gewaltigen Rutsch. Für die hypernervöse Netflix-Aktie zeigt das Bild unten die Kurse in der Zeit zwischen dem 16. Juni und dem 31. Juli 2023. In dieser Periode schwankte der Wert dieser Aktie wild zwischen 413,17 und 477,59 US-Dollar. In einer Grafik der Absolutwerte könnte man trotzdem kaum Schwankungen erkennen, denn schließlich macht die Differenz nur rund 15 Prozent des Gesamtwerts aus.

  • Ein Screenshot mit der Ausgabe des Go-Programms Pofo (Screenshot: Michael Schilli)
  • Kursentwicklung der Netflix-Aktie aus JSON-Daten (Screenshot: Michael Schilli)
  • Die Aktien-App auf dem iPhone zeigt keine absoluten Werte an. (Screenshot: Michael Schilli)
  • Der kostenlose API-Key für Kursdaten auf Twelvedata.com (Screenshot: Michael Schilli)
  • Der JSON-Salat nach einer Kursabfrage an Twelvedata (Screenshot: Michael Schilli)
Kursentwicklung der Netflix-Aktie aus JSON-Daten (Screenshot: Michael Schilli)

Die wilden Kurssprünge, die typische Chart-Apps zeigen (siehe Bild unten), entsprechen daher nicht den Absolutwerten – sonst kämen sehr statische Blöcke heraus, die niemanden vom Hocker hauen würden. Daher transformieren typische Chartanwendungen die Schwankungen in relative Werte, so dass wenige US-Dollars gleich die gesamte Charthöhe ausmachen.

  • Ein Screenshot mit der Ausgabe des Go-Programms Pofo (Screenshot: Michael Schilli)
  • Kursentwicklung der Netflix-Aktie aus JSON-Daten (Screenshot: Michael Schilli)
  • Die Aktien-App auf dem iPhone zeigt keine absoluten Werte an. (Screenshot: Michael Schilli)
  • Der kostenlose API-Key für Kursdaten auf Twelvedata.com (Screenshot: Michael Schilli)
  • Der JSON-Salat nach einer Kursabfrage an Twelvedata (Screenshot: Michael Schilli)
Die Aktien-App auf dem iPhone zeigt keine absoluten Werte an. (Screenshot: Michael Schilli)

Deutsche Kursdaten sind teuer

Twelvedata gibt die aktuellen Kursdaten ausgewählter Aktien nur dann heraus, wenn man sich dort mittels E-Mail-Adresse registriert. Im Erfolgsfall erhält man einen API-Key (Abbildung 4), der jedem abgesetzten Request beiliegen muss.

Der kostenlose Test-Account deckt den US-Aktienmarkt ab, eine Kreditkarte ist nur für kostenpflichtige Endpunkte erforderlich.

  • Ein Screenshot mit der Ausgabe des Go-Programms Pofo (Screenshot: Michael Schilli)
  • Kursentwicklung der Netflix-Aktie aus JSON-Daten (Screenshot: Michael Schilli)
  • Die Aktien-App auf dem iPhone zeigt keine absoluten Werte an. (Screenshot: Michael Schilli)
  • Der kostenlose API-Key für Kursdaten auf Twelvedata.com (Screenshot: Michael Schilli)
  • Der JSON-Salat nach einer Kursabfrage an Twelvedata (Screenshot: Michael Schilli)
Der kostenlose API-Key für Kursdaten auf Twelvedata.com (Screenshot: Michael Schilli)

Möchte man Kurswerte des deutschen Aktienmarkts abfragen, etwa den Stand der Volkswagen-Aktie am Xetra-Markt (Symbol: VOW3:XETR), fällt eine nicht unerhebliche Gebühr an.

Seit Yahoo vor mehr als fünf Jahren seine Finanz-API eingestampft hat, steht es schlecht um kostenlose Zugriffe auf deutsche Kurswerte. Das betrifft nicht nur Twelvedata, sondern auch alle von mir untersuchten APIs anderer Anbieter.

Listing 1 (siehe unten) zeigt den Go-Code, der die historischen Kurse der in symbols hinterlegten, kommaseparierten Aktienkürzel vom Kurshändler Twelvedata abholt. Die Funktion fetchQ() ab Zeile 7 gibt im Erfolgsfall eine Hashmap zurück, die unter dem jeweiligen Tickersymbol (zum Beispiel aapl für Apple) einen Array-Slice von dateVal-Strukturen führt. Sie ordnen jeweils ein Datum (zum Beispiel 10-01-2023) einem Kurs zu (zum Beispiel 123.45678).

  1. Listing 1
  2.  
  3. quote.go
  4.  
  5. package main
  6. import (
  7. "io/ioutil"
  8. "net/http"
  9. "net/url"
  10. )
  11. func fetchQ(symbols string) (map[string][]dateVal, error) {
  12. u := url.URL{
  13. Scheme: "https",
  14. Host: "api.twelvedata.com",
  15. Path: "time_series",
  16. }
  17. q := u.Query()
  18. q.Set("symbol", symbols)
  19. q.Set("interval", "1day")
  20. q.Set("apikey", "a1723ab98fa90ac307a0c5bf332d451c")
  21. u.RawQuery = q.Encode()
  22. res := map[string][]dateVal{}
  23. resp, err := http.Get(u.String())
  24. if err != nil {
  25. return res, err
  26. }
  27. body, err := ioutil.ReadAll(resp.Body)
  28. if err != nil {
  29. return res, err
  30. }
  31. return parse(string(body)), nil
  32. }

Dazu baut der Code eine Anfrage an die Webseite von Twelvedata zusammen, der an die Basis-URL die Parameter symbol (die gewünschten Tickersymbole) und interval (Zeitabstände, im Beispiel ein Tag) sowie den vorher eingeholten API-Key anhängt.

  • Ein Screenshot mit der Ausgabe des Go-Programms Pofo (Screenshot: Michael Schilli)
  • Kursentwicklung der Netflix-Aktie aus JSON-Daten (Screenshot: Michael Schilli)
  • Die Aktien-App auf dem iPhone zeigt keine absoluten Werte an. (Screenshot: Michael Schilli)
  • Der kostenlose API-Key für Kursdaten auf Twelvedata.com (Screenshot: Michael Schilli)
  • Der JSON-Salat nach einer Kursabfrage an Twelvedata (Screenshot: Michael Schilli)
Der JSON-Salat nach einer Kursabfrage an Twelvedata (Screenshot: Michael Schilli)

Zeile 19 holt mit Get() die Antwort aus dem Netz. Die in Zeile 27 aufgerufene Funktion parse() schnappt sich den zurückkommenden JSON-Salat (siehe Bild oben) und verpackt das Ganze in die bereits zuvor erwähnte Go-Datenstruktur einer verschachtelten Hashmap.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed
Wühlen in JSON 
  1. 1
  2. 2
  3. 3
  4. 4
  5.  


Aktuell auf der Startseite von Golem.de
Libanon
Israelische Tarnfirma soll Pager produziert haben

Inzwischen gibt es mehr Details zur Manipulation der explodierten Pager. Der Hersteller der detonierten Walkie-Talkies zeigt sich jedoch ratlos.
Ein Bericht von Friedhelm Greis

Libanon: Israelische Tarnfirma soll Pager produziert haben
Artikel
  1. Elektromagnetische Leckstrahlung: Starlink-Satelliten der zweiten Generation stören noch mehr
    Elektromagnetische Leckstrahlung
    Starlink-Satelliten der zweiten Generation stören noch mehr

    Die neuen Starlink-Satelliten emittieren starke elektromagnetische Leckstrahlung. Astronomen fordern Gegenmaßnahmen.

  2. Arbeitsplatzabbau: Gerüchte über 30.000 Entlassungen bei VW
    Arbeitsplatzabbau
    Gerüchte über 30.000 Entlassungen bei VW

    Volkswagen will sich in Deutschland angeblich von einer großen Zahl von Mitarbeitern trennen und Investitionen sollen gekürzt werden.

  3. KI: Apple Intelligence kommt doch nach Deutschland
    KI
    Apple Intelligence kommt doch nach Deutschland

    Apple hat seine Pläne für die Einführung der KI-Funktionen geändert. Nun ist Deutschland doch auf der Liste.

Du willst dich mit Golem.de beruflich verändern oder weiterbilden?
Finde einen Job mit
Mach dich schlauer mit
  • Schnäppchen, Rabatte und Top-Angebote
    Die besten Deals des Tages
    Daily Deals • Palit RTX 4070 zum Tiefstpreis • EA FC 25 günstig wie nie • Vorbestellbar: iPhone 16, Apple Watch 10 & AirPods 4 • Samsung 990 PRO 2 TB 164€ [Werbung]
    •  /