Zum Inhalt springen
mc-fly

Aktienkurse im Excel automatisch aktualisieren

Empfohlene Beiträge

Oli Garch
vor 6 Stunden von CK-ONE:

Aus irgendeinem Grund bekomme ich aber mit der WEBDIENST-Funktion in Excel immer nur #WERT! heraus.

@CK-ONE

die CNN-api scheint diese Art der automatisierten Datenabfrage nicht zu mögen. Auch ein Versuch in einem Google-Sheet mit der Funktion importdata funktioniert nicht.

Ein minimalistisches VBA-Makro, das die Funktion Webdienst nachbildet, hat immerhin zu einer Datenausgabe geführt. Diese lautete: " I'm a teapot. You're a bot. " :'(

Wenn man an der richtigen Schraube dreht, bekommt man jedoch mit einem recht kurzen VBA-Makro die Daten geladen und der entsprechende Wert lässt sich herausfiletieren. Du müsstest allerdings dafür in Excel den Zugriff auf Makros aktivieren. Wenn du das willst, melde dich noch einmal.

Diesen Beitrag teilen


Link zum Beitrag
CK-ONE

Danke Dir. Das hatte ich befürchtet, dass es an so etwas liegen könnte.

Ich könnte mir vorstellen, dass es bei https://feargreedmeter.com/ weniger restriktiv zugeht.

Oder auch in der schmaleren Variante hier: https://feargreedmeter.com/fear-and-greed-index

Und hier: https://en.macromicro.me/charts/50108/cnn-fear-and-greed

 

Dort ist allerdings überall die ausgegeben Zeichenkette zu lang für Excel, wie es scheint. :/

Diesen Beitrag teilen


Link zum Beitrag
Oli Garch
vor 16 Stunden von CK-ONE:

Dort ist allerdings überall die ausgegeben Zeichenkette zu lang für Excel, wie es scheint.

So ist es. Da funktioniert es auch nur mit VBA-Makro oder mit dem oben erwähnten Python, von dem ich allerdings auch nichts verstehe.

Eine Möglichkeit, die Beschränkungen von Excel zu umgehen sehe ich vielleicht noch in einem Umweg über Googlesheets. Der geht so:

In google-drive eine neue Tabelle erstellen.

In Zelle A1 die Formel für den Index: =importxml("https://feargreedmeter.com/";"//*[@class='text-center text-4xl font-semibold mb-1 text-white']") eingeben.

Die Google-Tabelle freigeben (für jeden, der über den Link verfügt).

Lässt sich natürlich auch noch formatieren wie hier:

image.png.51f5d6793f19998328ac8732bcbe04f4.pngimage.png.6905e6a466caf4f4e8ae6e5daac6969f.png

Für die Übernahme in Excel ist das aber uninteressant.

Jetzt der Excel-Import:

Adresse der Google-Tabelle kopieren

Am Ende des kopierten Links eventuell vorhandenes Anhängsel „/edit?gid=0#gid=0“ entfernen.

Dafür „/export?format=tsv“ anhängen.

Das Ganze in die Webdienst-Funktion einfügen etwa so:

=WERT(WEBDIENST("https://docs.google.com/spreadsheets/d/1FQajOnI7l_..../export?format=tsv"))

Möchte man das Ganze in der Google-Tabelle nicht in Zelle A1 positionieren, müssen einige vorangestellte Zeichen abgetrennt werden:

=WERT(RECHTS(WEBDIENST("https://docs.google.com/spreadshee_..../export?format=tsv"));2)

Sollte es noch nicht funktionieren, dann noch einmal die Freigabe in Google-Drive überprüfen.

Diesen Beitrag teilen


Link zum Beitrag
CK-ONE

Oli Garch, das ist der Hammer - 1000. Dank!

Ich finde, das ist eine sehr elegante Lösung, die wirklich fantastisch funktioniert.

 

Ich denke, ich werde sie an der einen oder anderen Stelle wieder und wieder einsetzen. :))))

Diesen Beitrag teilen


Link zum Beitrag
StefanS

Moin!

Ich würde auch gerne alle Kurse ins Excel lesen. Bei den Aktien funktioniert das auch wunderbar mit dem Datentyp "Aktien".

Aber wie kann ich das bei den Derivaten machen? Ich hatte gerade dieses Thema nach "Optionsscheinen" durchsucht und leider keinen Treffer gefunden. Gibt es dazu denn auch eine Möglichkeit?

Angeblich soll z.B. bei den Optionsscheinen von HSBC die WKN identisch sein mit dem Ticker-Symbol, aber damit komme ich dann dennoch nicht weiter.

Ich möchte auch nicht unbedingt ein weiteres Sheet oder noch eine Tabelle haben, sondern einfach nur den Geld-Kurs (oder auch mal den Brief-Kurs) ohne weitere Informationen anzeigen lassen.

Geht denn sowas?

Gruß

Stefan

Diesen Beitrag teilen


Link zum Beitrag
Oli Garch

Poste mal eins, zwei WKN oder ISIN als Beispiel, dann schauen wir mal.

Diesen Beitrag teilen


Link zum Beitrag
StefanS

HS2SNW und SU0XKZ zum Beispiel

Diesen Beitrag teilen


Link zum Beitrag
Oli Garch

Die Wertpapier-api der ING würde sich wohl eignen, wenn es nicht zu viele Abrufe sind.
Funktioniert nur mit ISIN!

Formel für "bid":
=WECHSELN(TEIL(WEBDIENST("https://component-api.wertpapiere.ing.de/api/v1/components/instrumentheader/"&A1);FINDEN("bid";WEBDIENST("https://component-api.wertpapiere.ing.de/api/v1/components/instrumentheader/"&A1))+5;FINDEN(",";TEIL(WEBDIENST("https://component-api.wertpapiere.ing.de/api/v1/components/instrumentheader/"&A1);FINDEN("bid";WEBDIENST("https://component-api.wertpapiere.ing.de/api/v1/components/instrumentheader/"&A1))+5;20))-1);".";",")/1

Formel für "ask":
=WECHSELN(TEIL(WEBDIENST("https://component-api.wertpapiere.ing.de/api/v1/components/instrumentheader/"&A1);FINDEN("ask";WEBDIENST("https://component-api.wertpapiere.ing.de/api/v1/components/instrumentheader/"&A1))+5;FINDEN(",";TEIL(WEBDIENST("https://component-api.wertpapiere.ing.de/api/v1/components/instrumentheader/"&A1);FINDEN("ask";WEBDIENST("https://component-api.wertpapiere.ing.de/api/v1/components/instrumentheader/"&A1))+5;20))-1);".";",")/1

Hier steht die ISIN in Zelle A1 und muss für die eigene Tabelle angepasst werden. Eventuell Ersetzen-Funktion verwenden, da in jeder Formel 4 mal vorhanden. Oder gleich die ISIN einbauen. Also statt /"&A1 dann /DE000SU0XKZ1".

Diesen Beitrag teilen


Link zum Beitrag
StefanS

Genial! Das sieht gut aus!

Sind so 20 Abrufe. Geht das noch?

Und wie oft werden die Kurse aktualisiert, bzw. wie?

Vielen Dank!!

Diesen Beitrag teilen


Link zum Beitrag
Oli Garch

Das wurde hier im Thread schon thematisiert. Der Datenanbieter ist sicherlich nicht sehr erfreut, wenn die api allzu sehr belastet wird. Die hier vorgestellte Formel ruft für jeden Kurs 4 mal die Daten ab. Das lässt sich natürlich durch Auslagerung der Funktion Webdienst auf nur noch einmal reduzieren.
Beispiel für bid:
Wir verschieben den Webienst-Abruf in die Zelle Z1 oder dahin wo er nicht stört und tragen dort die Funktion ein:
=WEBDIENST("https://component-api.wertpapiere.ing.de/api/v1/components/instrumentheader/"&A1)   ' in A1 steht die ISIN
Da, wo der bid-Kurs stehen soll, kommt diese Formel:
=WECHSELN(TEIL(Z1;FINDEN("bid";Z1)+5;FINDEN(",";TEIL(Z1;FINDEN("bid";Z1)+5;20))-1);".";",")/1
Für ask gilt dann:
=WECHSELN(TEIL(Z1;FINDEN("ask";Z1)+5;FINDEN(",";TEIL(Z1;FINDEN("ask";Z1)+5;20))-1);".";",")/1
Also brauchen wir statt 2x4 Abrufe nur noch einen.
Der Vorteil ist ja auch, das sich die Tabelle viel schneller aktualisiert.

Ach ja, Aktualisierung mit: Strg - Alt - F9

Das Ganze lässt sich auch noch als VBA-Makro realisieren, das wollen aber viele nicht.

Diesen Beitrag teilen


Link zum Beitrag
StefanS

Vielen Dank! Das funktioniert hervorragend!!

Diesen Beitrag teilen


Link zum Beitrag
CK-ONE
· bearbeitet von CK-ONE
Am 26.9.2024 um 23:24 von Oli Garch:

@CK-ONE

die CNN-api scheint diese Art der automatisierten Datenabfrage nicht zu mögen. Auch ein Versuch in einem Google-Sheet mit der Funktion importdata funktioniert nicht.

Ein minimalistisches VBA-Makro, das die Funktion Webdienst nachbildet, hat immerhin zu einer Datenausgabe geführt. Diese lautete: " I'm a teapot. You're a bot. " :'(

Wenn man an der richtigen Schraube dreht, bekommt man jedoch mit einem recht kurzen VBA-Makro die Daten geladen und der entsprechende Wert lässt sich herausfiletieren. Du müsstest allerdings dafür in Excel den Zugriff auf Makros aktivieren. Wenn du das willst, melde dich noch einmal.

Habe es jetzt tatsächlich doch per VBA-Makro gelöst.

Wer den Gold Fear & Greed-Index implementieren möchte, mit diesem VBA-Code geht es:

 

Option Explicit

Function GetFearGreedIndex() As String
    Dim xmlHttp As Object
    Dim html As Object
    Dim fearGreedValue As String
    
    ' XMLHTTP-Objekt erstellen
    Set xmlHttp = CreateObject("MSXML2.XMLHTTP")
    
    ' Anfrage an die Webseite senden
    xmlHttp.Open "GET", "https://www.jmbullion.com/fear-greed-index/", False
    xmlHttp.send
    
    ' HTML-Dokument-Objekt erstellen
    Set html = CreateObject("htmlfile")
    html.body.innerHTML = xmlHttp.responseText
    
    ' nach dem Fear & Greed-Wert im HTML suchen
    Dim regex As Object
    Set regex = CreateObject("VBScript.RegExp")
    regex.Pattern = "chart-fear-greed-(\d+)\.png"
    regex.Global = False
    
    Dim matches As Object
    Set matches = regex.Execute(html.body.innerHTML)
    
    If matches.Count > 0 Then
        fearGreedValue = matches(0).SubMatches(0)
    Else
        fearGreedValue = "Nicht gefunden"
    End If
    
    ' Wert zurückgeben
    GetFearGreedIndex = fearGreedValue
End Function

In eine Excel-Zelle wird der Wert dann so gezogen: =WERT(GetFearGreedIndex())

Diesen Beitrag teilen


Link zum Beitrag
Oli Garch

Sehr interessant, besonders die Verwendung von RegExp. Das habe ich so noch nicht gekannt.

Doch der Wert von dieser Webseite bezieht sich wohl auf Gold?

Diesen Beitrag teilen


Link zum Beitrag
etf-friese
vor 1 Stunde von CK-ONE:

Wer den Gold Fear & Greed-Index implementieren möchte, mit diesem VBA-Code geht es:

Warum nicht einfach https://cdn.jmbullion.com/fearandgreed/fearandgreed.json nutzen?

Diesen Beitrag teilen


Link zum Beitrag
CK-ONE
Am 15.10.2024 um 19:51 von etf-friese:

Top! Das "Define the URL of the JSON resource" im Quelltext war mir glatt entgangen.

Diesen Beitrag teilen


Link zum Beitrag
CK-ONE
· bearbeitet von CK-ONE

Hallo zusammen!

 

Momentan suche ich eine Möglichkeit, irgendwo Bid- und Ask-Kurse von Bankhaus Scheich auszulesen.

Konkret geht es mir um eine Bitcoin-Referenz für den Handel via Trade Republic.

 

Leider finde ich da keine Quelle zum Auslesen.

In einer Scheich-News aus 2020 sehe ich, dass sie mit der Börse Stuttgart kooperieren.

Tatsächlich ist der Kurs ihres Krypto-Handelsplatzes BSDEX (verfügbar über deren BISON App [Link]) nah dran, aber eben nicht 1:1

 

Kennt jemand von Euch evtl. eine Quelle für Bid- und Ask-Kurse von Bankhaus Scheich?

Diesen Beitrag teilen


Link zum Beitrag
thomasmeyer42

Hey direkt von Bankhaus Scheich Bid- und Ask-Kurse zu bekommen, ist gar nicht so einfach, da die oft über Partner oder Plattformen handeln. BSDEX ist sicherlich nah dran, aber vielleicht gibt’s da minimale Spread-Unterschiede. Du könntest versuchen, über API-Zugänge von BSDEX oder BISON genauere Daten rauszuziehen. Alternativ mal direkt beim Bankhaus nachfragen – vielleicht haben die eine Lösung oder Empfehlung. Viel Erfolg!

Diesen Beitrag teilen


Link zum Beitrag
Privatier2029

Hallo zusammen,

 

in meinem Excel-Sheet rufe ich verschiedene Daten über Jahoo Finance ab, wie z.B. "regularMarketPrice" das klappt auch wunderbar.

Nun würde ich gerne auch noch das "KGV" und "EPS" im Excel-Sheet anzeigen.

Dazu habe ich diesen Faden hier durchsucht, aber nichts gefunden oder vielleicht hab ich es auch einfach überlesen.

Habt ihr eine Idee wie das funktioniert, oder hat das jemand von euch bereits implementiert?

Diesen Beitrag teilen


Link zum Beitrag
Oli Garch

Sicher gab es hier im Forum dafür schon Lösungen, nur hat Yahoo viele ehemals funktionierende Adressen abgeschaltet. Jetzt sind mir noch 2 Adressen (in Variationen) bekannt, die noch funktionieren.
Ich gehe mal jeinfach davon aus, dass du eine Lösung ohne VBA-Makro mit der Funktion Webdienst bevorzugst.
Die Yahoo-Adresse für Webdienst, die deine gesuchten Werte beinhaltet, geht so:
=WEBDIENST("https://query1.finance.yahoo.com/v6/finance/options/"&B2)
In B2 in diesem Beispiel steht das Tickersymbol.
Da, wo der Wert stehen soll, trägst du diese Formel ein:
=WECHSELN(TEIL(TEIL(Tabelle2!C2;SUCHEN("epsForward";Tabelle2!C2);100);LÄNGE("epsForward")+3;SUCHEN(",";TEIL(TEIL(Tabelle2!C2;SUCHEN("epsForward";Tabelle2!C2);100);LÄNGE("epsForward")+3;20))-1);".";",")/1

Ich weiß nicht genau, ob ich die Formel so hier schon mal vorgestellt habe, aber im Unterschied zu früheren Varianten muss die Formel nicht mehr für jede Abfrage gesondert angepasst werden. Egal, ob du epsForward oder trailingPE verwendest, die Formel bleibt gleich. Es sollte nur darauf geachtet werden, dass Änderungen immer an 4 Stellen in der Formel vorgenommen werden müssen.
Hier in der Beispielformel steht die Webdienst-Abfage in Tabelle2!C2, also ausgelagert auf ein anderes Tabellenblatt, wo sie nicht stört. Sie muss also individuell angepasst werden (4 mal).
Die Formel sollte eigentlich für alle numerischen Werte funktionieren, Ausgaben in Textform wie longName oder fullExchangeName benötigen kleine Anpassungen. Alle verfügbaren Werte findet man durch Eingabe der Webdienst-URL in den Browser.
Ich war mal wieder recht ausführlich, damit Mitleser, die sich noch nicht damit beschäftigt haben, etwas damit anfangen können, auch, wenn du vielleicht nur eine Formel wissen wolltest.

Diesen Beitrag teilen


Link zum Beitrag
Privatier2029

Hi Oli Garch,

 

auf dich ist wie immer Verlass. Vielen Dank für deine Hilfe.

Bin diese Woche viel unterwegs, deshalb kann ich deine Formeln wahrscheinlich erst am Wochende testen.

Diesen Beitrag teilen


Link zum Beitrag
Privatier2029

Hatte jetzt doch schon etwas früher Zeit zum Testen. Die Formel funktioniert wunderbar.

Nochmals Danke.

Diesen Beitrag teilen


Link zum Beitrag
MaexNRW
Am 2.2.2025 um 13:27 von Oli Garch:

Sicher gab es hier im Forum dafür schon Lösungen, nur hat Yahoo viele ehemals funktionierende Adressen abgeschaltet. Jetzt sind mir noch 2 Adressen (in Variationen) bekannt, die noch funktionieren.
Ich gehe mal jeinfach davon aus, dass du eine Lösung ohne VBA-Makro mit der Funktion Webdienst bevorzugst.
Die Yahoo-Adresse für Webdienst, die deine gesuchten Werte beinhaltet, geht so:
=WEBDIENST("https://query1.finance.yahoo.com/v6/finance/options/"&B2)
In B2 in diesem Beispiel steht das Tickersymbol.
Da, wo der Wert stehen soll, trägst du diese Formel ein:
=WECHSELN(TEIL(TEIL(Tabelle2!C2;SUCHEN("epsForward";Tabelle2!C2);100);LÄNGE("epsForward")+3;SUCHEN(",";TEIL(TEIL(Tabelle2!C2;SUCHEN("epsForward";Tabelle2!C2);100);LÄNGE("epsForward")+3;20))-1);".";",")/1

Ich weiß nicht genau, ob ich die Formel so hier schon mal vorgestellt habe, aber im Unterschied zu früheren Varianten muss die Formel nicht mehr für jede Abfrage gesondert angepasst werden. Egal, ob du epsForward oder trailingPE verwendest, die Formel bleibt gleich. Es sollte nur darauf geachtet werden, dass Änderungen immer an 4 Stellen in der Formel vorgenommen werden müssen.
Hier in der Beispielformel steht die Webdienst-Abfage in Tabelle2!C2, also ausgelagert auf ein anderes Tabellenblatt, wo sie nicht stört. Sie muss also individuell angepasst werden (4 mal).
Die Formel sollte eigentlich für alle numerischen Werte funktionieren, Ausgaben in Textform wie longName oder fullExchangeName benötigen kleine Anpassungen. Alle verfügbaren Werte findet man durch Eingabe der Webdienst-URL in den Browser.
Ich war mal wieder recht ausführlich, damit Mitleser, die sich noch nicht damit beschäftigt haben, etwas damit anfangen können, auch, wenn du vielleicht nur eine Formel wissen wolltest.


Hallo Oli,

wenn ich das richtig sehe, sind die KPIs bzw. Felder "Erwartete Dividende & Rendite" und "Ex-Dividendendatum", die man auf der normalen Yahoo Finance Webseite bei einer Aktie sieht, in der Query nicht verfügbar, oder hab ich mich da verguckt?

 

Liebe Grüße

Max

Diesen Beitrag teilen


Link zum Beitrag
Oli Garch

Hallo Max,

das ist leider so, wie du es gesehen hast.

Um an diese Werte zu kommen, könnte man diese direkt auf der Webseite auslesen. Das gelingt aber nur mit einem VBA-Makro und bei vielen Werten dauert die Aktualisierung schon etwas länger. Bei jedem Wert muss ja der jeweilige Webseitenquelltext heruntergeladen wird. Wenn dich das nicht stört und du dich etwas auskennst in (vba)-Excel, würden wir das recht schnell hinkriegen.

Schneller geht es natürlich immer mit der Excel Webdienst-Funktion, die aber nur 32767 Zeichen verarbeiten kann und der Quelltext der meisten Webseiten ist nun mal länger.

Viele Daten liefert auch die Onvista Daten-api (Beispiel: https://api.onvista.de/api/v1/stocks/ISIN:DE0005557508/snapshot?). Leider ist der Text im json-Format auch zu lang für die Webdienst-Funktion. Ein VBA-Makro auf dieser Basis müsste aber trotzdem etwas schneller laufen, als das vba-Auslesen einer Webseite. Um da ein brauchbares Makro zu basteln, würde ich aber einige Tage brauchen.

Diesen Beitrag teilen


Link zum Beitrag
leoluchs
Am 23.4.2023 um 08:25 von migieger:

Kleines Spiele-Spreadsheet Update, so daß man die gewünschten Börsenplätze und Kurse nicht mehr in die Formeln eintragen muß, sondern das einmal pro Zeile festlegt.
Sollte dann wohl auch Kursabfrage-ING-Onvista.ods und nicht Schlusskurs-Abfrage-ING-Onvista.ods heißen. Nun dann...

Kurs-Abfrage-ING-Onvista-v1c.ods 73 kB · 135 Downloads

Großartig - das funktioniert bei den wenigen ETFs in unserem Depot prima.:thumbsup:

Gibt es einen Weg, diese Funktion auch in ein Google Sheet einzufügen?

Diesen Beitrag teilen


Link zum Beitrag

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden

×
×
  • Neu erstellen...