Aktienkurse abfragen und per Anruf benachrichtigt werden

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
MuMPiTz
User
Beiträge: 27
Registriert: Freitag 27. Juli 2018, 15:07

Hallo! Ich bin leider noch ganz am Anfang was das programmieren betrifft. Ich hätte gerne ein Programm, dass mich anruft, wenn eine Aktien einen bestimmten Kurs erreicht. Jemand hat mir dieses Skript empfohlen:

https://www.twilio.com/docs/voice/make-calls

Ich müsste dann halt noch irgendwie die Kurse bekommen, am besten direkt von der Börse. Das läuft ja heute auch alles übers Netz. Könnt ihr mir in etwa sagen, wie ihr das anstellen würdet? Ich frage nicht, um es dann selbst zu versuchen, sondern um eine grobe Vorstellung zu bekommen was ich brauchen würde, da ein Verwandter von mir mal einen Arbeitskollegen fragen möchte, der Programmierer ist. Also geht es nur darum den ein bisschen aufzuklären, was benötigt wäre. Könnt ihr mir in etwa sagen, wie das funktionieren würde?
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wenn man das mal googelt, findet sich zB https://diyinvestor.de/daten-tools/

Was dein avisierter Programmierer dann daraus macht, kann hier natuerlich keiner wissen. Und ggf. musst du je nach Aktualitaet der Daten auch bezahlen, was dann wiederum bestimmt, wie man genau an die Daten kommt.
MuMPiTz
User
Beiträge: 27
Registriert: Freitag 27. Juli 2018, 15:07

Danke, ich schau es mir mal an. Ich dachte spontan, dass man ja auf viele Börsen mit soner API Schnittstelle zugreifen kann und darüber dann evtl die Kurse abfragen kann
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

und Nachdem du das gedacht hast, hast du mal auf die Seiten der Börse geschaut oder sie angeschrieben? Ob und was die anbieten erzählen die dir doch gerne. Du musst schließlich bezahlen, wenn du das benuzten willst. Wir hier können auch nur googeln.
Benutzeravatar
pixewakb
User
Beiträge: 1408
Registriert: Sonntag 24. April 2011, 19:43

Schau mal hier:

https://www.quandl.com

und speziell z. B. hier:

https://www.quandl.com/data/SSE-Boerse-Stuttgart

Früher hättest Du (bzw. der programmierende Arbeitskollege Deines Verwandten) mittels pandas_datareader auf Google Finance bzw. Yahoo! Finance zugreifen können. Wenn ich das richtig mitbekommen habe, dann sind diese Quellen aber versiegt oder zumindest sehr unzuverlässig/buggy geworden. Du müsstest mal schauen, was pandas_datareader noch anbietet:

https://pandas-datareader.readthedocs.io/en/latest/

Also für mich ließt sich dein erster Beitrag nicht sehr erfolgsversprechend. Falls Du Dich selbst mit Python befassen und es selbst programmieren möchtest, dann findest Du bei mir im Fußbereich das deutschsprachige Python Tutorial, das von Leuten hier aus dem Forum bereitgestellt wird. Mich würde es wundern, wenn Deine Benachrichtigung-bei-Preis-Lösung Dein Projekt abschließt.
MuMPiTz
User
Beiträge: 27
Registriert: Freitag 27. Juli 2018, 15:07

Hallo! Danke für euer Feedback!
@deets: Doch ich habe den Support bereits kontaktiert, das dauert bei denen nur leider immer ewig!
@pixewakb: danke, sehr interessant, werde ich mir näher anschauen. Ich habe wie gesagt (erstmal) nicht vor, es selbst zu probieren, das hätte wahrscheinlich wenig Erfolgschancen
MuMPiTz
User
Beiträge: 27
Registriert: Freitag 27. Juli 2018, 15:07

Hallo noch mal! Angenommen man wollte den BTC Preis von coinmarketcap (allgemeine Kurs-Seite für Kryptowährungen die kostenlos zugänglich ist):

https://api.coinmarketcap.com/v1/ticker/bitcoin/

Könnte man das einfach mit einer Python Funktion verbinden, die den aktuellen BTC Preis quasi in einer while Schleife printed und bei verschiedenen Bedingungen ein Alarm auslöst?
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ja. Es gibt ja eine Menge Trade Bots in Python.
Benutzeravatar
snafu
User
Beiträge: 6731
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Einfach mal nach python bitcoin bot suchen... ;)
MuMPiTz
User
Beiträge: 27
Registriert: Freitag 27. Juli 2018, 15:07

Ja, ich wär schon glücklich, wenn ich eine Python Funktion erstellen könnte, die mir den aktuellen BTC Kurs aus einer Seite ausliest. Ich habe dazu auch ein älteres Skript gefunden:
import requests
url = 'http://data.mtgox.com/api/2/BTCUSD/money/ticker'
r = requests.get(url, headers={'Accept': 'application/json'})
print r.json()['data']['avg']['display_short']
Allerdings gibt es die website nicht mehr. Angenommen man würde die hier als Quelle nehmen:

https://markets.businessinsider.com/currencies/btc-usd

Dort wird der Kurs sekündlich geupdatet. Wie würde man denn nun das Skript anpassen oder geht das überhaupt? Ich hab leider immer noch sehr wenig Ahnung von Programmieren, bin noch am Anfang des Python Tutorials. Kann mir jemand erklären, wie man diesen Ticker anzapft? Schaut man in Chrome im Quellcode der Seite und bezieht daraus die entsprechende Adresse?
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du hast doch erklaert, du willst einen Programmierer beauftragen? Willst du das jetzt doch selbst machen?

Wie dem auch sei: warum benutzt du denn jetzt schon wieder eine neue Webseite? mtgox ist doch schon lange tot, oder nicht? Du hast doch oben schon eine Seite angegeben, die eine JSON-Ausgabe eines BTC Kurses ausliefert. Warum benutzt du die nicht? Und fuer Python web-scraping bzw. REST-API Abfrage finden sich millionen Quellen. Auch hier wird das regelmaessig diskutiert, das ist ja bei trading nicht anders als anderswo.
MuMPiTz
User
Beiträge: 27
Registriert: Freitag 27. Juli 2018, 15:07

Mein Verwandter wollte mal seinen Kollegen fragen, das ist alles sehr unverbindlich und ich will da auch nichts in Auftrag geben. Selber machen würde ich es gerne, traue es mir aber schlicht nicht zu, da ich mit meinen Programmier Kenntnissen noch ganz am Anfang stehe.

Es interessiert mich aber trotzdem, wie in etwa es geht und es scheint wohl keine große Sache zu sein, den Ticker von soner Seite auszulesen, daher würde es mich interessieren, wie man das macht. Ja MTGOX ist tot, deshalb funtkioniert das Skript nicht mehr. Ist es kompliziert den Ticker von:

https://markets.businessinsider.com/currencies/btc-usd

anzuzapfen und auslesen zu lassen? Wie würde man denn da vorgehen?
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@MuMPiTz: Man würde schauen ob die Daten direkt in der Seite mitgeliefert werden. Falls ja kann man die Seite herunterladen und die Daten da rauskratzen, falls nein, müsste man schauen wie die Daten dann auf die angezeigte Seite kommen. Zum Herunterladen bietet sich `requests` an, zum verarbeiten des HTML zum Beispiel BeautifulSoup. Dazu muss man sich mit HTML und CSS beschäftigen.

Ich würde aber die Frage von __deets__ gerne noch mal wiederholen: Warum aus einer Webseite kratzen wenn Du schon eine API hast die das als JSON liefert?
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Benutzeravatar
pixewakb
User
Beiträge: 1408
Registriert: Sonntag 24. April 2011, 19:43

Das ist eine Lösung zu:
Falls ja kann man die Seite herunterladen und die Daten da rauskratzen
Wenn Du mal diesen Quellcode versuchst, stellst Du fest, dass Du die Aktualisierung so nicht bekommen kannst:

Code: Alles auswählen

import requests
from bs4 import BeautifulSoup

web = requests.get("https://markets.businessinsider.com/currencies/btc-usd").content
soup = BeautifulSoup(web, "html5lib")


# Abruf der Daten
web = requests.get("https://markets.businessinsider.com/currencies/btc-usd").content
soup = BeautifulSoup(web, "html5lib")


# Ausgabe der Daten
print(soup.find_all("span", attrs={"class": "push-data"})[-1].text)
print(soup.find("span", attrs={"class": "push-data"}).text)
Du müsstest Dich m. E. mit selenium befassen und es damit probieren, wenn Du tatsächlich aktuelle Daten brauchst. Ohne das Durcharbeiten eines Tutorials wird es nicht gehen; vielleicht findest Du eine andere Quelle, wo Du Deine Daten ohne viel JavaScript ziehen kannst. Es würde mich wundern, wenn es dazu noch keine fertigen und erprobten Python-Lösungen gäbe.

Orientiere Dich an dem Hinweis von __blackjack__ , das ist weiterführend.
Zuletzt geändert von pixewakb am Donnerstag 16. August 2018, 14:46, insgesamt 1-mal geändert.
Benutzeravatar
pixewakb
User
Beiträge: 1408
Registriert: Sonntag 24. April 2011, 19:43

@__blackjack__ : Falls Du mal anhand der Seite zeigen könntest, wie Du die Datenquelle im JS-Wust findest und ggf. direkt anfragen würdest, würde mich das interessieren. Am Thema hier bin ich selbst nicht interessiert. Eine Lösung zu einer vergleichbaren Problemstellung wäre auch interessant. (Momentan ist das bei mir nicht aktuell, eher ein grundsätzliches Interesse, weil ich mit vergleichbaren Problemen auch immer mal wieder zu tun habe...)

Im Prinzip weiß ich, dass aller JS-Code auf der Seite stehen muss, allerdings ist es mir noch nie wirklich gelungen, eine spezifische Funktion aufzufinden...
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Ich habe mir da mal den Netzwerk-Reiter im Browser angeschaut und es wird ein Websocket zu https://mdsngpush.finanzen.net/socket.i ... 338bec9ec4 aufgemacht. Ich vermute darüber kommen die Daten rein und werden dann per JavaScript verarbeitet/aktualisiert.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
MuMPiTz
User
Beiträge: 27
Registriert: Freitag 27. Juli 2018, 15:07

Danke allerseits! Tut mir leid, dass vieles von dem was ich sage, nicht besonders sinnvoll ist, ich wollte eigentlich erst das Tutorial durcharbeiten, war aber zeitlich nun gezwungen, mich selbst mit der Sache ein wenig zu beschäftigen, einfach damit der Kollege meines Onkels weiß, worum es geht. Naja, wie dem auch sei...
Ich würde aber die Frage von __deets__ gerne noch mal wiederholen: Warum aus einer Webseite kratzen wenn Du schon eine API hast die das als JSON liefert?
Ich hab nur einfach null Ahnung von der Materie, das ist alles. Offenbar ist es mit JSON (ich weiß nicht mal was das ist :D) sehr viel leichter!
import requests
url = 'https://api.coindesk.com/v1/bpi/currentprice.json'
r = requests.get(url, headers={'Accept': 'application/json'})
print(r.json()['bpi']['USD']['rate'])
Der code funktioniert immerhin schon mal, allerdings updated das nur 1x pro Minute, da brauch ich wohl etwas anderes, aber immerhin schon mal ein Anfang :)

@pixewakb:

Danke auch dir, ich schätze da bin ich noch weit von entfernt, also wenn du es nicht hin bekommst, brauch ich es gar nicht erst versuchen, aber vielleicht werde ich mich zu gegebener Zeit damit beschäftigen
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wenn du Kurse schneller als einmal pro Minute benötigst, bist du im Lande der kommerziellen Möglichkeiten. Da wirst du Geld für in die Hand nehmen müssen. Zumindest für normale Kurse. Bei Crypto funktioniert ja sogar noch arbitrage zwischen verschiedenen Börsen, da spielt Zeit doch keine Rolle.
MuMPiTz
User
Beiträge: 27
Registriert: Freitag 27. Juli 2018, 15:07

__deets__ hat geschrieben: Donnerstag 16. August 2018, 21:30 Wenn du Kurse schneller als einmal pro Minute benötigst, bist du im Lande der kommerziellen Möglichkeiten. Da wirst du Geld für in die Hand nehmen müssen. Zumindest für normale Kurse. Bei Crypto funktioniert ja sogar noch arbitrage zwischen verschiedenen Börsen, da spielt Zeit doch keine Rolle.
ich hab noch ne API gefunden die den Kurs als JSON liefert und alle 5 Sekunden updated, also kostenlos. Ich suche gerade nach Möglichkeiten, per SMS oder Anruf kontaktiert zu werden, wobei SMS wohl billiger ist und das würde es auch tun. Twilio wird oft genannt, müsste da aber erst meine Identität verifizieren lassen und so Zeug. Kennt jemand ne gute Alternative? :)
Benutzeravatar
pixewakb
User
Beiträge: 1408
Registriert: Sonntag 24. April 2011, 19:43

E-Mail? Mit der entsprechenden Bibliothek kannst du das kostenlos realisieren und mit einer entsprechenden App auf dem Handy siehst du die Nachricht auch auf dem Handy? Eine Benachrichtigung per SMS oder Anruf erscheint mir da um einiges komplizierter. Für die E-Mail-Lösung findest du zu hauf online Anleitungen...

BTW: @BlackJack: Ich konnte es noch nicht nachvollziehen, aber für meine Seiten werde ich das mit der Entwickler-Konsole mal testen. Ich habe einmal durch Zufall bei einer Seite bei deaktiviertem JS die Quellseite gefunden, die Daten liefert. In den meisten anderen Fällen scrape ich einfache HTML-Tabellen, die Rohdaten bereitstellen. Mit Deinem Beitrag weiß ich nun, wo ich da mal gucken kann.
Antworten