Nachrichten
Nachrichten löschen

Aktienkurse per API abfragen  

  RSS
stef
 stef
(@stef)
Aktiver Freiheitskämpfer

Hallo zusammen,

früher war alles einfacher: Wenn man Aktienkurse von einer API bekommen wollte, hat man einfach die Yahoo API benutzt.

Dann hat Yahoo die API geschlossen. Als Lösung habe ich mir einen Crawler für die finance.yahoo.com Seite gebastelt. Yahoo mag das aber nicht: Die Seite wird regelmäßig verändert und die Maßnahmen gegen Crawler sind recht gut gemacht.

Also habe ich mich auf die Suche nach einer kostenlosen, zuverlässigen API gemacht.

Gelandet bin ich bei alphavantage.co.

Die API funktioniert seit fast einem Jahr bei mir gut, ist sauber dokumentiert und bietet sogar exotische Dinge wie Cryptocurrencies.

Man kann sich auf der Website registrieren und erhält einen kostenlosen API Key.

Wer seine Mail-Adresse nicht hinterlassen möchte, kann alternativ einen Random Key generieren (16 Zeichen, nur uppercase ASCII und Zahlen). Das ist natürlich nicht dokumentiert, funktioniert aber prima.

Die Restriktionen für die kostenlose API sind: Maximal 5 Requests pro Minute, 500 Requests pro Tag.

Wer möchte, kann hier gerne Python Code dazu von mir bekommen.

Siehe Anhang.

Viele Grüße,

Stef.

 

Zitat
Veröffentlicht : 19. Mai 2020 09:44
Canonius und Maschinist mögen das
Maschinist
(@maschinist)
Maschinist Admin

Ganz vielen Dank für Deine Mühe und das Python File für die API stef.

 

AntwortZitat
Veröffentlicht : 20. Mai 2020 23:58
stef mag das
stef
 stef
(@stef)
Aktiver Freiheitskämpfer

Vielen Dank @Maschinist für die Unterstützung!

AntwortZitat
Veröffentlicht : 21. Mai 2020 09:16
stef
 stef
(@stef)
Aktiver Freiheitskämpfer

Hallo Forum,

den versierten Nerds unter euch ist natürlich klar, was man mit so einer API alles anstellen kann.

Für den Rest der Welt mal ein Use-Case:

Max Mustermann zählt mittlerweile 4 Aktiendepots im Haushalt. Das ging ganz schnell: Eine Altlast bei der Hausbank, ein Discount-Broker für den ETF Sparplan, das Depot der besseren Hälfte, das Depot für den Nachwuchs, …

Immer mal wieder fragt er sich, wie hoch das Familienvermögen eigentlich ist. Manchmal fragt auch die bessere Hälfte nach. Dann setzt er sich hinter den Rechner, loggt sich bei den 4 Websites nacheinander ein, notiert brav die Summen auf einen Zettel und summiert sie.

Eine erfreuliche Tätigkeit, aber das muss doch auch einfacher gehen?

Er hat kurz mit dem Gedanken gespielt, eine Tabelle in Google Sheets anzulegen und dort automatisch die Kurse abzufragen, aber eigentlich möchte die Details zum Familienvermögen nicht mit Google teilen.

Max hat das kleine Script im ersten Posting gefunden. Darin gibt es zwei für ihn brauchbare Funktionen:

get_av_quote(symbol): Hier bekommt er den aktuellen Kurs zum Code der Aktie zurück. Die Währung richtet sich nach der Börse. get_av_quote(’APC.F’) ergibt den Kurs von Apple an der Frankfurter Börse, natürlich in EUR. get_av_quote(’ROG.SW’) dagegen den Kurs von Roche an der Schweizer Börse in CHF.

get_av_fx(from_currency, to_currency='EUR'): Das kann Max benutzen, um z.B. von CHF in EUR umzurechnen, mit get_av_fx(’CHF’).

AntwortZitat
Veröffentlicht : 21. Mai 2020 12:46
Maschinist mag das
stef
 stef
(@stef)
Aktiver Freiheitskämpfer

Max pflegt eh seit Jahren eine kleine Excel-Tabelle mit folgenden Spalten:

Company (z.B. Apple), Code (finance.yahoo.com Code, z.B. APC.DE), Amount (Anzahl der Aktien), Depot (bei den Mustermanns gibt es die Depots „O“, „S“ und „U“), Currency (meistens „EUR“, aber bei Roche z.B. „CHF“).

depot tabelle

Er benötigt keine Details zu all den Positionen. Das kann er bei Bedarf schnell nachschauen. Er möchte einfach die Summe des Mustermann-Geldspeichers in €.

Max speichert seine Tabelle als CSV Datei „depot.csv“. Das kann jede Tabellenkalkulation.

Das Ergebnis schaut so aus:

depotcsv
AntwortZitat
Veröffentlicht : 21. Mai 2020 12:51
Maschinist mag das
stef
 stef
(@stef)
Aktiver Freiheitskämpfer

Cool, denkt Max. Jetzt brauche ich nur noch eine Funktion, die durch ein Depot rödelt und mir die Summe zurückgibt. Die Funktion könnte durch die gesamte Datei kämmen und fertig, aber Max möchte flexibel bleiben. Er hat ja schließlich in seiner Tabelle mit einem Buchstaben-Kürzel vermerkt, in welchem Depot die jeweilige Aktie liegt. Also lieber eine Summe pro Depot, und dann die Depots zur gewünschten Gesamtsumme addieren.

Max schreib also die Funktion get_share_data(depot): Will er sein Discount-Broker Depot summiert haben, wäre der Aufruf get_share_data(’O’).

get share data
AntwortZitat
Veröffentlicht : 21. Mai 2020 12:55
Maschinist mag das
stef
 stef
(@stef)
Aktiver Freiheitskämpfer

Jetzt schreibt Max noch schnell ein main(): Ein Hauptprogramm, welches die einzelnen Depots abklappert, die Summe bildet und auf dem Bildschirm ausgibt. Dieses platziert er am Ende des Scripts.

main

Am Anfang des Scripts schreibt Max noch zwei kleine Hilfsfunktionen. Eine formatiert Fehlermeldungen, wenn die API mal nicht funktionieren sollte oder es ein Aktienkürzel nicht gibt. Die andere Funktion rundet seine Gesamtsumme auf eine ganze Zahl und setzt einen Punkt zwischen den Tausendern.

Hilfsfunktionen

Max kann das Script jetzt einfach laufen lassen, wann er möchte.

…oder er lässt es mit einem Cron-Job regelmäßig laufen und schiebt das Ergebnis auf einen Webserver seines Vertrauens, natürlich mit Credentials. Vielleicht mit einer interaktiven Grafik zur Wertentwicklung?

…oder er er bastelt sich eine neue verborgene Taste an seine schicke Vintage-Uhr, die von einem Raspberry PI gesteuert wird, und lässt sich den Geldspeicher auf Tastendruck auf der roten Retro-LED-Anzeige anzeigen, auf ganze Tausender gerundet.

…oder…

AntwortZitat
Veröffentlicht : 21. Mai 2020 13:05
Natman und Maschinist mögen das
(@bananenrapper)
Aktiver Freiheitskämpfer
Veröffentlicht von: @stef

…oder er er bastelt sich eine neue verborgene Taste an seine schicke Vintage-Uhr, die von einem Raspberry PI gesteuert wird, und lässt sich den Geldspeicher auf Tastendruck auf der roten Retro-LED-Anzeige anzeigen, auf ganze Tausender gerundet...

hehe, sehr coole Idee, quasi die Schuldenuhr des Bund der Steuerzahler, nur andersrum.

Da ich etwas die Frickelei scheue, nutze in MoneyMoney auf dem Mac. Aber Respekt an dich und danke fürs Teilen!

 
AntwortZitat
Veröffentlicht : 22. Mai 2020 09:12
stef
 stef
(@stef)
Aktiver Freiheitskämpfer

Danke dir @bananenrapper

Wenn du doch mal 'frickeln' möchtest und irgendwo stecken bleibst, melde dich einfach 😉

Da du mit einem Mac arbeitest, brauchst du übrigens nicht mal Python zu installieren - ist schon drauf. So kann man Scripts auch ohne Raspberry PI oder sowas ausprobieren.

Leider installiert Apple noch Python 2, nicht Python 3. Es müssten daher 2 Zeilen verändert werden. Einfach die "3" am Ende der ersten Zeile löschen:

#!/usr/bin/env python

Und das Encoding beim Öffnen der CSV Datei weglassen:

with open('depot.csv', mode='r') as csv_file:

Bei ner Win-Dose muss man Python installieren (dann aber bitte gleich Python 3). Ist aber auch kein Akt:

www.python.org

Anbei das komplette Script von Max Mustermann (für Python 2 oder 3, egal) und die Beispiel-CSV-Datei.

 

AntwortZitat
Veröffentlicht : 22. Mai 2020 10:35