Moderne Broker-Portale bieten einem Investor die Möglichkeit, Kurse seiner Aktien bzw. Optionen abzurufen. Dort findet er in der Regel auch Kurs-Charts und Chart-Analyse-Kurven zu den unterschiedlichsten Zeiträumen. Dem ein oder anderen privaten Investor sind diese Analysen vielleicht nicht ausreichend genug. Es mag unter ihnen Informatiker und Hobby-Programmierer geben, die den Wunsch äußern, mit Kursdaten mathematische Analysen durchzuführen, um Indikatoren selbst zu berechnen. Nur wie gelangt ein Programmierer an die aktuellen und historischen Zahlen einzelner Aktienkurse? Dieser Beitrag soll die Möglichkeiten der Yahoo!Finance-Schnittstelle näher bringen.
Für das Ermitteln unterschiedlicher Kursdaten bietet Yahoo!Finance (auch für Deutschland) verschiedene CSV-Export-Services an. CSV steht für “Comma Separated Values” und bedeutet hier nichts anderes, als dass die ganzen Kennzahlen (wie z.B. Schluss-Kurs oder Volumen) in reiner Textform mit Kommas und Zeilenumbrüchen getrennt ausgeliefert werden. Daten in solch einem Format kann ein Computerprogramm für Analysezwecke leicht verarbeiten. Im Folgenden werden die bekannten Schnittstellen genauer erläutert und dazu passende Beispiele und PHP-Scripte präsentiert. Da mir keine offizielle API von Yahoo!Finance bekannt ist und ich die hier beschriebene Schnittstelle durch Ausprobieren und Studium ermittelt habe, kann ich für eine Vollständigkeit des aufgezeigten Funktionsumfanges nicht garantieren. Für Hinweise bin ich daher sehr dankbar. Verwendet ein Entwickler die Services von Yahoo!Finance, so sollte er sich vorher die Nutzungsbedingungen (siehe auch) genau durchlesen.
Aktuelle Kursdaten ermitteln
Ganz ehrlich, “aktuell” bedeutet bei der kostenlosen Yahoo!Finance-Schnittstelle leider eine Verzögerung von 15 Minuten für NASDAQ Werte, bis hin zu 60 Minuten für andere Börsenplätze (näheres auf Yahoo!Finance). Doch für die meisten Verwendungszwecken bzw. westlichen Börsenkurse dürfte diese Verzögerung kein Problem darstellen. Yahoo! bietet Kurse aus den unterschiedlichsten Börsenplätzen an. Die Selektion des entsprechenden Handelsplatzes findet in der URL selbst, sowie in einem Anhang (Suffix) an der Symbolangabe statt. Im Kapitel “Länderunterschiede” werden die Unterschiede aufgelistet. Zum besseren Verständnis zeige ich hier nur die Basis-URL, welche vor allem für die US-Börsenkurse gültig ist. Das Ergebnis ist eine Werteliste, die durch Kommas getrennt präsentiert wird. Die Serviceadressen für aktuelle Kursinformationen lautet http://finance.yahoo.com/d/quotes.csv?
(alternativ http://download.finance.yahoo.com/d/quotes.csv?
) und nimmt die folgenden drei bekannten Parameter entgegen:
Parameter | Beschreibung |
---|---|
s= | Das Symbol des Wertpapiers wird mit dem Parameter “s” angegeben. Z.B. liefert hier “s=AAPL ” die aktuellen Kursdaten von Apple Inc. Eine Kombination mehrere durch ein Pluszeichen getrennte Symbole ist ebenfalls möglich (zum Beispiel “s=AAPL+MSFT ” für Apple und Microsoft). Die Werte, getrennt durch Kommas, kommen dann jeweils in eine separaten Zeile pro Symbol zurück. |
f= | Die Format-Codes werden hier mit dem Parameter “f” angegeben. Dabei handelt es sich hier um einen Textzug mit lauter aneinandergereihten Kürzel. So gibt z.B. das Zeichen “s” an, dass das Symbol der Aktie ausgegeben werden soll. “n” liefert den Namen, “a” den aktuellen Anfrage-Kurs. Die Werte werden exakt in der Reihenfolge ausgegeben, wie sie hier angefordert werden. Eine Liste aller bekannten Format-Codes wird weiter unten um Kapitel “Die Format-Codes” aufgelistet. Beispiel: f=sna |
e=.csv | Die Exportart wird mit dem Parameter “e” angegeben. Hier sollte immer “e=.csv ” für ein “Comma Separated Values” Ergebnis übermittelt werden. Erfahrungen haben gezeigt, dass dieser Parameter wohl optional ist. |
Das folgende Beispiel ermittelt von Apple und Microsoft das Symbol, den Firmen-Namen, den aktuellen Anfrage-Kurs und die dazu gehörige Zeit ab. Dabei sind Zeit und Kurswert immer länderspezifisch zu verstehen (US-Zeit und Dollar). Wenn Sie diese URL in den Browser eingeben, können Sie das Ergebnis abspeichern. Danach können Sie die Rohdaten in einem Texteditor öffnen und betrachten (nicht mit Excel öffnen, da hier die Formatierung nicht ersichtlich wird).
http://finance.yahoo.com/d/quotes.csv?s=AAPL+MSFT&f=snat1 --- "AAPL","APPLE INC",151.47,"3:31pm" "MSFT","MICROSOFT CP",29.09,"3:31pm"
Ein Programm kann nun diese Daten in einem mehrdimensionalen Array ablegen. Dabei enthalten die Spalten die Inhalte der Werte, welche durch die Format-Codes angefordert wurden. Die Zeilen bilden jeweils das Zahlentupel eines Wertpapiers ab. Eine PHP-Funktion zur Ermittlung der Kursdaten könnte somit folgendermaßen aussehen:
<?php /* * Getting current quotes: * Reading multible lines of values into an array depending on the given symbols and function tags. * Each line holds the values of one symbol. In the argument, symbols are separated by "+". * * (c) Matthias Brusdeylins, 2008 * License: CC-GNU GPL (http://creativecommons.org/licenses/GPL/2.0/) */ define ("QUOTES_URL", "http://finance.yahoo.com/d/quotes.csv?"); function loadYahooQuotes ($symbol, $tags) { $lineCount = 0; $stocks = array(); // load the stock quotes: we are opening it for reading // http://finance.yahoo.com/d/quotes.csv?s= STOCK SYMBOLS &f= FORMAT TAGS $URL = QUOTES_URL."s=$symbol&f=$tags&e=.csv"; $fileHandle = fopen ($URL,"r"); if ($fileHandle) { // use the fgetcsv function to store quote values into an array $lineValues // one symbol in one line do { $stockValues = fgetcsv ($fileHandle, 999999, ","); if ($stockValues) { $lineCount++; $stocks[$lineCount] = $stockValues; } } while ($stockValues); fclose ($fileHandle); } else { // ERROR-Message in the array $stocks[0][0] = "ERROR"; $stocks[0][1] = "No data found."; } return $stocks; } ?>
Devisen
Sie können nicht nur einzelne Aktienkurse erfragen, sondern auch Devisenkurse. Dazu müssen Sie an der oben vorgestellten Adresse als Symbol-Parameter ein spezielles Konstrukt der Form AB=X
übermitteln. Hier steht der Buchstabe A
für die erste zu vergleichende Währung und der Buchstabe B
dann natürlich für die zweite Währung. X
steht wohl für Exchange und wird nicht ersetzt. Wollen Sie mehrere Währungen abfragen, können mehrere Konstrukte mittels dem Pluszeichen “+
” aneinander gehängt werden. Folgendes Beispiel soll dies verdeutlichen:
http://quote.yahoo.com/d/quotes.csv?s=USDCAD=X+JPYUSD=X&f=nl1d1t1 --- "USD to CAD",1.0088,"4/4/2008","5:02pm" "JPY to USD",0.0098,"4/4/2008","5:26pm"
Die Kürzel der Währungen bestehen aus drei Buchstaben und werden hier aufgelistet:
Land | Kürzel |
---|---|
Afganistan Afghani | AFA |
Albanian Lek | ALL |
Algerian Dinar | DZD |
Argentinian Peso | ARS |
Aruban Florin | AWG |
Australian Dollar | AUD |
Austrian Schilling | ATS |
Bahraini Dinar | BHD |
Bangladesh Taka | BDT |
Barbados Dollar | BBD |
Belgian Franc | BEF |
Belize Dollar | BZD |
Bermuda Dollar | BMD |
Bhutan Ngultrum | BTN |
Bolivian Boliviano | BOB |
Botswana Pula | BWP |
Brazilian Real | BRL |
British Pound | GBP |
Brunei Dollar | BND |
Bulgarian Lev | BGN |
Cambodian Riel | KHR |
Canadian Dollar | CAD |
Cape Verde Escudo | CVE |
Cayman Islands Dollar | KYD |
CFA Franc (BCEAO) | XOF |
CFA Franc(BEAC) | XAF |
CFP Franc | XPF |
Chilean Peso | CLP |
Colombian Peso | COP |
Comoros Franc | KMF |
Costa Rican Colon | CRC |
Croatian Kuna | HRK |
Cuban Peso | CUP |
Cypriot Pound | CYP |
Czech Koruna | CZK |
Danish Krone | DKK |
Djibouti Franc | DJF |
Dominican Peso | DOP |
Dutch Guilder | NLG |
East Caribbean Dollar | XCD |
Egyptian Pound | EGP |
El Salvador Colon | SVC |
Estonian Kroon | EEK |
Ethiopian Birr | ETB |
Euro | EUR |
Fiji Dollar | FJD |
Finnish Markka | FIM |
French Franc | FRF |
Gambia Dalasi | GMD |
German Mark | DEM |
Ghanaian Cedi | GHC |
Gibraltar Pound | GIP |
Greek Drachma | GRD |
Guatemala Quetzal | GTQ |
Guinea Franc | GNF |
Guyana Dollar | GYD |
Haitian Gourde | HTG |
Honduras Lempira | HNL |
Hong Kong Dollar | HKD |
Hungarian Forint | HUF |
Iceland Krona | ISK |
Indian Rupee | INR |
Indonesian Rupiah | IDR |
Irish Punt | IEP |
Israeli Shekel | ILS |
Italian Lira | ITL |
Jamaican Dollar | JMD |
Japanese Yen | JPY |
Jordanian Dinar | JOD |
Kenyan Shilling | KES |
Kuwaiti Dinar | KWD |
Laos Kip | LAK |
Latvian Lats | LVL |
Lebanese Pound | LBP |
Lesotho Loti | LSL |
Lithuanian Litas | LTL |
Malagasy Franc | MGF |
Malawi Kwacha | MWK |
Malaysian Ringgit | MYR |
Maldives Rufiyan | MVR |
Maltese Pound | MTL |
Mauritania Ouguiya | MRO |
Mauritius Rupee | MUR |
Mexican Peso | MXN |
Mongolian Tugrik | MNT |
Moroccan Dirham | MAD |
Mozambique Metical | MZM |
Myanmar Kyat | MMK |
Namibian Dollar | NAD |
Nepal Rupee | NPR |
Netherlands Antilles Guilder | ANG |
New Zealand Dollar | NZD |
Nicaraguan Cordoba | NIO |
Nigerian Naira | NGN |
Norwegian Krone | NOK |
Oman Rial | OMR |
Pakistani Rupee | PKR |
Papua New Guinea Kina | PGK |
Peruvian Sol | PEN |
Philippines Peso | PHP |
Polish Zloty | PLN |
Portuguese Escudo | PTE |
Qatari Rial | QAR |
Renmimbi Yuan | CNY |
Romanian Leu | ROL |
Russian Ruble | RUB |
Salomon Islands Dollar | SBD |
Sao Tome & Principe Dobra | STD |
Saudi Arabian Riyal | SAR |
Seychelles Rupee | SCR |
Sierra Leone Leone | SLL |
Singapore Dollar | SGD |
Slovak Koruna | SKK |
Slovenian Tolar | SIT |
South African Rand | ZAR |
South Korean Won | KRW |
Spanish Peseta | ESP |
Sri Lanka Rupee | LKR |
St. Helena Pound | SHP |
Sudanese Dinar | SDD |
Surinam Guilder | SRG |
Swaziland Lilangeni | SZL |
Swedish Krona | SEK |
Swiss Franc | CHF |
Syria Pound | SYP |
Taiwan New Dollar | TWD |
Tanzanian Shilling | TZS |
Thai Baht | THB |
Tonga Isl Pa’anga | TOP |
Trinidad Dollar | TTD |
Tunisian Dinar | TND |
Turkish Lira | TRL |
Ugandan Shilling | UGX |
Ukraine Hryvnia | UAH |
United Arab Emirates Dirham | AED |
US Dollar | USD |
Vanuatu Vatu | VUV |
Venezuelan Bolivar | VEB |
Vietnam Dong | VND |
Western Samoa Tala | WST |
Zambia Kwacha | ZMK |
Zimbabwean Dollar | ZWD |
Die Format-Codes
Für den Parameter der Formate-Codes (”f”) stehen eine ganze Reihe akzeptierter Format-Tags zur Verfügung. Viele sind dabei wohl redundant und werden hier einfach zusammengefasst (z.B. “a” und “b2″ für Anfrage-Kurs). Die folgende Tabelle listet alle bekannten Codes auf.
Achtung: In einigen Fällen liefert Yahoo!Finance mehrstellige Werte zurück, die ebenfalls mit Kommas getrennt dargestellt werden. Dies ist an sich ungeschickt, da es für Sie als Programmierer schwierig wird, die Kommas zwischen den einzelnen Werten von den Kommas in einem Wert zu unterscheiden. Hier empfehle ich, diese Parameter getrennt abzufragen.
Code | Bedeutung |
---|---|
a, a0, a4 | Ask |
a1 | - unknown - |
a3, b2 | Ask (Realtime) — with Pre- and Post-Market |
a2 | Average Daily Volume |
a5 | Ask Size Achtung: hier wird der Wert unter Umständen in Zahlengruppen, getrennt durch ein Komma zurückgeliefert! Die Anzahl der durch Komma getrennten Gruppen variiert. |
b, b0 | Bid |
b2, a3 | Ask (Realtime) — with Pre- and Post-Market |
b3, b1 | Bid (Realtime) — with Pre- and Post-Market |
b4 | Book Value per Share |
b6 | Bid Size Achtung: hier wird der Wert unter Umständen in Zahlengruppen, getrennt durch ein Komma zurückgeliefert! Die Anzahl der durch Komma getrennten Gruppen variiert. |
c, c2, q1 | Change & Percent Change |
c0 | Change in Percent |
c1, c7 | Change |
c3 | Commission |
c4 | Currency |
c5 | - unknown - |
c6 | Change (Realtime) |
c8 | After Hours Change (Realtime) |
d, d0 | Trailing Annual Dividend Yield (Dividend per Share) |
d1 | Last Trade Date |
d2 | Trade Date |
d3 | Last Trade Date (text) |
e, e0 | Earnings per Share (Diluted EPS) |
e1 | Error Indication (returned for symbol changed / invalid) |
e2 | Verfallsdatum bei Optionsscheinen |
e3 | - unknown - |
e4 | - unknown - |
e7 | EPS Estimate Current Year |
e8 | EPS Estimate Next Year |
e9 | EPS Estimate Next Quarter |
f, f0 | Trade Links Additional |
f1, f2, f3, f4, f5, g2 | - HTML Fragment mit Company name, market place und Trade Link - |
f6 | Float Shares Achtung: hier wird der Wert unter Umständen in Zahlengruppen, getrennt durch ein Komma zurückgeliefert! Die Anzahl der durch Komma getrennten Gruppen variiert. |
f7, f8, | - HTML Fragment mit Trade-Link - |
g, g0 | Day’s Low |
g1 | Holdings Gain Percent |
g3 | Annualized Gain |
g4 | Holdings Gain |
g5 | Holdings Gain Percent (Realtime) |
g6 | Holdings Gain (Realtime) |
h, h0 | Day’s High |
h1, h2, h3, h4, h5, h6 | - HTML Fragment - |
i, i0 | More Info |
i2 | - unknown - |
i3 | - unknown - |
i4 | - unknown - |
i5 | Order Book (Realtime) |
i6 | - unknown - |
i7, l1, l7, l9, q2, v2, y2 | Last Trade (price only) |
j, j0 | Year Low (52-week) |
j1 | Market Capitalization |
j2 | Shares Outstanding Achtung: hier wird der Wert unter Umständen in Zahlengruppen, getrennt durch ein Komma zurückgeliefert! Die Anzahl der durch Komma getrennten Gruppen variiert. |
j3 | Market Capitalization (Realtime) |
j4 | EBITDA |
j5 | Change From Year Low (52-week) |
j6 | Percent Change From Year Low (52-week) |
k, k0 | Year High (52-week) |
k1 | Last Trade With Time (Realtime) |
k2 | Change in Percent (Realtime) |
k3 | Last Trade Size Achtung: hier wird der Wert unter Umständen in Zahlengruppen, getrennt durch ein Komma zurückgeliefert! Die Anzahl der durch Komma getrennten Gruppen variiert. |
k4 | Change From Year High (52-week) |
k5 | Percent Change From Year High (52-week) |
l, l0, n1, n5, y1 | Last Trade with Time |
l1 | Last Trade (Price Only) |
l2 | High Limit |
l3 | Low Limit |
l4 | - unknown - |
l5 | - unknown - |
l6 | - unknown - |
m, m0 | Day’s Range |
m1 | - unknown - |
m2 | Day’s Range (Realtime) |
m3 | 50-day Moving Average |
m4 | 200-day Moving Average |
m5 | Change From 200-day Moving Average |
m6 | Percent Change From 200-day Moving Average |
m7 | Change From 50-day Moving Average |
m8 | Percent Change From 50-day Moving Average |
n, n0 | Name |
n2 | - unknown - |
n3 | - unknown - |
n4 | Notes |
n6 | - unknown - |
n7 | - unknown - |
n8 | - unknown - |
n9 | - unknown - |
o, o0 | Open |
o1, o2 | Open Interest bei Optionsscheinen |
o4 | - unknown - |
o5 | - unknown - |
p, p0, p8 | Previous Close |
p1 | Price Paid |
p2, p4 | Change in Percent |
p3 | - unknown - |
p5, p9 | Price Sales |
p6 | Price Book |
q, q0 | Ex-Dividend Date |
q3 | - HTML Fragment für Zeitraumauswahl - |
q4 | - HTML Fragment für Auswahl des Grafentyps - |
q5 | - HTML Fragment für Auswahl der Skalierung - |
q6 | - HTML Fragment für Auswahl der Chart-Größe - |
q7 | - HTML Fragment für Auswahl des Moving Avg. - |
q8 | - HTML Fragment für Auswahl des EMA - |
q9 | - HTML Fragment für Vergleichs-Formular - |
r, r0 | P/E Ratio |
r1 | Dividend Pay Date |
r2 | P/E Ratio (Realtime) |
r3 | - HTML Fragment für Auswahl der Indikatoren - |
r4 | - HTML Fragment für Auswahl der Overlays - |
r5 | PEG Ratio |
r6 | Price EPS Estimate Current Year |
r7 | Price EPS Estimate Next Year |
r9 | - unknown - |
s, s0, s2, s4 | Symbol |
s1 | Shares Owned |
s3 | Bezugspreis bei Optionsscheinen |
s6 | Revenue |
s7 | Short Ratio |
t, t0, t2, u, u0, u2, u3 | - HTML Fragment für ein Chart-Bild - |
t1 | Last Trade Time |
t3 | - unknown - |
t4 | - unknown - |
t5 | - unknown - |
t6 | Trade Links (HTML) |
t7 | Ticker Trend |
t8 | 1 year Target Price |
v, v0, v6 | Volume |
v1 | Holdings Value |
v3 | - unknown - |
v4 | - unknown - |
v5 | - unknown - |
v7 | Holdings Value (Realtime) |
w, w0 | Year Range (52-week) |
w1 | Day’s Value Change |
w4 | Day’s Value Change (Realtime) |
x, x0 | Stock Exchange |
y, y0 | Trailing Annual Dividend Yield In Percent |
z2 | - HTML Fragment - |
z3 | - liefert “Oops!” - |
Höhere Indexwerte führen nur noch zu einer Wiederholung der Inhalte. Vermutlich sollen die Codes zweistellig sein (Buchstabe + Zahl). Fällt die Zahl weg, so wir automatisch der Index 0 angenommen.
Daytrading-Daten
Leider bietet Yahoo!Finance nur die letzten 100 Tages-Kurswerte zum Ermittlungszeitpunkt an. Auch hier wirkt die Verzögerung von 15–60 Minuten, wie im Abschnitt “Aktuelle Kursdaten” beschrieben. Die Serviceadresse für die Daytrading-Daten lautet http://logtrade.finance.vip.ukl.yahoo.com/lastTrades?
und nimmt folgende drei bekannte Parameter entgegen:
Parameter | Beschreibung |
---|---|
s= | Das Symbol des Wertpapiers wird mit dem Parameter “s” angegeben. Z.B. liefert hier “s=AAPL ” die letzten 100 Daytrading-Daten von Apple Inc. |
output=user | Der Sinn dieses Parameters ist leider noch nicht bekannt. Für weitere Hinweise bin ich sehr dankbar. |
i=eu | Auch hier ist mir der Sinn des Parameters noch nicht bekannt. |
Das Ergebnis einer solchen Abfrage liefert eine Liste mit Wertegruppen — eine Gruppe für jeden Trade. Ein solches Tupel enthält den Trading-Zeitpunkt, den Kurswert und die Volumina des Trades.
Historische Kursdaten
Für ein Wertpapier stehen bei Yahoo ebenfalls historische Daten zur Verfügung. Die Service-URL hierfür lautet http://ichart.finance.yahoo.com/table.csv?
(alternativ: http://real-chart.finance.yahoo.com/table.csv?
) und besitzt Parameter für das Symbol, sowie für das Zeitintervall, innerhalb ein Entwickler die täglichen bzw. wöchentlichen Kursdaten ermitteln will:
Parameter | Beschreibung |
---|---|
a= | Start-Monat ‑1 (Januar ist hier der Wert “0”) |
b= | Start-Tag |
c= | Start-Jahr |
d= | End-Monat ‑1 (Januar ist hier der Wert “0”) |
e= | End-Tag |
f = | End-Jahr |
g= | Chart-Abstufung (d=tägliche Werte, w=wöchentliche Werte, m=monatliche Werte, v=Dividendenausschüttungen) |
s= | Symbol des Aktienkurses |
ignore=.cvs | (konstanter Wert, aber optional) |
y= | Verschiebung um eine angegebene Anzahl an Tagen/Wochen/Monaten. Macht eigentlich keinen Sinn, da oben bereits ein Intervall angegeben wurde. Trotzdem unterscheiden sich z.B. die Volumen-Werte eines Monats (g=m), wenn hier eine Verschiebung Y>0 angegeben wird. Für weitere Hinweise bin ich hier dankbar! |
Das Ergebnis besteht aus einer Liste täglicher, wöchentlicher oder monatlicher Werte zu dem übermittelten Zeitraum. Die erste Zeile enthält die Überschrift der einzelnen Spaltenwerte. In allen weiteren Zeilen liefert Yahoo!Finance danach das Datum, den Eröffnungskurs, den höchsten und tiefsten Kurswert, sowie den Tagesschlusskurs und das Handelsvolumen für jeden einzelnen Tag. Da diese Werte gegenüber Splits und Dividenden unbereinigt sind, liefert Yahoo! in der letzten Spalte “Adj. Close” noch bereinigte Schlusskurse. Ein bisschen anders sieht das Ergebnis aus, wenn als Chart-Abstufung der Wert “v” für die Dividendenausschüttungen angegeben wird. Dann werden nur noch zwei Spalten mit einem Datum sowie dem Wert selbst zurückgeliefert. Hier noch zwei Beispiele mit den ersten paar Zeilen der Ergebnisse:
http://ichart.finance.yahoo.com/table.csv?s=AAPL&d=3&e=3&f=2008&g=d&a=8&b=7&c=1984&ignore=.cvs --- Date,Open,High,Low,Close,Volume,Adj Close 2008-04-02,148.78,151.20,145.85,147.49,37253700,147.49 2008-04-01,146.30,149.66,143.61,149.53,36846400,149.53 2008-03-31,143.27,145.71,142.52,143.50,27418300,143.50 2008-03-28,141.80,144.65,141.60,143.01,25521800,143.01 ...
http://itable.finance.yahoo.com/table.csv?s=AAPL&d=3&e=3&f=2008&g=v&a=8&b=7&c=1984&ignore=.cvs --- Date,Dividends 1995-11-21,0.030000 1995-08-16,0.030000 1995-05-26,0.030000 ...
Für die programmatische Auswertung dieser Daten bietet sich auch hier das Array als Ergebnisträger an. In jeder Zeile können so die Werte eines Tages (bzw. einer Woche, eines Monats oder der Dividenden) abgelegt werden. Folgende PHP-Funktion soll dies verdeutlichen:
<?php /* * Getting historical quotes in a given time period * Parameters: * $symbol: symbol * $startDay, $startMonth, $startYear: the first day for the historical quotes * $endDay, $endMonth, $endYear: the last day for the historical quotes * $step (d/w/m/v): d=daily, w=weekly, m=monthly, v=dividends * * (c) Matthias Brusdeylins, 2008 * License: CC-GNU GPL (http://creativecommons.org/licenses/GPL/2.0/) */ define ("HISTORY_QUOTES_URL", "http://ichart.yahoo.com/table.csv?"); function loadHistoricalYahooQuotes ($symbol, $startDay, $startMonth, $startYear, $endDay, $endMonth, $endYear, $step) { $lineCount = 0; $days = array(); // modify parameters $sM=$startMonth-1; $eM=$endMonth-1; // load the historical stock quotes: we are opening it for reading // http://ichart.yahoo.com/table.csv?s= SYMBOL.COUNTRY &a,b,c START $d,e,f ENDE $g d=daily/w=weekly/m=monthly/v=dividends $URL = HISTORY_QUOTES_URL."s=$symbol&a=$sM&b=$startDay&c=$startYear&d=$eM&e=$endDay&f=$endYear&g=$step&y=0&ignore=.cvs"; $fileHandle = fopen ($URL,"r"); if ($fileHandle) { // use the fgetcsv function to store quote values into a array $lineValues // store one symbol in one line do { $stockValues = fgetcsv ($fileHandle, 999999, ","); if ($stockValues) { $lineCount++; $days[$lineCount] = $stockValues; } } while ($stockValues); // close handle fclose ($fileHandle); } else { $days[0][0] = "ERROR"; $days[0][1] = "No data found."; } return $days; } ?>
Länderunterschiede
An der Börse werden nicht nur Aktien in unterschiedlichen Währungen gehandelt, sondern auch Nebenwerte wie beispielsweise Optionsscheine. Der Handel solcher Wertpapiere ist meist auf ein Land bzw. Börsenplatz beschränkt. Aus diesem Grund bietet Yashoo!Finance auch unterschiedliche Serviceadressen an. In diesem Artikel wurden bisher nur die Adressen für US-Börsendaten aufgezeigt. So kann unter der URL http://finance.yahoo.com/d/quotes.csv?
der aktuelle Kurs einer Aktie in US-Dollars ermittelt werden. Wollen Sie hingegen einen Kurs aus dem deutschen Raum ermitteln, steht Ihnen die URL http://de.finance.yahoo.com/d/quotes.csv?
zur Verfügung.
Die folgende Tabelle zeigt die Adressen (URL) zum Yahoo!Finance-Service für aktuelle Börsenkurse. In der ersten Spalte werden auch die Symbol-Suffixe aufgelistet, welche für eine aktive Börsenplatz-Wahl an die Symbolangabe gehängt werden können (z.B. “AAPL.DE
” für den XETRA-Kurs des Apple-Aktie). Ein Besuch auf die Webseite von Yahoo! Finance hilft hier bei der Auswahl der richtigen Symbolbezeichnung.
Land & Suffix | URLs |
---|---|
Argentinien .BA (Buenos Aires) |
http://finance.yahoo.com/d/quotes.csv? http://ar.finance.yahoo.com/d/quotes.csv? |
Australien .AX (Australia) |
http://au.finance.yahoo.com/d/quotes.csv? |
Belgien .BR (Brussels) |
http://finance.yahoo.com/d/quotes.csv? |
Brasilien .SA (São Paulo) |
http://finance.yahoo.com/d/quotes.csv? http://br.finance.yahoo.com/d/quotes.csv? |
Dänemark .CO (Copenhagen) |
http://finance.yahoo.com/d/quotes.csv? http://dk.finance.yahoo.com/d/quotes.csv? |
Deutschland .BE (Berlin-Bremen) .DU (Düsseldorf) .F (Frankfurt) .HM (Hamburg) .HA (Hanover) .MU (München) .SG (Stuttgart) .DE (XETRA) |
http://de.finance.yahoo.com/d/quotes.csv? |
China .SS (Shanghai) .SZ (Shenzhen) |
http://finance.yahoo.com/d/quotes.csv? http://cn.finance.yahoo.com/d/quotes.csv? |
England .L (London) |
http://uk.finance.yahoo.com/d/quotes.csv? |
Frankreich .PA (Paris) |
http://finance.yahoo.com/d/quotes.csv? http://fr.finance.yahoo.com/d/quotes.csv? |
Hong Kong .HK (Hong Kong) |
http://hk.finance.yahoo.com/d/quotes.csv? |
Indien .BO (Bombay) .NS (Nationale Börse Indien) |
http://in.finance.yahoo.com/d/quotes.csv? |
Indonesien .JK (Jakarta) |
http://sg.finance.yahoo.com/d/quotes.csv? |
Irland .IR (Irish) |
http://uk.finance.yahoo.com/d/quotes.csv? |
Israel .TA (Tel Aviv) |
http://finance.yahoo.com/d/quotes.csv? |
Italien .MI (Milano) |
http://finance.yahoo.com/d/quotes.csv? http://it.finance.yahoo.com/d/quotes.csv? |
Kanada .TO (Toronto) .V (TSX Venture Exchange) |
http://ca.finance.yahoo.com/d/quotes.csv? |
Korea (Süd) .KS (Korea) .KQ (KOSDAQ) |
http://kr.finance.yahoo.com/d/quotes.csv? |
Malaysien .KL (Kuala Lumpur) ? |
http://sg.finance.yahoo.com/d/quotes.csv? |
Mexico .MX (Mexico) |
http://finance.yahoo.com/d/quotes.csv? |
Neu Seeland .NZ (New Zealand) |
http://au.finance.yahoo.com/d/quotes.csv? |
Niederlande .AS (Amsterdam) |
http://finance.yahoo.com/d/quotes.csv? |
Norwegen .OL (Oslo) |
http://finance.yahoo.com/d/quotes.csv? http://no.finance.yahoo.com/d/quotes.csv? |
Österreich .VI (Vienna) |
http://finance.yahoo.com/d/quotes.csv? |
Pakistan .KA (Karachi) ? |
http://finance.yahoo.com/d/quotes.csv? |
Portugal .LS (Lissabon) |
http://finance.yahoo.com/d/quotes.csv? |
Schweden .ST (Stockholm) |
http://finance.yahoo.com/d/quotes.csv? http://se.finance.yahoo.com/d/quotes.csv? |
Schweiz .SW (Swiss) .VX (Virt‑X) |
http://finance.yahoo.com/d/quotes.csv? |
Singapore .SI (Singapore) |
http://sg.finance.yahoo.com/d/quotes.csv? |
Spanien .BC (Barcelona) .BI (Bilbao) .MF (Madrid Fixed Income Market) .MC (Madrid SE C.A.T.S.) .MA (Madrid) |
http://es.finance.yahoo.com/d/quotes.csv? |
Taiwan .TWO (OTC Börse Taiwan) .TW (Taiwan) |
http://sg.finance.yahoo.com/d/quotes.csv? |
Thailand .BK (Bangkok) |
http://sg.finance.yahoo.com/d/quotes.csv? |
USA kein Suffix für AMEX, NASDAQ und NYSE .OB (OTC Bulletin Board Market) .PK (Pink Sheets) |
http://finance.yahoo.com/d/quotes.csv? |
Download
Die Klasse Finance_API_Yahoo
bietet einen einfachen Zugriff auf die hier beschriebene Schnittstelle. Mit ihr lassen sich aktuelle, sowie historische Kursdaten ermitteln. Das Ergebnis wird in einem zweidimensionalen Array zurückgeliefert (siehe Beispiele im Text). Für die Package-Struktur diente das Zend-Framework als Vorlage. Somit ist eine einfache Integration in dieses gewährleistet.
Yahoo! Finance API, Version 1.0
Change-Log
0.5 | 31.03.2008 — First release |
0.6 | 06.04.2008 — Function code list completed |
1.0 | 04.05.2008 — Zend-Framework package structure integrated |
Diese Software und die hier gezeigten Codestücke fallen unter den Lizenzvertrag CC-GNU GPL.
MAI