<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Brusdeylins &#187; API</title>
	<atom:link href="http://brusdeylins.info/tag/api/feed/" rel="self" type="application/rss+xml" />
	<link>http://brusdeylins.info</link>
	<description></description>
	<lastBuildDate>Wed, 28 Jul 2010 18:25:27 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Yahoo! Finance API</title>
		<link>http://brusdeylins.info/projects/yahoo-finance-api/</link>
		<comments>http://brusdeylins.info/projects/yahoo-finance-api/#comments</comments>
		<pubDate>Sun, 18 May 2008 17:20:34 +0000</pubDate>
		<dc:creator>Matthias Brusdeylins</dc:creator>
				<category><![CDATA[Projekte]]></category>
		<category><![CDATA[Tipps & Tricks]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Finance]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Projekt]]></category>
		<category><![CDATA[Yahoo]]></category>

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