Mitglieder: 80.572 | Beiträge: 2.510.195 | Online: 23 Benutzer u. 325 Gäste | Chat: 0 | Neues Mitglied: Drewdu
Aktienboard > Trading und Finanzen > Technische Analyse > Börsensoftware & Kursversorgung > Kostenlose Yahoo-Daten in Excel

Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Ansicht
Alt 25.11.2011, 21:42   #1
Bazinga!
 
Benutzerbild von Smoke
 
Registriert seit: 29.08.2009
Ort: ein Dorf in NRW
Beiträge: 1.888
Wikibeiträge: 0
Status: Smoke ist offline
Standard Kostenlose Yahoo-Daten in Excel

Hallo zusammen,

dies soll eine Sammlung an Excel-Funktionen (UDF’s) werden, die es ermöglichen kostenlos „kostenlose“ Yahoo-Daten in Excel zu ziehen.

Ich hatte bereits in einem anderen Thread 2 Funktionen vorgestellt, da dieser Thread allerdings einen anderen Ursprung hat dachte ich mir, es wäre sinnvoll hier eine Art Sammelthread für Funktionen, Fragen, Anregungen und Verbesserungen zu erstellen.

Da ich die beiden Hauptfunktionen bereits ausführlich beschrieben habe, möchte ich dies an dieser Stelle nicht wiederholen.

Hier der Link zu KURS_AB()
KURS_AB

Hier der Link zu KURSH_AB()
KURSH_AB

Gruß Smoke
 
  Mit Zitat antworten
Alt 25.11.2011, 22:02   #2
Bazinga!
 
Benutzerbild von Smoke
 
Registriert seit: 29.08.2009
Ort: ein Dorf in NRW
Beiträge: 1.888
Wikibeiträge: 0
Status: Smoke ist offline
Standard AW: Kostenlose Yahoo-Daten in Excel

Zitat:
Zitat von Baracuda49 Beitrag anzeigen
Danke für die VBA-Scripts. Damit kann ich gut die Kurse von Yahoo abrufen. Klappt grundsätzlich gut.

Kann ich damit auch weitere Daten zu dem Papier abrufen? Mich interessiert z.B. Kurszeit, Geldkurs, Briefkurs. Kann man das Script so verändern, dass auch diese Werte abrufbar sind.

Ich muss gestehen, dass VBA für mich böhmische Dörfer sind.
Hallo,

Bid und Ask haben im Prinzip das selbe Format wie KURS_AB(). Das Ergebnis wird ein Preis sein. Somit muss eigentlich nur der Link im Code und der Name der Funktion entsprechend angepasst werden. Daher poste ich den Code nicht neu.
Beispiel für BID_AB()
Link wie folgt angepasst: http://download.finance.yahoo.com/d/quotes.csv?s="& Symbol & "&f=b&e=.csv
Name der Funktion an 3 Codestellen angepasst: KURS_AB <= => BID_AB

Link fürs Ask:
http://download.finance.yahoo.com/d/quotes.csv?s="& Symbol & "&f=a&e=.csv

Bei der Zeit wird es komplizierter.
Bei der Ausgabe dieses Wertes wird ein anderes Format benutzt. Yahoo stellt die Uhrzeit im US-Format bereit (05:20 PM). Dies erfordert eine Formatierung der Ergebnisses. Ich gehe mal von der Benutzung einer deutschen Excelversion aus (Format HH:MM:SS).
Code:
Public Function TIME_AB(Symbol As String) As Date
On Error GoTo Fehler
Dim Kurs As String
Dim xml
    Set xml = CreateObject("MSXML2.ServerXMLHTTP")
        xml.Open "GET", "http://download.finance.yahoo.com/d/quotes.csv?s=" _
                        & Symbol & "&f=t1&e=.csv", False
        xml.send ""
        Kurs = RTrim(xml.responseText)
        Kurs = Replace(Kurs, Chr$(10), "")
        Kurs = Replace(Kurs, Chr$(13), "")
        Kurs = Replace(Kurs, """", "")

        Kurs = TimeValue(Kurs) + TimeSerial(6, 0, 0)
        Kurs = Format(Kurs, "hh:mm")
        TIME_AB = Kurs
  
    Set xml = Nothing
    Exit Function
    
Fehler:
    TIME_AB = 0
    Set xml = Nothing
    Exit Function
End Function
Miniaturansicht angehängter Grafiken
bidask.png  

time_ab.png  

Angehängte Dateien
Dateityp: zip ASK-BID-TIME.zip (106,7 KB, 529x aufgerufen)
 
  Mit Zitat antworten
Alt 26.11.2011, 13:50   #3
ist gelegentlich hier
 
Registriert seit: 29.11.2009
Beiträge: 9
Wikibeiträge: 0
Status: Baracuda49 ist offline
Standard AW: Kostenlose Yahoo-Daten in Excel

Smoke, herzlichen Dank für die hervorragende Arbeit. Ich finde, Du hast den Weg zu einer guten Datenquelle aufgemacht.

Deine VB-Scripts regen mich irgendwie an, nach langer Zeit mal wieder in Basic reinzuschnuppern. Mal sehen, was ich da noch "anrichten" kann.
 
  Mit Zitat antworten
Alt 27.11.2011, 14:14   #4
ist gelegentlich hier
 
Registriert seit: 29.11.2009
Beiträge: 9
Wikibeiträge: 0
Status: Baracuda49 ist offline
Standard AW: Kostenlose Yahoo-Daten in Excel

Dank der Programmierung von Smoke habe ich mich auch mal dran gemacht, das Verfahren zum Abruf von Yahoo-Kursen für mich zu optimieren. Es ist eine Tabelle entstanden, in die nur in der ersten Spalte das entsprechende Yahoo-Symbol eingetragen werden muss. Die Inhalte aller übrigen Spalten werden denn durch das VB-Script von den Yahoo-Seiten gezogen. Die Tabelle hänge ich hier dran: [ATTACH]FI_Kurse von Yahoo holen[/ATTACH]. Damit die Sache mit den Kennzeichen klarer wird, kommt hier auch noch die Übersicht [ATTACH]Tabelle[/ATTACH] von Yahoo.

Funktionsweise der Excel-Tabelle:
Eingetragen wird in die erste Spalte lediglich das Yahoo-Symbol. Der Rest wird von dem VB-Script erledigt. Als Vorlage diente mir das Script von Smoke. Geändert habe ich es in der Weise, dass nun an die Funktion "KURS_AB" 2 Parameter übergeben werden. Par1 ist das Yahoo.Symbol (z.B. "VOW3.SG" für Volkswagen Vz und Börsenplatz Stuttgart"). Par2 ist das Kennzeichen von Yahoo (z.B. "b" = Bid). Die Tabelle soll den Vorteil haben, dass mit einer Funktion (hier "KURS_AB") eine komplette Tabelle mit allen möglichen Werten eines Wertpapieres aufgebaut werden kann.

Ich muss hier bemerken, dass die Tabelle durchaus Fehler beinhalten kann. Mein VB-Kenntnisse besteht nur aus wenigen Grundlagenkenntnissen. Vermutlich könnte man das VB-Script auch noch deutlich optimieren. Ohne das Script von Smoke wäre ich garnicht soweit gekommen. Deshalb an dieser Stelle noch mal ein herzliches Dankeschön, für die tolle Arbeit.
Angehängte Dateien
Dateityp: zip FI_Kurse von Yahoo holen.zip (15,5 KB, 1186x aufgerufen)
Dateityp: pdf Yahoo Kennzeichen.pdf (61,7 KB, 1448x aufgerufen)
 
  Mit Zitat antworten
Alt 27.11.2011, 14:29   #5
Bazinga!
 
Benutzerbild von Smoke
 
Registriert seit: 29.08.2009
Ort: ein Dorf in NRW
Beiträge: 1.888
Wikibeiträge: 0
Status: Smoke ist offline
Standard AW: Kostenlose Yahoo-Daten in Excel

Hallo Baracuda49,

ich finde es toll, dass Du das Thema aufgreifst und dich aktiv beteiligst.

Vielleicht entwickelt sich am Ende ein tolles Tool angepasst auf die Arbeitsweise einzelner User. Du hast hier sehr toll aufgezeigt, wie man die gelieferten Werkzeuge an SEINE Bedürfnisse anpasst.

An Deiner Datei ist mir aufgefallen, dass alle Werte als Text ausgegeben werden. Das hat den Nachteil, dass man mit den gelieferten "Strings" nicht ohne weitere Modifikation rechnen kann. Beispiel: Versuch mal die Summe aus Spalte C zu errechnen.

Ursache ist die Entfernung der Funktionsdeklaration "As Double". Diese sorgt dafür, dass du eine Zahl erhältst.
Ich könnte mir in Deiner Datei 2 Funktionen vorstellen. Eine "As Double" und eine "As Date". So erhältst Du Werte mit denen du "rechnen" kannst...

Gruß Smoke
 
  Mit Zitat antworten
Alt 27.11.2011, 14:49   #6
Bullenreiter
 
Benutzerbild von toppi
 
Registriert seit: 06.09.2002
Ort: Sometimes/Baleares
Beiträge: 8.022
Wikibeiträge: 0
Status: toppi ist offline
Standard AW: Kostenlose Yahoo-Daten in Excel

Vielleicht könnt ihr euch viel Arbeit sparen, wenn ihr euch dieses kostenlose Tool mal anschaut. Ist zwar schon uralt, funktioniert aber immer noch:

http://www.gummy-stuff.org/Yahoo-data.htm


__________________
Versuchungen sollte man nachgeben. Wer weiß, ob sie wiederkommen! Oscar Wilde
www.followthetrend.eu
 
  Mit Zitat antworten
Alt 27.11.2011, 14:51   #7
Bazinga!
 
Benutzerbild von Smoke
 
Registriert seit: 29.08.2009
Ort: ein Dorf in NRW
Beiträge: 1.888
Wikibeiträge: 0
Status: Smoke ist offline
Standard AW: Kostenlose Yahoo-Daten in Excel

Hallo zusammen,

man kann mehrere Funktionen in einer Funktion binden und dann über einen optionalen Parameter angeben, welche Abfrage gestartet werden soll.

Hier eine Funktion die 4 Funktionen über einen optionalen Parameter vereint.
Als gutes Beispiel habe ich OHLC gewählt.
„O“ = Open
„H“ = High
„L“ = Low
„C“ = Close bzw. letzter Kurs

Die Syntax der Funktion sieht wie folgt aus:
=OHLC_AB(„Symbol“;“Typ“)
…wobei „Typ“ optional ist. Wird dieser Parameter nicht angegeben wird automatisch „C“ zurückgegeben.

Hier der Code:


Code:
Option Explicit
  Public Function OHLC_AB(Symbol As String, Optional Typ As String) As Double
   
  On Error GoTo Fehler
  Dim Kurs As String
  Dim strtyp As String
  Dim xml
      Select Case Typ
          Case "C"
              strtyp = "l1"
          Case "H"
              strtyp = "h"
          Case "L"
              strtyp = "g"
          Case "O"
              strtyp = "o"
          Case ""
              strtyp = "l1"
      End Select
      Set xml = CreateObject("MSXML2.ServerXMLHTTP")
          xml.Open "GET", "http://download.finance.yahoo.com/d/quotes.csv?s=" _
                          & Symbol & "&f=" & strtyp & "&e=.csv", False
          xml.send ""
          Kurs = RTrim(xml.responseText)
          Kurs = Replace(Kurs, Chr$(10), "")
          Kurs = Replace(Kurs, Chr$(13), "")
              Select Case Right(Symbol, 2)
                  Case ".L"
                      Kurs = Replace(Kurs, ".", ",") / 100
                  Case Else
                      Kurs = Replace(Kurs, ".", ",")
              End Select
          
          OHLC_AB = Kurs
    
      Set xml = Nothing
      Exit Function
      
  Fehler:
      OHLC_AB = 0
      Set xml = Nothing
      Exit Function
  End Function
Dies lässt sich natürlich beliebig erweitern...

Gruß Smoke
Miniaturansicht angehängter Grafiken
ohlc.png  

Angehängte Dateien
Dateityp: zip OHLC_AB.zip (33,5 KB, 386x aufgerufen)
 
  Mit Zitat antworten
Alt 27.11.2011, 15:14   #8
ist gelegentlich hier
 
Registriert seit: 29.11.2009
Beiträge: 9
Wikibeiträge: 0
Status: Baracuda49 ist offline
Standard AW: Kostenlose Yahoo-Daten in Excel

@Smoke, danke für Deine Infos. Für die Herausname von "as double" hatte ich mich entschieden, weil ich dann mit einer Funktion auskomme. Mir ist aber klar, dass ich dann auch Zahlen als Text erhalte. Werde das also bei nächster Gelegenheit ändern.

@toppi, auch an Dich ein Dankeschön, für den Link. Da sindwohl tatsächlich Excel-Tabellen vorhanden, die man nutzen bzw. auf seine persönlichen Verhältnisse anpassen kann.

Super finde ich hier aber schon einmal, dass etwas in die Gänge gekommen ist, dass evtl. für viele sehr nützlich sein kann.

Nach wie vor bin ich an weiteren zuverlässigen Datenquellen interessiert. Ganz toll wären natürlich Quellen, die auch RT-Kurse aus Deutschland liefern. Dafür nutze ich derzeit Web-Seiten, die aber hin und wieder Probleme bereiten, weil mal wieder der Inhalt geändert wurde. Zudem beschränken sich dort RT-Kurse meistens auf Börse Stuttgar, L&S sowie Tradegate.
 
  Mit Zitat antworten
Alt 27.11.2011, 23:52   #9
Bazinga!
 
Benutzerbild von Smoke
 
Registriert seit: 29.08.2009
Ort: ein Dorf in NRW
Beiträge: 1.888
Wikibeiträge: 0
Status: Smoke ist offline
Standard AW: Kostenlose Yahoo-Daten in Excel

Hallo,

@toppi
Toller Link, kannte ich noch nicht!
Zum screenen sicher eine tolle Möglichkeit der Massenabfrage. Jedoch werden auch hier nur reine Zahlen geliefert die ggf. wieder per c&p ins Handelsjournal übertragen werden müssen. Mir ging es eigentlich darum, direkt via UDF einen bestimmten Wert in die Tabelle zu bekommen. Ohne Add-In oder externes Tool.
Die Tabelle zeigt aber schön auf was so alles möglich ist.
Link gespeichert und Pöng!

@Baracuda49,
deine Tabelle hat auch mich wiederum zum Denken angeregt. Dein Gedanke alles via „Schalter“ in eine Funktion zu packen ist doch recht interessant. So kann viel abgefragt werden (Jeder muss sich natürlich sein eigenes Gerüst anlegen…).

Der Gedanke 1 Formel + Schalter hat was

Da jedoch verschiedene Ausgabewerte vorhanden sind, und ich kein Freund von Strings in der Tabelle bin, hier eine Möglichkeit nach Deinem Schema an Zahlenwerte zu kommen:

Grundgedanke:
Eine Funktion die Symbol und Schalter (tag) beinhaltet, jedoch intern auf verschiedene Funktionen zurückgreift. Hauptfunktion als „Variant“ mit der globalen Variable „tag“ die entweder ein „Double“, „Date“, „String“ oder ein „Double (Prozent)“ wird. Damit wären alle möglichen Yahoo-tags abgefangen.

Syntax wie bei Dir: =KURSE(„Symbol“;“tag“)

Globale Variable:
Code:
Option Explicit
  Dim tag$
Hauptfunktion die via Select Case alle tags abfragt und entsprechende Funktion abrufen kann. (evtl. noch aufzufüllen)
Code:
Public Function Kurse(Symbol As String, tag As String) As Variant
      Select Case tag
          Case "d1"
              Kurse = dath(Symbol, tag)
          Case "t1"
              Kurse = timeh(Symbol, tag)
          Case "n", "x", "m"
              Kurse = str(Symbol, tag)
          Case "m6", "p2"
              Kurse = pct(Symbol, tag)
          Case Else
              Kurse = dbl(Symbol, tag)
      End Select
      
      Kurse = Kurse
      If Kurse = 0 Then
          Kurse = "N/A"
      End If
      
  End Function
Hinzu kommen dann noch die 5 Funktionen die je eine andere Funktionsdeklaration haben…

"tag" kan natürlich auch als String direkt in die Formel eingegeben werden.
Beispiel: =KURSE(A1;"l1")

Gruß Smoke
Angehängte Dateien
Dateityp: zip FI_Kurse von Yahoo holen_2.zip (17,7 KB, 503x aufgerufen)
 
  Mit Zitat antworten
Alt 12.12.2011, 14:05   #10
Bazinga!
 
Benutzerbild von Smoke
 
Registriert seit: 29.08.2009
Ort: ein Dorf in NRW
Beiträge: 1.888
Wikibeiträge: 0
Status: Smoke ist offline
Standard AW: Kostenlose Yahoo-Daten in Excel

Hallo,

Nachtrag zu KURSH_AB()

Die Funktion zeigt am Wochenende je eine 0,00€ als Ergebnis.
Wer aus statistischen Gründen zum Beispiel den Kurs von Heute vor 6 Monaten, oder heute vor einem Jahr benötigt, bekommt an gewissen Tagen eine Null als Ergennis da vielleicht genau vor 1 Jahr Sonntag war.

In diesem Beispiel wäre es sinnvoll den Kurs von dem Freitag davor anzuzeigen.

Dazu im Codeteil die grünen Zeilen einfügen bzw. anpassen...

Code:
Option Explicit
Public Function KURSH_AB(Symbol As String, HDatum As Date) As Double

On Error GoTo Fehler
Dim Kurs As String
Dim HTag As String, HMonat As String, HJahr As String
Dim Kursarr() As String
Dim xml
    Set xml = CreateObject("MSXML2.ServerXMLHTTP")

        If WorksheetFunction.Weekday(HDatum, 2) = 6 Then
            HDatum = HDatum - 1
        ElseIf WorksheetFunction.Weekday(HDatum, 2) = 7 Then
            HDatum = HDatum - 2
        End If
        HTag = Day(HDatum)
        ' Monat minus 1; Januar = 0
        HMonat = Month(HDatum) - 1
        If HMonat < 10 Then HMonat = "0" & HMonat
        HJahr = Year(HDatum)
    ...
...
...
End Function
Miniaturansicht angehängter Grafiken
kh_2.png  

 
  Mit Zitat antworten
Antwort

Diese Seite empfehlen

Stichworte
aktien, aktienkurse, excel, kurse, yahoo

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Excel Kostenlose Kursdaten für Excel plasir Börsensoftware & Kursversorgung 33 24.12.2013 16:01
Daten aufzeichnen, Yahoo? McRip Börsensoftware & Kursversorgung 8 16.06.2006 17:47
kostenlose realtime Future Daten indextrader Daytrading - Futures, OS 0 11.10.2005 17:15
Frage Yahoo EOD-Daten topsy76 Tradingstrategien und Börsenpsychologie 0 24.08.2005 17:19
Excel Yahoo Neartimedaten in Excel packen Dolon Börsensoftware & Kursversorgung 3 19.01.2005 16:45

Alle Zeitangaben in WEZ +1. Es ist jetzt 21:51 Uhr.