Jump to content
mc-fly

Aktienkurse im Excel automatisch aktualisieren

Recommended Posts

Oli Garch
Posted

Es ist schon so, dass die Code-Längen das Problem ist.

Ein Ausweg wäre aber, die Kurse vom ING Direkthandel zu nehmen. Der läuft ja meiner Meinung nach über Tradegate.

=WEBDIENST("https://component-api.wertpapiere.ing.de/api/v1/components/charttool/"&D1)

in D1 steht die ISIN

"bid" wird dann so gefiltert:

=WECHSELN(TEIL(TEIL(N1;FINDEN("TGT";N1);250);FINDEN("bid";TEIL(N1;FINDEN("TGT";N1);250))+5;FINDEN(",";TEIL(TEIL(N1;FINDEN("TGT";N1);250);FINDEN("bid";TEIL(N1;FINDEN("TGT";N1);250))+5;50))-1);".";",")/1

Bedingung: in N1 steht die o. g. Webdienst-Formel.

für "ask": in der Filter-Formel "bid" zweimal durch "ask" ersetzen.

Alles blitzschnell, da nur Text geladen wird.

 

Share this post


Link to post
CK-ONE
Posted

OMG, es funktioniert. :) 1.000 Dank!

 

Du hast Recht. Laut eigener Website werden Aktien und ETFs dort über Tradegate gehandelt, Fonds, Zertifikate und Hebelprodukte über Gettex.

[Quelle: https://www.ing.de/sparen-anlegen/direkt-depot/handelsplaetze/handelspartner/]

 

Und wenn ich stattdessen "ast" eingebe, habe ich auch noch den je aktuellen letzten Kurs.

Aktualisieren sich denn diese Werte, wenn ich per Str+Alt+F5 den Befehl "Alle aktualisieren" ausführe?

Kann es gerade nicht prüfen, weil die Handelszeiten "nur" bis 22 Uhr gehen.

 

Die Kirsche auf der Sahne wäre jetzt noch, wenn ich nur die ISIN eingeben müsste und auch der Name und der Ticker der Aktie in je einer Zelle abgerufen würden.

Beides finde ich leider in dem API-Text von ING nicht. Gibt es da noch einen Trick?

Share this post


Link to post
Oli Garch
Posted
vor 10 Stunden von CK-ONE:

Gibt es da noch einen Trick?

Ich persönlich verwende diese Adresse:
https://component-api.wertpapiere.ing.de/api/v1/components/instrumentheader/IE00B3RBWM25
Nur liefert die bei ETFs kein bid und ask, sondern nur price. Dafür sind WKN, ISIN u. Name enthalten.
Da ich es für mich nicht so genau brauche, aber immer die gleiche Formel verwenden möchte, habe ich beide Lösungen mit der "Wennfehler"-Funktion verknüpft. Also wenn "bid" einen Fehler erzeugt Ausgabe von "price".
"bid" finde ich so:
=WECHSELN(TEIL(R3;SUCHEN("#";WECHSELN(R3;",";"#";4))+7;FINDEN(",";TEIL(R3;SUCHEN("#";WECHSELN(R3;",";"#";4))+7;20))-1);".";",")/1
und "price" so:
=WECHSELN(TEIL(R3;SUCHEN("#";WECHSELN(R3;",";"#";2))+9;SUCHEN(",";TEIL(R3;SUCHEN("#";WECHSELN(R3;",";"#";2))+9;20))-1);".";",")/1
Wie ich aus deinem Anfangspost ersehe, bist du mit Office 365 unterwegs. Da bekommst du die Formeln sicher noch etwas eleganter hin. Mit dieser URL geht es aber schon wesentlich einfacher.

Da fällt mir gerade auf: Onvista hat eine ähnliche api. Scheint auch bid und ask zu liefern.
URL: https://api.onvista.de/api/v1/funds/ISIN:IE00B3RBWM25/snapshot?
Für Aktien in der URL stocks statt funds.
Für Tradegate alles was hinter _gat oder GAT steht.

Share this post


Link to post
CK-ONE
Posted

Himmel, Du gibst ja sogar schon Antworten auf Fragen, die ich noch gar nicht gestellt habe. LOL

Ich wollte nämlich noch die Frage nachschießen, ob ich auch irgendwo an Intraday-Daten von LS-Exchange kommen kann.

Und was soll ich sagen: Die Onvista-API enthält genau diese und noch viel mehr!

 

So lassen sich bspw. in Excel hilfreiche Einblicke errechnen, wie das Verhältnis von aktuellem Volumen zum 4-Wochen-Volumen.

Das ermöglicht es, eine Einschätzung der aktuellen Handelsaktivität eins Stocks zu bekommen. 

Noch dazu alles komfortabel abrufbar per Textverkettung mit einer ISIN.

Ich werde das als nächstes mal richtig ausschlachten, testen und hier Feedback geben.

 

Deine ING-Formel habe ich mir von Chat GPT im Detail erläutern lassen.

Daraufhin konnte ich sie entsprechend anpassen und nun auch Volumen-Daten abrufen.

Für die Mitleser der Community, an das Tradegate-Volumen im bereits abgerufenen ING-API-Text kommt ihr so:

=WECHSELN(TEIL(TEIL(G8;FINDEN("TGT";G8);550);FINDEN("volume";TEIL(G8;FINDEN("TGT";G8);550))+8;FINDEN(",";TEIL(TEIL(G8;FINDEN("TGT";G8);550);FINDEN("volume";TEIL(G8;FINDEN("TGT";G8);550))+8;50))-1);".";",")/1)

Wobei die Zelle G8 den per Webservice heruntergeladenen ING-API-Text enthält. 

 

Oli, ich danke Dir jetzt schon ganz herzlich für deine fundierte Hilfe.

Diese Lösungen bedeuten für mich Next Level, um gut auf Daily- und Intraday-Marktbewegungen reagieren zu können und dadurch noch bessere Einstiege finden und profitablere Setups kreieren zu können.

 

Danke.

Share this post


Link to post
Oli Garch
Posted

Vielen Dank für die Rückmeldung. Freut mich sehr, dass ich helfen konnte. Für den ein oder anderen hier im Forum ist es sicherlich auch interessant, wenn du hier weitere Möglichkeiten vorstellst, Daten zu filtern.

Um nochmal auf eine Frage bezüglich der Aktualisierung der Daten aus deinem vorletzten Beitrag zurückzukommen: du meintest sicherlich Strg+Alt+F9. Ja das geht so.

Share this post


Link to post
CK-ONE
Posted

Schade, die Onvista-API gibt bei deutschen Stocks Werte für so viele Börsen aus, dass der per WEBDIENST ausgelesene Text leider zu lang ist. :(

Das heißt, die funktioniert Methode bei LS Exchange nur für ETFs und amerikanische Stocks. Und auch dort nicht für die Big Player wie AMD und größer.

 

Kennst Du evtl. noch eine Alternative Datenquelle für LS Exchange?

Share this post


Link to post
Oli Garch
Posted
vor 11 Stunden von CK-ONE:

Kennst Du evtl. noch eine Alternative Datenquelle für LS Exchange?

keine, die man mit der Excel-Funktion Webdienst abgreifen könnte.

Eine andere Möglichkeit wäre, die Funktion Webdienst durch ein kleines VBA-Makro nachzubilden. Diese selbstgemachte Funktion wäre zwar auch auf die 32767 Zeichen bei der Datenausgabe geschränkt, aber da lässt sich vorher ja jede Menge aussortieren, so dass es passt. So etwas hätte ich auch noch in der Schublade. Natürlich nur wenn du aus Sicherheitsgründen VBA-Makros nicht ausschließt.

Share this post


Link to post
Coriolis
Posted

Kann jemand bitte noch die Formel für den Vortageskurs über das ING Webservice einstellen?

Danke vielmals!

Share this post


Link to post
Oli Garch
Posted
vor 39 Minuten von Coriolis:

Kann jemand bitte noch die Formel für den Vortageskurs über das ING Webservice einstellen?

=WECHSELN(TEIL(K1;SUCHEN("#";WECHSELN(K1;",";"#";3))+9;FINDEN(",";TEIL(K1;SUCHEN("#";WECHSELN(K1;",";"#";3))+9;20))-1);".";",")/1

hier wird vorausgesetzt, dass in Zelle K1 die Webdienstformel steht, die lautet:

=WEBDIENST("https://component-api.wertpapiere.ing.de/api/v1/components/instrumentheader/"&C1)

diese setzt voraus, dass in Zelle C1 die ISIN des gesuchten Wertes steht.

In der ING-api läuft der Vortageskurs unter "close", wie man hier sehen kann:

{"id":608678,"name":"Vanguard FTSE All-World UCITS ETF - (USD) Dist","price":107.06,"close":106.98000000,"changePercent":0.0747803327724808375397270500,

Share this post


Link to post
Coriolis
Posted · Edited by Coriolis

Danke vielmals, Oli Garch - funktioniert perfekt! :)

Share this post


Link to post
CK-ONE
Posted

Wie es aussieht ergänzen sich die beiden APIs von Onvista und ING ganz gut, was die Abedeckung der Stocks angeht.

Nur Mega-Caps (für mich eh nich tinteressant) und absolute Exoten sind dort nicht per ISIN vertreten. Kann ich absolut mit leben.

 

Ich habe deshalb nun für beide API-Bezüge eigene Tabellenblätter eingerichtet, die die je spezifisch gebotenen Daten optimal ausnutzen.

 

Ein Übersichtsblatt zeigt per Balkendiagrammen für beide API-Sets auf einen Blick an, ob es am Handelstag Besonderheiten bei Spreads, Volumen u.a. gibt.

Funktioniert tadellos.

 

Danke nochmal bis hierhin Oli.

 

 

 

Share this post


Link to post
Drengist
Posted

Irgendwie bekomme ich über Ariva nicht mehr den Kurs für meinen Geldmarktfonds DBX0AN.

 

Dieser Import liefert keinen Kurs mehr: =IMPORTXML("https://www.ariva.de/etf/db_x_trackers_ii_eonia_ucits_etf_1c";"//*[@itemprop='price']")

 

Bei Google Finance ist der Fonds garnicht auffindbar.

 

Könnt ihr eventuell helfen?

 

 

Share this post


Link to post
Oli Garch
Posted

In einem anderen Thread hatten wir vor zwei Tagen schon einmal dieses Problem. Ersetze den XPath-Wert (den Teil hinter dem Semikolon) durch den Wert, wie er in dem anderen Thread angegeben ist. Das funktioniert auch mit deiner URL. Oder du übernimmst gleich alles von dort.

Share this post


Link to post
Malvolio
Posted
vor 11 Stunden von Drengist:

Irgendwie bekomme ich über Ariva nicht mehr den Kurs für meinen Geldmarktfonds DBX0AN.

 

Dieser Import liefert keinen Kurs mehr: =IMPORTXML("https://www.ariva.de/etf/db_x_trackers_ii_eonia_ucits_etf_1c";"//*[@itemprop='price']")

 

Bei Google Finance ist der Fonds garnicht auffindbar.

 

Könnt ihr eventuell helfen?

 

 

Der ETF wird auf XETRA gehandelt (Ticker: XEON). Da sollte in EXCEL 365 eine Abfrage über den Datentyp "Aktien" möglich sein.

 

 https://support.microsoft.com/de-de/office/abrufen-eines-aktienkurses-e5af3212-e024-4d4c-bea0-623cf07fbc54

 

Share this post


Link to post
Oli Garch
Posted

@Drengist ist wohl im falschen Thread unterwegs. Meiner Meinung nach benötigt er Hilfe für Google-Sheets.

Share this post


Link to post
Drengist
Posted

Danke, der andere Thread hat geholfen.

Share this post


Link to post
schneire
Posted
Am 21.5.2024 um 10:15 von Malvolio:

Der ETF wird auf XETRA gehandelt (Ticker: XEON). Da sollte in EXCEL 365 eine Abfrage über den Datentyp "Aktien" möglich sein.

 

 https://support.microsoft.com/de-de/office/abrufen-eines-aktienkurses-e5af3212-e024-4d4c-bea0-623cf07fbc54

 

 

Hallo Oli, kannst du bitte über deine WEB-Dienstformel in EXCEL bei ARIVA den Price auslesen:


=WEBDIENST("https://component-api.wertpapiere.ing.de/api/v1/components/instrumentheader/"&B2)

 

Danke

 

 

Share this post


Link to post
Oli Garch
Posted

Die ING-API funktioniert heute offensichtlich nicht. Ich hoffe es ist eine vorübergehende Erscheinung.

Ich habe jetzt nicht ganz den Zusammenhang mit Ariva verstanden. Willst du stattdessen den Kurs da herholen?

Share this post


Link to post
schneire
Posted
vor 2 Stunden von Oli Garch:

Die ING-API funktioniert heute offensichtlich nicht. Ich hoffe es ist eine vorübergehende Erscheinung.

Ich habe jetzt nicht ganz den Zusammenhang mit Ariva verstanden. Willst du stattdessen den Kurs da herholen?

JA ganz genau das.

Share this post


Link to post
Oli Garch
Posted · Edited by Oli Garch
Fehler in Formel beseitigt

Ariva ist eine ganz schlechte Idee. Ohne VBA-Makro lässt sich da nichts mehr auslesen und dann unheimlich langsam.

Wenn schon mit Makro, dann doch besser mit der Onvista-API, das funktioniert recht flott.

Aber wenn du ohne Makro auskommen willst, kenne ich neben Yahoo nur noch eine Quelle bei NTV. Die Seite ist so spartanisch aufgebaut, dass sie von der Excel Webdienst-Funktion verarbeitet werden kann.

Und die geht so:

Schreibe z. B. in Zelle J2 folgendes:

=WEBDIENST("https://kursdaten.n-tv.de/teleboerse/webelements/suche.htn?suchbegriff="&C2)

In Zelle C2 steht die ISIN des Wertpapiers.

Da, wo der Kurs stehen soll (z. B. D2) folgendes eintragen:

=TEIL(J2;FINDEN("icon_";J2)+FINDEN(">";TEIL(J2;FINDEN("icon_";J2);25));FINDEN("<";TEIL(J2;FINDEN("icon_";J2)+FINDEN(">";TEIL(J2;FINDEN("icon_";J2);25));25))-1)/1

Die Kurse aktualisieren sich nicht von selbst. Für Aktualisierung: STRG-ALT-F9.

 

Ich hoffe aber, das die ING-API bald wieder läuft.

Share this post


Link to post
schneire
Posted
vor 18 Stunden von Oli Garch:

Ariva ist eine ganz schlechte Idee. Ohne VBA-Makro lässt sich da nichts mehr auslesen und dann unheimlich langsam.

Wenn schon mit Makro, dann doch besser mit der Onvista-API, das funktioniert recht flott...

 

Hallo Oli,  danke für deine Formel und Einschätzung zu Ariva.

Bis vor einem Monat hatte ich täglich per Makro bei Ariva von 15 Wertpapier die Kurse und je 8 Performancedaten innerhalb von ca. 20 sek abgeholt. Das lief fast 2 Jahre ganz gut. Aber jetzt haben die die Kurs-Tabellen umgebaut und den Kurs kriege ich nicht mehr per Macro. Da ich den Code nicht erstellt habe und die scrapping-Position verändert ist kriege ich das auch nicht mehr alleine hin.

Somit denke ich schon an den Umbau um würde mich freuen wenn du die NTV-Formel anpasst damit ich an die Kursperformance "Zeitraum Kurs %    1 Tag  komme. Die anderen Zeiträume sollte ich schon wieder selbst hinbekommen.

Share this post


Link to post
Oli Garch
Posted
vor 4 Stunden von schneire:

damit ich an die Kursperformance "Zeitraum Kurs %    1 Tag  komme. Die anderen Zeiträume sollte ich schon wieder selbst hinbekommen.

Und da liegt das Problem. Diese N-TV Kursseite (https://kursdaten.n-tv.de/teleboerse/webelements/suche.htn?suchbegriff=DE0005557508) beinhaltet nur den aktuellen Kurs und die Kursänderung zum Vortag, mehr nicht.

Ich habe jetzt nochmal als Test mit Excel von Ariva von 4 Aktien die Kursdaten und dann jeweils die prozentuale Performance und die dazugehörigen Kurse von 4 verschiedenen Zeiträumen mittels VBA-Makro heruntergeladen. Für diese 12 Werte benötige ich etwa 17 Sekunden. Als Dauerlösung wäre mir das zu langsam. Dein bisheriger Code scheint ja etwas schneller zu sein. Vielleicht lässt der sich ja so umbauen, dass es wieder läuft.

Share this post


Link to post
schneire
Posted
Am 28.5.2024 um 18:28 von Oli Garch:

dazugehörigen Kurse von 4 verschiedenen Zeiträumen mittels VBA-Makro heruntergeladen. Für diese 12 Werte benötige ich etwa 17 Sekunden. Als

ich denke das geht doch schneller...

Share this post


Link to post
CK-ONE
Posted · Edited by CK-ONE

Kurze Info noch für alle, die Cryptokurse einbinden wollen.

Ich habe in den letzten Monaten gute Erfahrungen mit dieser API gemacht:

https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest?start=1&limit=600

 

Viel Erfolg!

 

 

Eine neue Frage noch an Oli Garch & alle anderen Experten:

Gerne würde ich gerne Änderungen in der Rating-Bewertung abrufen.

Könnt Ihr da eine Quelle empfehlen?

 

Gefallen würde es mir, https://www.finanznachrichten.de/nachrichten/empfehlungen.htm auszuwerten.

Dort die Tabelle "Aktien / Empfehlungen mit dem größten Kurspotenzial (letzte 90 Tage)".

Leider komme ich aber per Excel-Scraping nicht an die Unterseiten 2-10 ran ...

Share this post


Link to post
Oli Garch
Posted · Edited by Oli Garch

@CK-ONE

War ein paar Tage im Urlaub und habe mir jetzt mal die Tabelle auf Finanznachrichten.de angesehen. Das Problem mit den nicht ladbaren Unterseiten hat mich schon gereizt. So etwas habe ich bisher noch nicht gemacht. Jetzt läuft es.
Ich werde eine Excel-Datei anhängen. Da ist ein Auswahlfenster eingebaut, in dem Alles, Deutschland, Europa-ohne D. oder USA ausgewählt werden kann, so wie es auf der Internetseite auch funktioniert. Außerdem ist da noch ein Startbutton für das Makro.
Hier erst einmal nur das Makro zum kopieren und schnell mal ausprobieren. Es ist nur minimal geändert, weil ich eine Kopfzeile für die Tabelle einbauen musste, die in der Excel-Tabelle bereits vorhanden ist. Das Makro ist mit der Liste der deutschen Empfehlungen voreingestellt, da keine Auswahlmöglichkeit vorhanden ist.
Ich hoffe es funktioniert.

 

Sub Empfehlungen()
Dim mySheet As Worksheet
Dim myTable As QueryTable
Dim url As String
Dim Seite As Integer
Dim letzteSeite As Integer
Dim letzteZeile As Integer
Dim Liste As Integer
'UserForm1.Show
'If Abbruch = True Then Exit Sub
Set mySheet = Sheets(1)
'Kopfzeile
mySheet.Cells(1, 2).Value = "Aktie"
mySheet.Cells(1, 3).Value = "Kurs"
mySheet.Cells(1, 4).Value = "Ziel"
mySheet.Cells(1, 5).Value = "Potenzial"
mySheet.Cells(1, 6).Value = "Kaufen"
mySheet.Cells(1, 7).Value = "Halten"
mySheet.Cells(1, 8).Value = "Verkaufen"

letzteZeile = mySheet.UsedRange.Rows.Count
If letzteZeile < 2 Then letzteZeile = 2
mySheet.Range(Cells(2, 1), Cells(letzteZeile, 1)).EntireRow.Delete
letzteSeite = 10
Liste = 1
letzteZeile = mySheet.UsedRange.Rows.Count
For Seite = 1 To letzteSeite
    url = "https://www.finanznachrichten.de/w/184/4?tab=" & Liste & "&page=" & Seite
    Set myTable = mySheet.QueryTables.Add("URL;" & url, mySheet.Cells(letzteZeile + 1, 1))
    With myTable
        .WebSelectionType = xlEntirePage
        .WebFormatting = xlWebFormattingNone
        .WebDisableDateRecognition = True
        .Refresh (False)
        .Delete
    End With
    Columns("A:A").ColumnWidth = 25
    Cells(1, 1).Select
    For i = 1 To 6
        mySheet.Cells(letzteZeile + 1, 1).EntireRow.Delete
    Next
    letzteZeile = mySheet.UsedRange.Rows.Count
    If InStr(Cells(letzteZeile, 1).Value, "Seite") Then
        If InStr(Cells(letzteZeile, 1).Value, "Weiter") = False Then
            mySheet.Cells(letzteZeile, 1).EntireRow.Delete
            For i = 1 To letzteZeile
                mySheet.Cells(i, 1).Value = ""
            Next
            letzteZeile = mySheet.UsedRange.Rows.Count
        Exit Sub
        Else
            mySheet.Cells(letzteZeile, 1).EntireRow.Delete
            letzteZeile = mySheet.UsedRange.Rows.Count
            For i = 1 To letzteZeile
                mySheet.Cells(i, 1).Value = ""
            Next
        End If
    End If
Next
End Sub

Empfehlungen.xlsm

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...