Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert sind; Die von diesem Forum gesetzten Cookies düfen nur auf dieser Website verwendet werden und stellen kein Sicherheitsrisiko dar. Cookies auf diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Kostenlose Historische EOD Daten
#31
Notiz 

RE: Kostenlose Historische EOD Daten

danke für die links zu den webseiten, sind für mich hilfreich :-)
EOD od. RT (indikative) gibt es via webscraping.

Einfache Lösung -> excel verwenden => 2013 Hat eingebauten engine und nur eingabe der webadresse plus einen check im Feld (gelber Pfeil) notwendig zu checken.

Excel Menue-> Daten->ext.Daten abrufen->aus dem Web-> usw...
webseite eben nochmals ausprobiert-> https://www.ls-tc.de/de/
Abfragen accepted markieren und Daten Importieren.

Falls es nicht klappt- info ins Forum stellen od. Nachricht an mich Tup


Angehängte Dateien    
#32
Notiz 

RE: Kostenlose Historische EOD Daten

(13.02.2019, 16:26)Noni-Binder schrieb: Excel Menue-> Daten->ext.Daten abrufen->aus dem Web-> usw...
webseite eben nochmals ausprobiert-> https://www.ls-tc.de/de/
Abfragen accepted markieren und Daten Importieren.

Ja die sauge ich auch in RT mit Python. Tradegate steht noch auf der Todo Liste.
#33

RE: Kostenlose Historische EOD Daten

#Faultier
hier ist noch ein link mit weiteren postings

https://www.trading-stocks.de/thread-210.html
#34
Notiz 

RE: Kostenlose Historische EOD Daten

(13.02.2019, 18:14)atze2000 schrieb:
(13.02.2019, 16:26)Noni-Binder schrieb: Excel Menue-> Daten->ext.Daten abrufen->aus dem Web-> usw...
webseite eben nochmals ausprobiert-> https://www.ls-tc.de/de/
Abfragen accepted markieren und Daten Importieren.

Ja die sauge ich auch in RT mit Python. Tradegate steht noch auf der Todo Liste.

atze2000 - würdest Du diese Saugnäpfe in diesen thread stellen wollen?
(könnte vieleicht doch zu weiteren Aktivitäten führen Biggrin Smile Rolleyes
#35
Notiz 

RE: Kostenlose Historische EOD Daten

(13.02.2019, 18:41)Noni-Binder schrieb:
(13.02.2019, 18:14)atze2000 schrieb:
(13.02.2019, 16:26)Noni-Binder schrieb: Excel Menue-> Daten->ext.Daten abrufen->aus dem Web-> usw...
webseite eben nochmals ausprobiert-> https://www.ls-tc.de/de/
Abfragen accepted markieren und Daten Importieren.

Ja die sauge ich auch in RT mit Python. Tradegate steht noch auf der Todo Liste.

atze2000 - würdest Du diese Saugnäpfe in diesen thread stellen wollen?
(könnte vieleicht doch zu weiteren Aktivitäten führen Biggrin Smile Rolleyes

Gibt nachher ein Snippet dazu Wink
#36

RE: Kostenlose Historische EOD Daten

Ich hole mir bspw. mit dem HTML Agility Pack via C# die
Daten jeder gewünschten Aktie von finanzen.net - sind keine Realtime Daten,
sondern 15 Min, aber Realtime brauchte ich bisher eben auch nicht.

Die Auswertung mach ich aber immer noch mit Excel - ich hatte schon mal irgendwo drauf hingewiesen
meine ich, das neue Excel hat ja als Datentyp jetzt Stockdata für fast alle US Aktien,
mit allen möglichen Daten wie Mitarbeiterzahl und was weiss ich nicht noch alles.

Ist nur nicht so einfach das in DE sitzend zu aktivieren, da muss ein Sprachpaket
installieren, dann erscheint der Datentyp auch - ist natürlich das einfachste,
muss man sich selber ja nicht mehr um die Kursversorgung kümmern Biggrin
#37
Notiz 

RE: Kostenlose Historische EOD Daten

Code:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import urllib
import re
import time
import os
import os.path
import string

sleeptime1 = 10 #20
sleeptime2 = 2

StartStunde = 8
EndStunde = 22

symbollist = ["https://www.ls-tc.de/de/aktien/deutschland/dax"]
                

def check_data(source,a,b):
    fobj = open("Kursdaten/"+source+".csv", "r")
    i = 0
    buf = []
    for line in fobj:
        i = i +1
        buf.append(line)
    fobj.close()
    data = buf[i-1]
    daten_feld = data.split(";")
    if a == daten_feld[1] or b == daten_feld[2]:
        return False
    else:
        return True

def check_double_data(bid,ask):
    buf = []
    fobj = open("Kursdaten/"+source+".csv", "r")
    for line in fobj:
        buf.append[line]
    

def WriteData(wert,Datum,ti,bi,aa,vo):
    if check_data(wert,ti,bi) == True: # and check_double_data() == True: Muss gemacht werden
        if os.path.exists("Kursdaten/"+wert+".csv"):
            fobj = open("Kursdaten/"+wert+".csv","a")
            fobj.write(Datum+";"+ti+";"+bi+";"+aa+";"+vo+"\n")
            fobj.close()
            #print stri[1],";",Datum,";",ti,";",bi,";",aa,";",vo
        else:
            fobj = open("Report/"+"Error"+".csv","a")
            fobj.write(wert+";"+Datum+";"+ti+";"+bi+";"+aa+";"+vo+"\n")
            fobj.close()
            
def format_filename(s):
   """Take a string and return a valid filename constructed from the string.
        Uses a whitelist approach: any characters not present in valid_chars are
        removed. Also spaces are replaced with underscores.
        
        Note: this method may produce invalid filenames such as ``, `.` or `..`
        When I use this method I prepend a date string like '2009_01_15_19_46_32_'
        and append a file extension like '.txt', so I avoid the potential of using
        an invalid filename.
        
        """
   valid_chars = "-_.() %s%s" % (string.ascii_letters, string.digits)
   filename = ''.join(c for c in s if c in valid_chars)
   filename = filename.replace(' ','_') # I don't like spaces in filenames.
   filename = filename.replace('.','_') # Und ich keine Punkte.
   return filename.lower()


def scrap():
    i = 0
    idx = 0
    while i <> 1:
        Stunde = int(time.strftime("%H"))
        Minute = int(time.strftime("%M"))
        time.sleep(0.01)
        os.system("clear")
        print "Ausserhalb der Handelszeiten!!"
        if Stunde >= StartStunde and Stunde <= EndStunde:
            os.system("clear")
            print "++++++++++++++++++++"
            time.sleep(sleeptime1)
            os.system("clear")
            print "####################"
            #=== URL Lesen ===
            for i in range(0,len(symbollist),1):
                os.system("clear")
                print "++++++++++++++++++++"
                #time.sleep(sleeptime1)
                os.system("clear")
                print "####################"
                time.sleep(sleeptime2)
                htmlfile = urllib.urlopen(symbollist[i])
                htmltext = htmlfile.read()
                #=== HTML Daten Tags ===
                Name    = '<a href="/de/aktie/(.+?)</a>'
                Geld    = 'bidWithCurrencySymbol" decimals="4">(.+?)&nbsp;€</span>'
                Brief   = 'askWithCurrencySymbol" decimals="4">(.+?)&nbsp;€</span>'
                Zeit    = 'midTime" decimals="4">(.+?)</span>'
                Volumen = 'tradeCumulativeTurnoverWithCurrencySymbol" decimals="4">(.+?)&nbsp;€</span>'
                #=== Daten Suchen ===
                patternname = re.compile(Name)
                patternbid  = re.compile(Geld)
                patternask  = re.compile(Brief)
                patterntime = re.compile(Zeit)
                patternvol  = re.compile(Volumen)
                #=== Daten Extrahieren  ===
                Bezeichnung = re.findall(patternname,htmltext)
                BID         = re.findall(patternbid,htmltext)
                ASK         = re.findall(patternask,htmltext)
                TIME        = re.findall(patterntime,htmltext)
                VOL         = re.findall(patternvol,htmltext)
                Datum = str(time.strftime("%d.%m.%Y"))
                for i in range(0,len(Bezeichnung),1):
                    na = Bezeichnung[i]
                    print na
                    bi = BID[i]
                    aa = ASK[i]
                    ti = TIME[i]
                    vo = VOL[i]
                    stri = na.split(">")
                    wert = stri[1]
                    korrekterfilename = format_filename(wert)
                    if idx == 0:
                        fobj = open("Kursdaten/"+korrekterfilename+".csv","a")
                        fobj.write(Datum+";"+ti+";"+bi+";"+aa+";"+vo+"\n")
                        fobj.close()
                        #print stri[1],";",Datum,";",ti,";",bi,";",aa,";",vo
                    elif idx == 1:
                        WriteData(korrekterfilename,Datum,ti,bi,aa,vo)
                    #wert = ""
            idx = 1 # schaltet nach dem ersten schreiben checkdata frei

                    
            

scrap()


Hab den Code vor vielen Jahren geschrieben, müsst mal überarbeitet werden, aber läuft noch.
#38
Notiz 

RE: Kostenlose Historische EOD Daten

(13.02.2019, 20:21)atze2000 schrieb:
Code:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import urllib
import re
import time
import os
import os.path
import string

sleeptime1 = 10 #20
sleeptime2 = 2

StartStunde = 8
EndStunde = 22

symbollist = ["https://www.ls-tc.de/de/aktien/deutschland/dax"]
                

def check_data(source,a,b):
    fobj = open("Kursdaten/"+source+".csv", "r")
    i = 0
    buf = []
    for line in fobj:
        i = i +1
        buf.append(line)
    fobj.close()
    data = buf[i-1]
    daten_feld = data.split(";")
    if a == daten_feld[1] or b == daten_feld[2]:
        return False
    else:
        return True

def check_double_data(bid,ask):
    buf = []
    fobj = open("Kursdaten/"+source+".csv", "r")
    for line in fobj:
        buf.append[line]
    

def WriteData(wert,Datum,ti,bi,aa,vo):
    if check_data(wert,ti,bi) == True: # and check_double_data() == True: Muss gemacht werden
        if os.path.exists("Kursdaten/"+wert+".csv"):
            fobj = open("Kursdaten/"+wert+".csv","a")
            fobj.write(Datum+";"+ti+";"+bi+";"+aa+";"+vo+"\n")
            fobj.close()
            #print stri[1],";",Datum,";",ti,";",bi,";",aa,";",vo
        else:
            fobj = open("Report/"+"Error"+".csv","a")
            fobj.write(wert+";"+Datum+";"+ti+";"+bi+";"+aa+";"+vo+"\n")
            fobj.close()
            
def format_filename(s):
   """Take a string and return a valid filename constructed from the string.
        Uses a whitelist approach: any characters not present in valid_chars are
        removed. Also spaces are replaced with underscores.
        
        Note: this method may produce invalid filenames such as ``, `.` or `..`
        When I use this method I prepend a date string like '2009_01_15_19_46_32_'
        and append a file extension like '.txt', so I avoid the potential of using
        an invalid filename.
        
        """
   valid_chars = "-_.() %s%s" % (string.ascii_letters, string.digits)
   filename = ''.join(c for c in s if c in valid_chars)
   filename = filename.replace(' ','_') # I don't like spaces in filenames.
   filename = filename.replace('.','_') # Und ich keine Punkte.
   return filename.lower()


def scrap():
    i = 0
    idx = 0
    while i <> 1:
        Stunde = int(time.strftime("%H"))
        Minute = int(time.strftime("%M"))
        time.sleep(0.01)
        os.system("clear")
        print "Ausserhalb der Handelszeiten!!"
        if Stunde >= StartStunde and Stunde <= EndStunde:
            os.system("clear")
            print "++++++++++++++++++++"
            time.sleep(sleeptime1)
            os.system("clear")
            print "####################"
            #=== URL Lesen ===
            for i in range(0,len(symbollist),1):
                os.system("clear")
                print "++++++++++++++++++++"
                #time.sleep(sleeptime1)
                os.system("clear")
                print "####################"
                time.sleep(sleeptime2)
                htmlfile = urllib.urlopen(symbollist[i])
                htmltext = htmlfile.read()
                #=== HTML Daten Tags ===
                Name    = '<a href="/de/aktie/(.+?)</a>'
                Geld    = 'bidWithCurrencySymbol" decimals="4">(.+?)&nbsp;€</span>'
                Brief   = 'askWithCurrencySymbol" decimals="4">(.+?)&nbsp;€</span>'
                Zeit    = 'midTime" decimals="4">(.+?)</span>'
                Volumen = 'tradeCumulativeTurnoverWithCurrencySymbol" decimals="4">(.+?)&nbsp;€</span>'
                #=== Daten Suchen ===
                patternname = re.compile(Name)
                patternbid  = re.compile(Geld)
                patternask  = re.compile(Brief)
                patterntime = re.compile(Zeit)
                patternvol  = re.compile(Volumen)
                #=== Daten Extrahieren  ===
                Bezeichnung = re.findall(patternname,htmltext)
                BID         = re.findall(patternbid,htmltext)
                ASK         = re.findall(patternask,htmltext)
                TIME        = re.findall(patterntime,htmltext)
                VOL         = re.findall(patternvol,htmltext)
                Datum = str(time.strftime("%d.%m.%Y"))
                for i in range(0,len(Bezeichnung),1):
                    na = Bezeichnung[i]
                    print na
                    bi = BID[i]
                    aa = ASK[i]
                    ti = TIME[i]
                    vo = VOL[i]
                    stri = na.split(">")
                    wert = stri[1]
                    korrekterfilename = format_filename(wert)
                    if idx == 0:
                        fobj = open("Kursdaten/"+korrekterfilename+".csv","a")
                        fobj.write(Datum+";"+ti+";"+bi+";"+aa+";"+vo+"\n")
                        fobj.close()
                        #print stri[1],";",Datum,";",ti,";",bi,";",aa,";",vo
                    elif idx == 1:
                        WriteData(korrekterfilename,Datum,ti,bi,aa,vo)
                    #wert = ""
            idx = 1 # schaltet nach dem ersten schreiben checkdata frei

                    
            

scrap()


Hab den Code vor vielen Jahren geschrieben, müsst mal überarbeitet werden, aber läuft noch.

danke für diese Info, ich werd dieses script mal ausprobieren - wird aber ein paar Tage dauern - Tup
#39

RE: Kostenlose Historische EOD Daten

zum Markieren von Zellen oder Bereichen oder...gibt diese webseite eine anwendbare Farbdarstellung/codes für excel vba...eben nochmals probiert...läuft.. :-)

http://dmcritchie.mvps.org/excel/colors.htm
#40
Notiz 

RE: Kostenlose Historische EOD Daten

(14.02.2019, 10:40)Noni-Binder schrieb: zum Markieren von Zellen oder Bereichen oder...gibt diese webseite eine anwendbare Farbdarstellung/codes für excel vba...eben nochmals probiert...läuft.. :-)

  http://dmcritchie.mvps.org/excel/colors.htm

Kann man das nicht auch einfach mit der "bedingten Formatierung" lösen oder wofür nutzt du die Farbdarstellung ?


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
Notiz Open Source Tools und Daten Lancelot 43 11.455 09.01.2024, 15:08
Letzter Beitrag: Lancelot
Notiz suche historische Leitzinsen der Bundesbank seit 1965 frank 2 2.545 22.09.2020, 19:55
Letzter Beitrag: muchmoney
Notiz EOD Daten Feeds atze2000 7 8.773 08.02.2019, 12:59
Letzter Beitrag: Noni-Binder
Notiz Historische Indexzusammensetzung atze2000 4 5.431 31.01.2019, 10:31
Letzter Beitrag: pjf
Notiz Free Future Daten atze2000 0 2.156 11.01.2019, 13:27
Letzter Beitrag: atze2000
Notiz Cot Daten atze2000 2 3.500 10.01.2019, 19:46
Letzter Beitrag: atze2000

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste