Click here to Skip to main content
12,831,676 members (31,573 online)
Click here to Skip to main content
Add your own
alternative version

Stats

190.4K views
7K downloads
123 bookmarked
Posted 23 Jun 2009

Stock quote and chart from Yahoo! in C#

, 23 Jun 2009 LGPL3
Rate this:
Please Sign up or sign in to vote.
This article introduces you to how to access stock quotes from the Yahoo! Finance service.

Introduction

The U.S. stock market went down today and I lost a lot of money, but hopefully everyone here has made money from the stock market. Anyway, in this article, I will introduce you to how to access stock quotes with a 20 minute delay from the Yahoo! Finance service. You can download the source code and modify it according to your needs. Click here to see the live demo: http://www.igotmessage.com/Finance.aspx.

Background

It is easy to download stock data from Yahoo!. For example, copy and paste this URL into your browser address: http://download.finance.yahoo.com/d/quotes.csv?s=YHOO+GOOG+MSFT&f=sl1d1t1c1hgvbap2.

Depending on your Internet browser setting, you may be asked to save the results into a filename called "quotes.csv" or the following will appear in your browser:

"YHOO",14.8188,"6/22/2009","1:20pm",-0.9812,15.61,14.80,13944065,14.81,14.82,"-6.21%"
"GOOG",402.25,"6/22/2009","1:20pm",-17.84,417.49,402.11,2399141,402.14,402.27,"-4.25%"
"MSFT",23.359,"6/22/2009","1:20pm",-0.711,23.95,23.32,36595084,23.35,23.36,"-2.95%"

The URL starts with a base URL and then adds parameters and values after a question mark (?).

  • http://quote.yahoo.com/d/quotes.csv? - The default URL to get the information
  • 's=' - Appends a bunch of stock symbols separated by "+" after this
  • & - to join the string
  • 'f=' - Appends a bunch of special tags after this with no spaces in between

The following are special tags provided by Yahoo! Finance:

aAska2Average Daily Volumea5Ask Size
bBidb2Ask (Real-time)b3Bid (Real-time)
b4Book Valueb6Bid SizecChange & Percent Change
c1Changec3Commissionc6Change (Real-time)
c8After Hours Change (Real-time)dDividend/Shared1Last Trade Date
d2Trade DateeEarnings/Sharee1Error Indication (returned for symbol changed / invalid)
e7EPS Estimate Current Yeare8EPS Estimate Next Yeare9EPS Estimate Next Quarter
f6Float SharesgDay’s LowhDay’s High
j52-week Lowk52-week Highg1Holdings Gain Percent
g3Annualized Gaing4Holdings Gaing5Holdings Gain Percent (Real-time)
g6Holdings Gain (Real-time)iMore Infoi5Order Book (Real-time)
j1Market Capitalizationj3Market Cap (Real-time)j4EBITDA
j5Change From 52-week Lowj6Percent Change From 52-week Lowk1Last Trade (Real-time) With Time
k2Change Percent (Real-time)k3Last Trade Sizek4Change From 52-week High
k5Percebt Change From 52-week HighlLast Trade (With Time)l1Last Trade (Price Only)
l2High Limitl3Low LimitmDay’s Range
m2Day’s Range (Real-time)m350-day Moving Averagem4200-day Moving Average
m5Change From 200-day Moving Averagem6Percent Change From 200-day Moving Averagem7Change From 50-day Moving Average
m8Percent Change From 50-day Moving AveragenNamen4Notes
oOpenpPrevious Closep1Price Paid
p2Change in Percentp5Price/Salesp6Price/Book
qEx-Dividend DaterP/E Ratior1Dividend Pay Date
r2P/E Ratio (Real-time)r5PEG Ratior6Price/EPS Estimate Current Year
r7Price/EPS Estimate Next YearsSymbols1Shares Owned
s7Short Ratiot1Last Trade Timet6Trade Links
t7Ticker Trendt81 yr Target PricevVolume/td>
v1Holdings Valuev7Holdings Value (Real-time)/td> w52-week Range
w1Day’s Value Changew4Day’s Value Change (Real-time)xStock Exchange
yDividend Yield

Let's say that you want to have the following quotes: YHOO, GOOG, GE, MSFT. You want to get the Name, Last Price, Last Traded Volume, 52-Week High. From the table above, you can find out that the special tags needed are as follows:

  • Name - n
  • Last Price- l1
  • Last Traded Volume - v
  • 52-Week High - k
  • 52-Week Low - j

All you need to do is to construct the URL with the given special tags above. The URL will look like this: http://quote.yahoo.com/d/quotes.csv?s=YHOO+GOOG+GE+MSFT&f=nl1vkj.

Chart

It's also easy to get stock charts from Yahoo! Finance. All you need to do is make a request for the image with the identical URL that is in the Yahoo! Finance page. For example, this is the last three months of Microsoft stock: http://chart.finance.yahoo.com/c/3m/d/msft.

The URL also starts with a base URL and then adds a stock symbol after that.

Small chart:

Big chart:

Implementation

First, create a new ASP.NET Web Application by using Microsoft Visual C# .NET.

  1. Open Visual Studio .NET.
  2. On the File menu, point to New, and then click Project.
  3. In the New Project dialog box, under Project Types, click Visual C# Projects. Under Templates, click ASP.NET Web Application.
  4. In the Name text box, type sample.
  5. Click OK.

Now, open the Default.aspx page and add the following code:

<%@ Page Language="C#" AutoEventWireup="true" 
    CodeBehind="Default.aspx.cs" Inherits="sample._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Stock quote and chart from Yahoo in C#</title>
<script type="text/javascript" language="JavaScript">
    /// <summary>
    /// This function will be called when user clicks the Get Quotes button.
    /// </summary>
    /// <returns>Always return false.</returns>
    function SendRequest()
    {
        var txtSymbol = document.getElementById("txtSymbol");
        // Refresh the page.
        window.location = "default.aspx?s=" + txtSymbol.value;
        return false;
    }

    /// <summary>
    /// The functyion will be called when a keyboard key is pressed in the textbox.
    /// </summary>
    /// <param name="e">Onkeypress event.</param>
    /// <returns>Return true if user presses Enter key; otherwise false.</returns>
    function CheckEnter(e)
    {
        if ((e.keyCode && e.keyCode == 13) || (e.which && e.which == 13))
            // Enter is pressed in the textbox.
            return SendRequest();
        return true;
    }

    /// <summary>
    /// The function will be called when user
    // changes the chart type to another type.
    /// </summary>
    /// <param name="type">Chart type.</param>
    /// <param name="num">Stock number.</param>
    /// <param name="symbol">Stock symobl.</param>     
    function changeChart(type, num, symbol)
    {
        // All the DIVs are inside the main DIV
        // and defined in the code-behind class.
        var div1d=document.getElementById("div1d_"+num);
        var div5d = document.getElementById("div5d_" + num);
        var div3m = document.getElementById("div3m_" + num);
        var div6m = document.getElementById("div6m_" + num);
        var div1y = document.getElementById("div1y_" + num);
        var div2y = document.getElementById("div2y_" + num);
        var div5y = document.getElementById("div5y_" + num);
        var divMax = document.getElementById("divMax_" + num);
        var divChart = document.getElementById("imgChart_" + num);
        // Set innerHTML property.
        div1d.innerHTML = "1d";
        div5d.innerHTML="5d";
        div3m.innerHTML="3m";
        div6m.innerHTML="6m";
        div1y.innerHTML="1y";
        div2y.innerHTML="2y";
        div5y.innerHTML="5y";
        divMax.innerHTML="Max";
        // Use a random number to defeat cache.
        var rand_no = Math.random();
        rand_no = rand_no * 100000000;
        //  Display the stock chart.
        switch(type)
        {
        case 1: // 5 days
            div5d.innerHTML="<b>5d</b>";
            divChart.src = "http://ichart.finance.yahoo.com/w?s=" + 
                           symbol + "&" + rand_no;
            break;
        case 2: // 3 months
            div3m.innerHTML="<b>3m</b>";
            divChart.src = "http://chart.finance.yahoo.com/c/3m/" + 
                           symbol + "?" + rand_no;
            break;
        case 3: // 6 months 
            div6m.innerHTML = "<b>6m</b>";
            divChart.src = "http://chart.finance.yahoo.com/c/6m/" + 
                           symbol + "?" + rand_no;
            break;
        case 4: // 1 year
            div1y.innerHTML = "<b>1y</b>";
            divChart.src = "http://chart.finance.yahoo.com/c/1y/" + 
                           symbol + "?" + rand_no;
            break;
        case 5: // 2 years
            div2y.innerHTML = "<b>2y</b>";
            divChart.src = "http://chart.finance.yahoo.com/c/2y/" + 
                           symbol + "?" + rand_no;
            break;
        case 6: // 5 years
            div5y.innerHTML = "<b>5y</b>";
            divChart.src = "http://chart.finance.yahoo.com/c/5y/" + 
                           symbol + "?" + rand_no;
            break;
        case 7: // Max
            divMax.innerHTML = "<b>msx</b>";
            divChart.src = "http://chart.finance.yahoo.com/c/my/" + 
                           symbol + "?" + rand_no;
            break;
        case 0: // 1 day
        default:                
            div1d.innerHTML = "<b>1d</b>";
            divChart.src = "http://ichart.finance.yahoo.com/b?s=" + 
                           symbol + "&" + rand_no;
            break;
        }
    }
</script>    

</head>
<body>
    <form id="form1" runat="server">
    <div>
        <table width="100%" border="0" 
                 cellspacing="0" cellpadding="0">
            <tr valign="top">                                            
                <td style="font-family: Arial, Helvetica, sans-serif; 
                           font-size: 14px; color: #000; text-decoration: none;">
                    <input type="text" value="" id="txtSymbol" 
                        runat="server" onkeypress="return CheckEnter(event);" />
                    <input type="button" value="Get Quotes" 
                        onclick="return SendRequest();" />
                    <br />
                    <span style="font-family: Arial, Helvetica, sans-serif; 
                                 font-size: 11px; color: #666;">
                        e.g. "YHOO or YHOO GOOG"
                    </span>
                    <%if (m_symbol != "") {%>                        
                        <div id="divService" runat="server">
                        <!-- Main DIV: this DIV contains text and DIVs 
                                       that displays stock quotes and chart. -->
                        </div>
                    <%}%>
                </td>    
            </tr>
        </table>
    </div>
    </form>
</body>
</html>

Next, open the code-behind page (Default.aspx.cs) and write this code:

using System;
using System.IO;
using System.Xml;
using System.Xml.Xsl;
using System.Xml.XPath;
using System.Net;
using System.Text;

namespace sample
{
    public partial class _Default : System.Web.UI.Page
    {
        // Stock symbols seperated by space or comma.
        protected string m_symbol = "";

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                // The page is being loaded and accessed for the first time.
                // Retrieve user input from the form.
                if (Request.QueryString["s"] == null)
                    // Set the default stock symbol to YHOO.
                    m_symbol = "YHOO";
                else
                    // Get the user's input.
                    m_symbol = Request.QueryString["s"].ToString().ToUpper();
                // Update the textbox value.
                txtSymbol.Value = m_symbol;
                // This DIV that contains text and DIVs
                // that displays stock quotes and chart from Yahoo.
                // Set the innerHTML property to replaces the existing content of the DIV.
                divService.InnerHtml = "<br />";
                if (m_symbol.Trim() != "")
                {
                    try
                    {
                        // Return the stock quote data in XML format.
                        String arg = GetQuote(m_symbol.Trim());                        
                        if (arg == null)
                            return;

                        // Read XML.
                        // Declare an XmlDocument object to represents an XML document.
                        XmlDocument xd = new XmlDocument();
                        // Loads the XML data from a stream.
                        xd.LoadXml(arg);

                        // Read XSLT
                        // Declare an XslCompiledTransform object
                        // to transform XML data using an XSLT style sheet.
                        XslCompiledTransform xslt = new XslCompiledTransform();
                        // Use the Load method to load the Xsl transform object.
                        xslt.Load(Server.MapPath("stock.xsl"));
                                                
                        // Transform the XML document into HTML.
                        StringWriter fs = new StringWriter();
                        xslt.Transform(xd.CreateNavigator(), null, fs);
                        string result = fs.ToString();

                        // Replace the characters "&lt;" and "&gt;"
                        // back to "<" and ">".
                        divService.InnerHtml = "<br />" + 
                          result.Replace("&lt;", "<").Replace(
                          "&gt;", "<") + "<br />";

                        // Display stock charts.
                        String[] symbols = m_symbol.Replace(",", " ").Split(' ');
                        // Loop through each stock
                        for (int i = 0; i < symbols.Length; ++i)
                        {
                            if (symbols[i].Trim() == "")
                                continue;
                            int index = 
                                divService.InnerHtml.ToLower().IndexOf(
                                symbols[i].Trim().ToLower() + 
                                " is invalid.");
                            // If index = -1, the stock symbol is valid.
                            if (index == -1)
                            {                                
                                // Use a random number to defeat cache.
                                Random random = new Random();
                                divService.InnerHtml += "<img id='imgChart_" + 
                                    i.ToString() + 
                                    "' src='http://ichart.finance.yahoo.com/b?s=" + 
                                    symbols[i].Trim().ToUpper() + "& " + 
                                    random.Next() + "' border=0><br />";
                                // 1 days
                                divService.InnerHtml += 
                                  "<a style='font-family: Arial, Helvetica, sans-serif; " + 
                                  "font-size: 14px; color: Blue;' " + 
                                  "href='javascript:changeChart(0," +
                                  i.ToString() + ", \"" + symbols[i].ToLower() + 
                                  "\");'><span id='div1d_" + i.ToString() + 
                                  "'><b>1d</b></span></a>  ";
                                // 5 days
                                divService.InnerHtml += 
                                  "<a style='font-family: Arial, Helvetica, sans-serif; " + 
                                  "font-size: 14px; color: Blue;' " + 
                                  "href='javascript:changeChart(1," +
                                  i.ToString() + ", \"" + symbols[i].ToLower() + 
                                  "\");'><span id='div5d_" + i.ToString() + 
                                  "'>5d</span></a>  ";
                                // 3 months
                                divService.InnerHtml += 
                                  "<a style='font-family: Arial, Helvetica, sans-serif; " + 
                                  "font-size: 14px; color: Blue;' " + 
                                  "href='javascript:changeChart(2," +
                                  i.ToString() + ", \"" + symbols[i].ToLower() + 
                                  "\");'><span id='div3m_" + i.ToString() + 
                                  "'>3m</span></a>&  ";
                                // 6 months
                                divService.InnerHtml += 
                                  "<a style='font-family: Arial, Helvetica, sans-serif; " + 
                                  "font-size: 14px; color: Blue;' " + 
                                  "href='javascript:changeChart(3," +
                                  i.ToString() + ", \"" + symbols[i].ToLower() + 
                                  "\");'><span id='div6m_" + i.ToString() + 
                                  "'>6m</span></a>  ";
                                // 1 yeas
                                divService.InnerHtml += 
                                  "<a style='font-family: Arial, Helvetica, sans-serif; " + 
                                  "font-size: 14px; color: Blue;' " + 
                                  "href='javascript:changeChart(4," +
                                  i.ToString() + ", \"" + symbols[i].ToLower() + 
                                  "\");'><span id='div1y_" + i.ToString() + 
                                  "'>1y</span></a>  ";
                                // 2 years
                                divService.InnerHtml += 
                                  "<a style='font-family: Arial, Helvetica, sans-serif; " + 
                                  "font-size: 14px; color: Blue;' " + 
                                  "href='javascript:changeChart(5," +
                                  i.ToString() + ", \"" + symbols[i].ToLower() + 
                                  "\");'><span id='div2y_" + i.ToString() + 
                                  "'>2y</span></a>  ";
                                // 5 years
                                divService.InnerHtml += 
                                  "<a style='font-family: Arial, Helvetica, sans-serif; " + 
                                  "font-size: 14px; color: Blue;' " + 
                                  "href='javascript:changeChart(6," +
                                  i.ToString() + ", \"" + symbols[i].ToLower() + 
                                  "\");'><span id='div5y_" + i.ToString() + 
                                  "'>5y</span></a>  ";
                                // Max
                                divService.InnerHtml += 
                                  "<a style='font-family: Arial, Helvetica, sans-serif; " + 
                                  "font-size: 14px; color: Blue;' " + 
                                  "href='javascript:changeChart(7," +
                                  i.ToString() + ", \"" + symbols[i].ToLower() + 
                                  "\");'><span id='divMax_" + i.ToString() + 
                                  "'>Max</span></a>" + 
                                  "<br><br /><br />  ";
                            }
                        }
                    }
                    catch
                    {
                        // Handle exceptions
                    }
                }
            }
        }

        /// <summary>
        /// This function handles and parses multiple stock symbols as input parameters
        /// and builds a valid XML return document.
        /// </summary>
        /// <param name="symbol">A bunch of stock symbols
        ///    seperated by space or comma</param>
        /// <returns>Return stock quote data in XML format</returns>
        public string GetQuote(string symbol)
        {
            // Set the return string to null.
            string result = null;            
            try
            {
                // Use Yahoo finance service to download stock data from Yahoo
                string yahooURL = @"http://download.finance.yahoo.com/d/quotes.csv?s=" + 
                                  symbol + "&f=sl1d1t1c1hgvbap2";
                string[] symbols = symbol.Replace(",", " ").Split(' ');

                // Initialize a new WebRequest.
                HttpWebRequest webreq = (HttpWebRequest)WebRequest.Create(yahooURL);
                // Get the response from the Internet resource.
                HttpWebResponse webresp = (HttpWebResponse)webreq.GetResponse();
                // Read the body of the response from the server.
                StreamReader strm = 
                  new StreamReader(webresp.GetResponseStream(), Encoding.ASCII);

                // Construct a XML in string format.
                string tmp = "<stockquotes />";
                string content = "";
                for (int i = 0; i < symbols.Length; i++)
                {
                    // Loop through each line from the stream,
                    // building the return XML Document string
                    if (symbols[i].Trim() == "")
                        continue;

                    content = strm.ReadLine().Replace("\"", "");
                    string[] contents = content.ToString().Split(',');
                    // If contents[2] = "N/A". the stock symbol is invalid.
                    if (contents[2] == "N/A")
                    {
                        // Construct XML via strings.
                        tmp += "<Stock>";
                        // "<" and ">" are illegal
                        // in XML elements. Replace the characters "<"
                        // and ">" to "&gt;" and "&lt;".
                        tmp += "<Symbol>&lt;span style='color:red'&gt;" + 
                               symbols[i].ToUpper() + 
                               " is invalid.&lt;/span&gt;</Symbol>";
                        tmp += "<Last></Last>";
                        tmp += "<Date></Date>";
                        tmp += "<Time></Time>";
                        tmp += "<Change></Change>";
                        tmp += "<High></High>";
                        tmp += "<Low></Low>";
                        tmp += "<Volume></Volume>";
                        tmp += "<Bid></Bid>";
                        tmp += "<Ask></Ask>";
                        tmp += "<Ask></Ask>";
                        tmp += "</Stock>";
                    }
                    else
                    {
                        //construct XML via strings.
                        tmp += "<Stock>";
                        tmp += "<Symbol>" + contents[0] + "</Symbol>";
                        try
                        {
                            tmp += "<Last>" + 
                              String.Format("{0:c}", Convert.ToDouble(contents[1])) + 
                                            "</Last>";
                        }
                        catch
                        {
                            tmp += "<Last>" + contents[1] + "</Last>";
                        }
                        tmp += "<Date>" + contents[2] + "</Date>";
                        tmp += "<Time>" + contents[3] + "</Time>";
                        // "<" and ">" are illegal in XML elements.
                        // Replace the characters "<" and ">"
                        // to "&gt;" and "&lt;".
                        if (contents[4].Trim().Substring(0, 1) == "-")
                            tmp += "<Change>&lt;span style='color:red'&gt;" + 
                                   contents[4] + "(" + contents[10] + ")" + 
                                   "&lt;span&gt;</Change>";
                        else if (contents[4].Trim().Substring(0, 1) == "+")
                            tmp += "<Change>&lt;span style='color:green'&gt;" + 
                                   contents[4] + "(" + contents[10] + ")" + 
                                   "&lt;span&gt;</Change>";
                        else
                            tmp += "<Change>" + contents[4] + "(" + 
                                   contents[10] + ")" + "</Change>";
                        tmp += "<High>" + contents[5] + "</High>";
                        tmp += "<Low>" + contents[6] + "</Low>";
                        try
                        {
                            tmp += "<Volume>" + String.Format("{0:0,0}", 
                                   Convert.ToInt64(contents[7])) + "</Volume>";
                        }
                        catch
                        {
                            tmp += "<Volume>" + contents[7] + "</Volume>";
                        }
                        tmp += "<Bid>" + contents[8] + "</Bid>";
                        tmp += "<Ask>" + contents[9] + "</Ask>";
                        tmp += "</Stock>";
                    }
                    // Set the return string
                    result += tmp;
                    tmp = "";
                }
                // Set the return string
                result += "</StockQuotes>";
                // Close the StreamReader object.
                strm.Close();
            }
            catch
            {
                // Handle exceptions.
            }
            // Return the stock quote data in XML format.
            return result;
        }        
    }
}

Next, add a new XSLT file named stock.xsl to the project. With this XSLT, we can transform the stock quotes XML document into HTML.

  1. In Solution Explorer, select the project.
  2. On the Project menu, click Add New Item. The Add New Item dialog box appears.
  3. Click Data.
  4. In the right pane, click the XSLT file.
  5. Rename the item to styles.css.
  6. Click Open.
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html"/>
<xsl:template match="/">
<html>
  <TABLE width="770"  STYLE="border:1px solid black">
    <TR STYLE="font-size:14px; font-family:Arial, 
               Helvetica, sans-serif; font-weight:bold">
      <TD>Symbol</TD>
      <TD>Date</TD>     
      <TD>Time</TD>
      <TD>Trade</TD>
      <TD>% Chg</TD>
      <TD>Bid</TD>
      <TD>Ask</TD>     
      <TD>Volume</TD>
      <TD>High</TD>
      <TD>Low</TD>
    </TR>
    <xsl:for-each select="StockQuotes/Stock">
    <TR STYLE="font-family:Arial, Helvetica, sans-serif; 
               font-size:14px; padding:0px 2px">
      <TD>
        <xsl:value-of select="Symbol" />
      </TD>
      <TD>
        <xsl:value-of select="Date" />
      </TD>    
      <TD>
        <xsl:value-of select="Time" />
      </TD>
      <TD>
        <xsl:value-of select="Last" />
      </TD>
      <TD>
        <xsl:value-of select="Change" /> 
      </TD>
      <TD>
        <xsl:value-of select="Bid" />
      </TD>
      <TD>
        <xsl:value-of select="Ask" />
      </TD>    
      <TD>     
        <xsl:value-of select="Volume" /> 
      </TD>
      <TD>
        <xsl:value-of select="High" />
      </TD>
      <TD>
        <xsl:value-of select="Low" />
      </TD>
    </TR>
  </xsl:for-each>
</TABLE>
</html>
</xsl:template>
</xsl:stylesheet>

Finally, press Control+F5 to run the project.

Conclusion

This article walked you through a step-by-step guide of how to get stock quote data from Yahoo! and display it using C# .NET. I am sure there are a lot of things that can be improved. For example, you can use AJAX technology to update stock quotes automatically without refreshing the whole page. I hope this article gives you some ideas of where to start. For more information, please go to: http://www.igotmessage.com/StockQuote.aspx.

Reference

License

This article, along with any associated source code and files, is licensed under The GNU Lesser General Public License (LGPLv3)

Share

About the Author

PAPAYA
United States United States
No Biography provided

You may also be interested in...

Comments and Discussions

 
QuestionLast Trade Volume? Pin
Willlynx3-Nov-16 11:26
memberWilllynx3-Nov-16 11:26 
PraiseMy vote of 5 Pin
cFullerene9-Jan-16 0:57
membercFullerene9-Jan-16 0:57 
Questionstock.xsl, not styles.css Pin
Member 120321506-Oct-15 14:04
memberMember 120321506-Oct-15 14:04 
QuestionStock Quote Pin
Member 1038821326-Feb-15 2:50
memberMember 1038821326-Feb-15 2:50 
QuestionHow to add this projeckt to simple WCF service ? Pin
Member 1053242718-Jan-14 6:15
memberMember 1053242718-Jan-14 6:15 
QuestionThanks for the info Pin
Tim Claason4-Dec-13 10:19
memberTim Claason4-Dec-13 10:19 
GeneralMy vote of 5 Pin
yugangliang3-Jun-13 18:54
memberyugangliang3-Jun-13 18:54 
GeneralList of all symbols Pin
Sapan Patibandha22-May-13 23:40
memberSapan Patibandha22-May-13 23:40 
QuestionRegarding limit of request to "http://download.finance.yahoo.com/d/quotes.csv?s=YHOO+GOOG+MSFT&f=sl1d1t1c1hgvbap2." Pin
Shital RackInfotech28-Feb-13 2:08
memberShital RackInfotech28-Feb-13 2:08 
GeneralThank you! 5/5 Pin
montygshah12323-Apr-12 19:41
membermontygshah12323-Apr-12 19:41 
GeneralMy vote of 5 Pin
alain_dionne15-Apr-12 12:09
memberalain_dionne15-Apr-12 12:09 
QuestionStock chart zedgraph Pin
Gregory Nozik21-Sep-11 20:29
memberGregory Nozik21-Sep-11 20:29 
QuestionYahoo Download Component Pin
Gregory Nozik12-Sep-11 21:01
memberGregory Nozik12-Sep-11 21:01 
GeneralBackfill Pin
Mitesh Sharma29-Jul-09 5:47
memberMitesh Sharma29-Jul-09 5:47 
GeneralRegex Enhancement Pin
T.D.Brown4-Jul-09 20:30
memberT.D.Brown4-Jul-09 20:30 
GeneralScared "<html>" + str + "</html>" Pin
Henry Liang24-Jun-09 10:59
memberHenry Liang24-Jun-09 10:59 
GeneralRe: Scared "<html>" + str + "</html>" Pin
Member 1168874922-May-15 14:00
memberMember 1168874922-May-15 14:00 
QuestionSo what's changed? Pin
digital man23-Jun-09 7:36
memberdigital man23-Jun-09 7:36 
AnswerRe: So what's changed? Pin
PAPAYA23-Jun-09 9:30
memberPAPAYA23-Jun-09 9:30 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web01 | 2.8.170326.1 | Last Updated 23 Jun 2009
Article Copyright 2009 by PAPAYA
Everything else Copyright © CodeProject, 1999-2017
Layout: fixed | fluid