Quellen für historische Kurse

Hallo,

ja freichlich. Es handelt sich dabei um die Saras S.p.a WKN A0JL4P.

Gruß, HjP

Saras SpA (SRS) Historische Preise - Investing.com z.B.

yahoo-Symbol wäre SRS.MI

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 :blush:

Grüße
Fabian

1 Like

@Fabioni

Gute Idee. Zwei Verbesserungsvorschläge:

  1. PP kann den Zeitraum variabel halten, etwa: “heute vor einem Monat” ( {TODAY:dd.MM.yyyy:-P1M} im folgenden Link).
  2. 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.

  1. 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 :slight_smile:

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.

3 Likes

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 :slight_smile:

3 Likes

Ich bin davon ausgegangen, dass die historischen Kurse komplett überschrieben werden :grinning_face_with_smiling_eyes:. Wenn nur neue hinzugefügt werden, ist das ausreichend. Danke :slight_smile:

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&currency=" _
		& $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&currency=" _
		& $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?

Solange die Kurse jeweils “richtig” sind erstmal gar keinen!

Je nach Wertpapier und Währung stehen die Kursdaten vielleicht nicht überall zur Verfügung. Aber alle Berechnungen bauen derzeit nur auf der Kurshistorie auf. Wo du die her bekommst ist dabei vollkommen egal.

Das hängt davon ab, wie du die Aktie angelegt hast. Ich für meinen Teil lege ausländische Aktien in ihrer Heimatwährung an. Damit brauche ich dann natürlich auch einen Kurslieferanten, der mir dies liefert. Ich handhabe das derzeit so, dass ich alle Kurse in EUR (soweit verfügbar) von Ariva hole und für alle anderen Kurse erstmal auf Yahoo gucke, bevor ich mir andere Quellen suche.

Hallo zusammen,

ich versuche jetzt schon seit einer Stunde die historischen Kurse zum Vanguard FTSE Developed World - IE00BKX55T58 einzupflegen. Es gelingt mir einfach nicht. Ich kann über verschiedene Webseiten wie erklärt das einfügen, aber da habe ich dann immer nur 1 Monat rückwirkend oder so.

Was auch komisch ist, dass bei meinen anderen ETFs alles da ist, nur bei diesem nicht. Kann mir da bitte jemand helfen?

Danke.

Oder über Yahoo Finance > Börsenplatz: VDEV.L
Geht bis 30.09.2014 zurück.

Mit kleinen Nachteilen: ist in Pfund, die letzte Woche fehlt (laut deinem Screenshot) und als allerletzten Wert scheint Yahoo Finance einen Dollarbetrag hineingeschmuggelt zu haben …

@ chirlu
Ich kann ja nicht erahnen in welcher Währung er sein ETF anlegt.
Dann hier in €uro, inklusive letzter Woche, geht aber nur zurück bis 31.10.2017

Funktioniert leider nicht. Es ist immer nur der Kurs vom aktuellen Tag da:

Hallo zusammen,
kann ich auch den Kurs irgendwie manuell eingeben, wenn was nicht börslich gehandelt wird?
Für eure kurze Info bedanke ich mich im Voraus und bis bald,
Tobias