Ich weiß nicht, nach meinem Eindruck legst du zu viel Gewicht auf die unterschiedlichen Zugangsmethoden und zu wenig auf die Quellen selbst. Portfolio Report ist überhaupt nicht erwähnt, obwohl es sicher die aktuell bequemste Bezugsmöglichkeit ist (für Werte, die auf Xetra gehandelt werden). Ansonsten nutze ich in erster Linie Ariva und in einem Fall Onvista (beides Methode „Tabelle auf Website“).
Hallo in die Runde
Ich bin auf diesen Beitrag gestossen, weil ich nach einer Lösung für autom. Kursimport ab swissfunddata.ch gesucht habe.
Kann z.B. das CSV von hier
https://www.swissfunddata.ch/sfdpub/de/funds/excelData/102619
herunter laden und manuell über die CSV-Import-Funktion einlesen.
Jetzt wäre es super, wenn das automatisch erfolgen könnte.
Hab dazu hier noch keine Lösung gefunden.
Wertpapier editieren → Tab Historische Kurse, dort “Tabelle auf einer Website” wählen und als Kurs-URL
https://de.investing.com/funds/ch0432279021-historical-data
eingeben.
Besten Dank, nicht die Antwort auf meine Frage aber die Lösung
Hab die meisten meiner Fonds da gefunden und hab die weitere History manuell mit CSV ab swissfunddata importiert.
Du hattest doch keine Frage gestellt
Hallo Leute,
bin neu hier - bitte um Geduld.
Würde gerne den Kurs meiner Aktie - gekauft an der Börse Mailand - aktualisieren. Finde aber keine entsprechende aktuelle Kursliste und auch kein Börsenkürzel. Jemand einen Tipp?
LG, HjP
wenn du schreibst, um welche Aktie es sich handelt, dann wären wir vielleicht in der Lage dir zu helfen
Hallo,
ja freichlich. Es handelt sich dabei um die Saras S.p.a WKN A0JL4P.
Gruß, HjP
Hey,
da ich für mehrere Wertpapiere historische Kurse einfügen wollte die nicht bei Portfolie Report dabei waren, habe ich ein kleines Script geschrieben, welches die Erstellung des Links automatisiert.
Den Link kann man dann einfach nehmen und bei Portfolio Performance eintragen.
Mithilfe der ISIN, findet es bei Onvista die Notationid raus und zusammen mit dem Anfangsdatum erstellt es dann automatisch den richtigen Link. Das funktioniert stand heute 15. April 2021. Falls sich da in Zukunft wieder was ändert, könnten wir/ich das in dem Script immer up-to-date halten.
Die ISINs könnten gespeichert werden, sodass man bei Änderungen von OnVista nur das Skript einmal neu anschmeißen muss und sofort alle neuen Links hat. Wenn das jemand möchte, mach ich das.
Sieht dann so aus:
(das Fett gedruckte gibt man ein)
python3 main.py
ISIN: LU0125951151
0: Baader Bank (EUR, Echtzeit)
1: Berlin (EUR, Echtzeit)
2: Düsseldorf (EUR, Echtzeit)
3: Frankfurt (EUR, verzögert)
4: gettex (EUR, Echtzeit)
5: Hamburg (EUR, Echtzeit)
6: KVG (EUR, Echtzeit)
7: München (EUR, Echtzeit)
8: Quotrix (EUR, Echtzeit)
9: Stuttgart (EUR, Echtzeit)
10: Swiss Exchange (EUR, verzögert)
11: Tradegate (EUR, Echtzeit)
stockmarket: 3
Startdate (any format): 2018-05-01
Der produzierte Link:https://www.onvista.de/onvista/times+sales/popup/historische-kurse/?notationId=15912438&dateStart=01.05.2018&interval=Y5&assetName=LU0125951151_MFS%20Meridian-Eur.Value%20A1%20EUR&exchange=Frankfurt%20%28EUR%2C%20verz%C3%B6gert%29
Link zum Github Projekt
Pull Requests oder sonstiges Kommentar sind natürlich willkommen.
Für die, die sich mit GitHub nicht so gut auskennen:
Nachdem ihr auf den Link gedrückt habt seht ihr direkt eine kleine Anleitung, der ihr einfach folgen müsst. Ist keine große Sache. Besteht alles nur aus einem Python Script mit ein paar Zeilen Code.
P.S: wär echt cool, wenn wir alle in dem Skript in Zukunft einfach immer eine Methode hätten die aktuell funktioniert, dann muss man nicht immer aufs neue das Forum durchstöbern und sich selbst damit auseinander setzen
Grüße
Fabian
Gute Idee. Zwei Verbesserungsvorschläge:
- PP kann den Zeitraum variabel halten, etwa: “heute vor einem Monat” (
{TODAY:dd.MM.yyyy:-P1M}
im folgenden Link). - Man braucht einige Werte im Detail nicht. Relevant ist nur die notationId.
Verallgemeinert und vereinfacht könnte der Output des Python-Scripts sein:
https://www.onvista.de/onvista/times+sales/popup/historische-kurse/?notationId=15912438&dateStart={TODAY:dd.MM.yyyy:-P1M}&interval=Y5&assetName=a&exchange=a
Damit muss man dann zukünftig kein Datum mehr anpassen
Hey @hemagi,
In der URL müssen die Werte gesetzt sein. Man könnte natürlich auch xx rein schreiben aber dann kann man auch gleich die richtigen rein geben. Auf der Website von OnVista werden sie dann ja angezeigt und tragen so zur Übersichtlichkeit bei. Was man dagegen davon hat den Link zu “vereinfachen” wüsste ich gerade nicht. Den Link muss ja niemand händisch abschreiben.
- PP kann den Zeitraum variabel halten, etwa: “heute vor einem Monat” (
{TODAY:dd.MM.yyyy:-P1M}
im folgenden Link).
Das ist interessant und könnt man einbauen. Für was steht -P1M?
Einen Monat vor heute.
Grundsätzlich wäre begrüßenswert, wenn nicht mehr Daten bezogen würden als gerade nötig. Sonst könnte Onvista auf die Idee kommen, das zu blockieren, um Serverlast einzusparen.
Hab das mit “{TODAY:dd.MM.yyyy:-P5Y}” jetzt gemacht. Kannte ich vorher nicht. Echt gut
Die anderen Werte werden ja nicht extra abgefragt sondern stehen auf der gleichen Website wo auch die NotationId her ist. Erzeugt also keine extra Anfrage an den onvista Server.
Man könnte natürlich auch xx rein schreiben aber dann kann man auch gleich die richtigen rein geben. Auf der Website von OnVista werden sie dann ja angezeigt und tragen so zur Übersichtlichkeit bei.
Ob es gut aussieht, interessiert PP nicht. Es sollen doch nur Daten geholt werden. Form follows Function. Und die Lesbarkeit bei den ganzen URL-encodeten Zeichen ist… unterdurchschnittlich.
Hab das mit “{TODAY:dd.MM.yyyy:-P5Y}” jetzt gemacht.
Bloß nicht. So holst du bei jedem Aufruf die Daten der letzten 5 Jahre. Genauso wie @chirlu bin ich der Meinung, dass man so wenig Daten holen sollte wie nötig, sonst machen es die Lieferanten den Zugang irgendwann zu. Denn jede Query kostet sie Geld.
Dein Argument
Die anderen Werte werden ja nicht extra abgefragt sondern stehen auf der gleichen Website wo auch die NotationId her ist. Erzeugt also keine extra Anfrage an den onvista Server.
ist schwach, da onvista leicht merken kann, dass die Kursabfrage nicht aus ihren Webseiten erfolgt. Und wenn sie nicht von ihren Webseiten erfolgt, bringt es ihnen keinen Gewinn, weder, dass sie neue eigene Kunden generieren, noch das Werbung geschaltet werden kann.
Ich war davon ausgegangen, dass jeder einmal im Monat PP öffnet und die Kurse aktualisiert. Daher reicht es vollkommen, wenn wenn man die Daten des letzten Monats holt. Öffnet man fast jeden Tag PP, kann man sich auch auf 1 Woche beschränken.
Wenn du in deinem Python-Script anbietest, dass man die Anzahl der Monate oder Tage angeben kann, für die rückwirkend die Daten geholt werden, und default 1 Monat oder 7 Tage anbietest, würde das helfen.
Was haltet ihr von der Idee, Ariva als zusätzliche Quelle zu implementieren? Hierdurch werden Wikifolios sehr gut abgedeckt. Ich nutze Wikifolio und konnte noch keine zufriedenstellende Lösung finden, die historischen Kurse automatisch zu importieren. Wählt man “Tabelle auf einer Webseite” als Kurslieferant und anschließend Ariva werden nur die letzten 30 Tage importiert.
Ich habe die Umsetzung bereits mit python programmiert, eventuell könnte man den Code daran orientieren. Hier der Code:
import pandas as pd
import re
from bs4 import BeautifulSoup
Angaben vom Nutzer
isin = ‘DE000LS9HP25’ # Wikifolio-ISIN
WKN aus der Wikifolio-ISIN extrahieren
wkn = re.match(r"DE[0-9]+(.*)", isin).group(1)[:-1] # wkn = ‘LS9HP2’
Finde die SECU-Nummer des Wertpapiers für Ariva
base_url = ‘https://www.ariva.de/’
url_ariva = base_url + ‘zertifikate/’ + str(wkn) + ‘/historische_kurse?’
response = requests.get(url_ariva)
soup = BeautifulSoup(response.text, “html.parser”)
secu = soup.find(‘input’, {‘name’: ‘secu’})[‘value’] # secu = ‘124122501’
HTML Element mit SECU-Nummer (Größer- und Kleinerzeichen durch Fragezeichen ersetzt)
?form action=“/quote/historic/historic.csv” method=“get” name=“histcsv”?
?input type=“hidden” name=“secu” value=“124122501”?
…
?/form?
Download csv mit historischen Kursen bis 1.1.2000 (Datum kann man beliebig weit zurück setzen)
url_download = base_url + ‘/quote/historic/historic.csv?secu=’ + str(secu) +
‘&min_time=1.1.2000&max_time=17.4.2021&trenner=%3B&go=Download’
historical_quotes = pd.read_csv(url_download, delimiter=“;”, decimal=“,”)
Das Wertpapier existiert erst seit dem 04.12.2015
Output:
Datum Erster Hoch Tief Schlusskurs Stuecke Volumen
0 2021-04-16 460.1580 465.5520 459.4135 465.2435 NaN NaN
1 2021-04-15 457.9710 460.0640 457.9170 459.5685 NaN NaN
… … … … … … …
1718 2015-12-07 163.5720 164.4280 163.1080 164.3945 NaN NaN
1719 2015-12-04 161.9405 163.6495 161.8135 163.5490 NaN NaN
Warum machst du keinen einmaligen Import per CSV und dann reichen die 30 Tage doch, wenn du PP einmal im Monat aufmachst
Ich bin davon ausgegangen, dass die historischen Kurse komplett überschrieben werden . Wenn nur neue hinzugefügt werden, ist das ausreichend. Danke
Fall jemand dieses Autoit-Script brauchen kann oder die Daten die ich herausfand …
Die Zeile wo Run steht, damit starte ich die ISIN direkt und erspare mir so die ISIN auf der Avira.de-Webseite einzugeben.
Per Browser Seitenquelltext suche ich dann nach “aic=” um die secu-Nummer für das jeweilige Wertpapier herauszufinden.
Beides ist innerhalb von 10 Sekunden erledigt.
Danach deaktivere ich die Run-Zeile indem ich es als Kommentar markiere.
Und teile der Schleife die secu-Nummer zu, indem ich die Variale $secu_9999 aktiviere, per entkommentieren.
Innerhalb von 5 Sekunden erledigt.
Bei der ersten Schleife wird nur bei den Börsenplätzen gesucht, bei denen ich die id-Nummer herausfand.
Ansonst kann man noch auf die zweite Schleife umschalten, die probiert alles blind durch.
Währung kann man auch umschalten, von EUR zu USD.
Mit meinem Script kann ich innerhalb von 30 Sekunden alle möglichen CSV-Listen runterladen,
ohne die Webseite berühren zu müssen.
;~ aic=
#include <Date.au3>
Local $i
Local $boerse_id_[36]
$boerse_id_[0] = 0 ;Duesseldorf
$boerse_id_[1] = 1 ;Frankfurt
$boerse_id_[2] = 2 ;Hamburg
$boerse_id_[3] = 3 ;Hannover
$boerse_id_[4] = 4 ;Muenchen
$boerse_id_[5] = 5 ;Stuttgart
$boerse_id_[6] = 6 ;Xetra
$boerse_id_[7] = 8 ;Fondsgesellschaft
$boerse_id_[8] = 16 ;L&S_RT
$boerse_id_[9] = 17 ;Berlin
$boerse_id_[10] = 20 ;Indizes_Schweiz
$boerse_id_[11] = 21 ;NYSE
$boerse_id_[12] = 24 ;Indizes_Hang_Seng
$boerse_id_[13] = 30 ;RBS_Indikation
$boerse_id_[14] = 33 ;Rohstoffe_Indikation
$boerse_id_[15] = 37 ;DB_Indikation_Indizes
$boerse_id_[16] = 39 ;Frankfurt_Zertifikate
$boerse_id_[17] = 40 ;Nasdaq
$boerse_id_[18] = 41 ;AMEX
$boerse_id_[19] = 47 ;Stuttgart(EUWAX)
$boerse_id_[20] = 58 ;Wien
$boerse_id_[21] = 60 ;Wien_Opt.&Fut.
$boerse_id_[22] = 71 ;Indizes_US
$boerse_id_[23] = 72 ;Indizes_Nasdaq
$boerse_id_[24] = 77 ;Indizes_Boerse_Wien
$boerse_id_[25] = 83 ;Nasdaq_OTC_Other
$boerse_id_[26] = 102 ;HypoVereinsbank
$boerse_id_[27] = 123 ;SIX_Swiss_Exchange
$boerse_id_[28] = 126 ;DB_Indikation_Rohstoffe
$boerse_id_[29] = 130 ;FXCM
$boerse_id_[30] = 131 ;Tradegate
$boerse_id_[31] = 136 ;pro aurum
$boerse_id_[32] = 162 ;Quotrix
$boerse_id_[33] = 172 ;ARIVA_Indikation_Rohstoffe
$boerse_id_[34] = 173 ;ARIVA_Indikation_Indizes
$boerse_id_[35] = 207 ;Gettex
Local $secu_9999 = 0
;~ Local $secu_9999 = "124460367" ; PL11BTS00015 11 Bit Studios
;~ Local $secu_9999 = "102110472" ; DE000FTG1111 _flatexDEGIRO
;~ Local $secu_9999 = "116183" ; AT000AGRANA3 Agrana Beteiligungs
;~ Local $secu_9999 = "41873" ; US0126531013 Albemarle Corporation
;~ Local $secu_9999 = "144480705" ; KYG017191142 Alibaba Group
;~ Local $secu_9999 = "269125" ; US02079K3059 Alphabet Inc A
;~ Local $secu_9999 = "247606" ; AT0000A18XM4 ams
;~ Local $secu_9999 = "23" ; AT0000969985 AT&S
;~ Local $secu_9999 = "126743379" ; KYG070341048 Baidu Inc
;~ Local $secu_9999 = "3430" ; US0846707026 Berkshire Hathaway B
;~ Local $secu_9999 = "152225" ; CNE100000296 BYD
;~ Local $secu_9999 = "100397716" ; PLOPTTC00011 CD Projekt
;~ Local $secu_9999 = "920" ; HK0941009539 China Mobile
;~ Local $secu_9999 = "48187" ; CNE1000002V2 China Telecom Corporation Limited
;~ Local $secu_9999 = "100195618" ; BMG210901242 China Water Affairs Group
;~ Local $secu_9999 = "116237635" ; AT00000FACC2 Facc
;~ Local $secu_9999 = "107840887" ; US30303M1027 Facebook
;~ Local $secu_9999 = "557" ; US3682872078 Gazprom ADR
;~ Local $secu_9999 = "100358677" ; KYG4402L1510 Hengan International
;~ Local $secu_9999 = "103516555" ; VGG456671053 HollySys Automation Technologies
;~ Local $secu_9999 = "410" ; US4581401001 Intel
;~ Local $secu_9999 = "148573414" ; KYG8208B1014 JD.COM INC
;~ Local $secu_9999 = "6957" ; US55315J1025 MMC Norilsk Nickel ADR
;~ Local $secu_9999 = "880993" ; AT0000A00Y78 Petro Welt Technologies
;~ Local $secu_9999 = "127985912" ; PLPLAYW00015 PlayWay
;~ Local $secu_9999 = "884924" ; AT0000A00XX9 Polytec Group
;~ Local $secu_9999 = "100611933" ; KYG875721634 TENCENT HOLDINGS LTD
;~ Local $secu_9999 = "969" ; US8816242098 Teva Pharma. Ind. LTD
;~ Local $secu_9999 = "727762" ; AT0000908504 Vienna Insurance Group
;~ Local $secu_9999 = "340" ; AT0000937503 Voestalpine
;~ Local $secu_9999 = "1753" ; DE0007664039 Volkswagen VZ
;~ Local $secu_9999 = "132005395" ; DE000A19MFH4 7,75% PHOTON ENERGY 17/22/+-0
;~ Local $secu_9999 = "141561392" ; US36257Y1091 GSX Techedu INC ADR
;~ Local $secu_9999 = "134563408" ; US46267X1081 IQIYI INC
;~ Local $secu_9999 = "116003387" ; US47215P1066 JD.COM INC ADR
;~ Local $secu_9999 = "1079" ; US67066G1040 Nvidia
;~ Local $secu_9999 = "100131736" ; IE00BYTBXV33 Ryanair Holdings plc
;~ Local $secu_9999 = "106367981" ; IE00B4NCWG09 Physical Silver ETC - iShares
;~ Local $secu_9999 = "100586593" ; DE000A0S9GB0 XETRA-GOLD
;~ Local $secu_9999 = "323" ; AT0000999982 ATX
;~ Local $secu_9999 = "101655195" ; AT0000A09FJ6 ATX TR performance
;~ Local $secu_9999 = "103506594" ; CNM0000001Y0 CHINA___FESTLAND___CSI 300
;~ Local $secu_9999 = "4151" ; HK0000004322 CHINA___HONGKONG___Hang Seng
;~ Local $secu_9999 = "290" ; DE0008469008 DAX performance
;~ Local $secu_9999 = "675" ; CH0009980894 SMI - Swiss Market Index
;~ Local $secu_9999 = "4325" ; US2605661048 USA___Dow Jones Ind. Average
;~ Local $secu_9999 = "5873" ; US6311011026 USA___NASDAQ 100
;~ Local $secu_9999 = "462" ; XC0009694271 USA___NASDAQ Composite
;~ Local $secu_9999 = "" ; CNM000000019 CHINA___FESTLAND___SSE Composite
;~ Local $secu_9999 = "32119" ; XC0009655157 INDEX___GOLD
;~ Local $secu_9999 = "" ; US12497K1007 INDEX___VIX
;~ Local $secu_9999 = "4152" ; US78378X1072 USA___S&P 500
;~ Local $secu_9999 = "102975963" ; LU0489337690 EUROPA___Xtrackers FTSE EPRA/NAREIT Developed Europe Real Estate UCITS ETF 1C
;~ Local $secu_9999 = "226974" ; XC0009692739 INDEX___MSCI-World
;~ Local $secu_9999 = "130984379" ; IE00BDFL4P12 WELT___iShares Diversified Commodity Swap UCITS ETF
;~ Local $secu_9999 = "134911050" ; LU1681045370 WELT___MSCI Emerging Markets - Amundi
;~ Local $secu_9999 = "102535008" ; IE00B4L5Y983 WELT___MSCI World - iShares
;~ Local $secu_9999 = "116671059" ; IE00BJ0KDQ92 WELT___MSCI World - Xtrackers
;~ Local $secu_9999 = "117857852" ; US00214Q1040 ARK ETF TR.-INNOVAT.ETF
;~ Local $secu_9999 = "117165" ; LU0150613833 ME Fonds - Special Values - A EUR DIS
;~ Local $secu_9999 = "143212160" ; DE000A2PF0V5 OSPI-Investorenfonds - R EUR DIS
;~ Local $secu_9999 = "26734" ; LU0112803316 Swisscanto(LU)Pf.Fd.Resp.Balance(CHF)AA
;~ aic=
;~ Run("C:\Programme\Mozilla Firefox\firefox.exe -new-window https://www.ariva.de/CNM0000001Y0/historische_kurse","",@SW_MAXIMIZE)
If $secu_9999 = 0 Then Exit
Local $currency = "EUR"
;~ Local $currency = "USD"
Local $Suche = 1
;~ Local $Suche = 2
If $Suche = 1 Then
For $i = 0 To UBound($boerse_id_) - 1
Run("C:\Programme\Mozilla Firefox\firefox.exe " _
& "https://www.ariva.de/quote/historic/historic.csv?secu=" _
& $secu_9999 _
& "&boerse_id=" _
& $boerse_id_[$i] _
& "&clean_split=1&clean_payout=&clean_bezug=1¤cy=" _
& $currency _
& "&min_time=" _
& "2.1.1970" _
& "&max_time=" _
& _NowDate() & _
"&trenner=%3B&go=Download")
Sleep(10)
Next
Else
;~ consolewrite($i&@LF)
For $i = 0 To 250 Step 1
Run("C:\Programme\Mozilla Firefox\firefox.exe " _
& "https://www.ariva.de/quote/historic/historic.csv?secu=" _
& $secu_9999 _
& "&boerse_id="&$i _
& "&clean_split=1&clean_payout=&clean_bezug=1¤cy=" _
& $currency _
& "&min_time=" _
& "2.1.1970" _
& "&max_time=" _
& _NowDate() & _
"&trenner=%3B&go=Download")
Sleep(10)
Next
EndIf
Exit
Kann mir jemand erklären, welchen unterschied es in dem Programm macht, ob man historische Daten von Yahoo oder z.B. Alpha Vantage bezieht? Aktuell sehe ich nur, das man Hochs und Tiefs bei AV bekommt und bei Yahoo nicht, aber kann man in Portfolio-Performance damit etwas anfangen? Welche Quelle sollte man für “normale” Aktien am besten nehmen?