This program extracts live stock price information from yahoo website. It can be included in our application to get usage of NSE stock quotes.
I have tried a lot to find a webservice which give NSE stock quotes, unfortunately I didn't find any. So I came into this decision to make a program which uses other websites like yahoo, rediff and msn. Finally I got a solution by writing the following application.
This program will give you live NSE stock quotes.
I have tried a lot to find a webservice which give NSE stock quotes, unfortunately I didn't find any. So I came into this decision to make a program which uses other websites like yahoo, rediff and msn. Finally I got a solution by writing the following application.
This program will give you live NSE stock quotes.
[DataContract]
public class StockQuote
{
[DataMember]
public decimal LastPrice { set; get; }
[DataMember]
public decimal PreviousClose { set; get; }
[DataMember]
public decimal Open { set; get; }
[DataMember]
public DateTime LastTraded { set; get; }
[DataMember]
public string LastTradedString { set; get; }
[DataMember]
public decimal DayLow { set; get; }
[DataMember]
public decimal DayHigh { set; get; }
[DataMember]
public decimal FiftyTwoWeekLow { set; get; }
[DataMember]
public decimal FiftyTwoWeekHigh { set; get; }
}
[DataContract]
public enum Exchange
{
NSE, BSE
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Net;
using System.IO;
namespace StocksToBuy
{
public class YahooStockQuote
{
public StockQuote GetQuote(string symbol, Exchange exchange)
{
try
{
string url = "http://in.finance.yahoo.com/q?s=";
if (exchange == Exchange.NSE)
url += symbol.ToUpper() +
".NS";
else
url += symbol.ToUpper() +
".BO";
string webPage = null;
HttpWebRequest webRequest;
HttpWebResponse webResponse;
webRequest = (HttpWebRequest)WebRequest.Create(url);
webResponse = (HttpWebResponse)webRequest.GetResponse();
Stream pageStream = webResponse.GetResponseStream();
StreamReader sr = new StreamReader(pageStream);
webPage = sr.ReadToEnd();
pageStream.Close();
sr.Close();
webResponse.Close();
int startIndex;
int endIndex;
int tempStartIndex;
int tempEndIndex;
string temp;
// Last Traded Value
startIndex = webPage.IndexOf("Last Trade:</th><td class=\"yfnc_tabledata1\"><big><b>") + 52;
endIndex = webPage.IndexOf("</b>", startIndex);
temp = webPage.Substring(startIndex, endIndex - startIndex);
tempStartIndex = temp.IndexOf('>') + 1;
tempEndIndex = temp.IndexOf('<', tempStartIndex);
string lastPrice = temp.Substring(tempStartIndex, tempEndIndex - tempStartIndex);
// Last Trade Time
startIndex = webPage.IndexOf("Trade Time:</th><td class=\"yfnc_tabledata1\">", endIndex) + 44;
endIndex = webPage.IndexOf("</td>", startIndex);
temp = webPage.Substring(startIndex, endIndex - startIndex);
tempStartIndex = temp.IndexOf('>') + 1;
tempEndIndex = temp.IndexOf('<', tempStartIndex);
string lastTradeTime = temp.Substring(tempStartIndex, tempEndIndex - tempStartIndex);
// Previous close
startIndex = webPage.IndexOf("Prev Close:</th><td class=\"yfnc_tabledata1\">", endIndex) + 44;
endIndex = webPage.IndexOf('<', startIndex);
string previousClose = webPage.Substring(startIndex, endIndex - startIndex);
//Open price
startIndex = webPage.IndexOf("Open:</th><td class=\"yfnc_tabledata1\">", endIndex) + 38;
endIndex = webPage.IndexOf('<', startIndex);
string open = webPage.Substring(startIndex, endIndex - startIndex);
//Day Low and Day High
startIndex = webPage.IndexOf("Day's Range:</th><td class=\"yfnc_tabledata1\">", endIndex) + 45;
endIndex = webPage.IndexOf("</td>", startIndex);
temp = webPage.Substring(startIndex, endIndex - startIndex);
tempStartIndex = temp.IndexOf("\">") + 2;
tempEndIndex = temp.IndexOf('<', tempStartIndex);
string dayLow = temp.Substring(tempStartIndex, tempEndIndex - tempStartIndex);
tempStartIndex = temp.IndexOf("\">", tempEndIndex) + 2;
tempEndIndex = temp.IndexOf('<', tempStartIndex);
string dayHigh = temp.Substring(tempStartIndex, tempEndIndex - tempStartIndex);
//52 Week Low and 52 Week High
startIndex = webPage.IndexOf("Range:</th><td class=\"yfnc_tabledata1\"><", endIndex) + 39;
endIndex = webPage.IndexOf("</td>", startIndex);
temp = webPage.Substring(startIndex, endIndex - startIndex);
tempStartIndex = temp.IndexOf('>') + 1;
tempEndIndex = temp.IndexOf('<', tempStartIndex);
string Fifty2WeekLow = temp.Substring(tempStartIndex, tempEndIndex - tempStartIndex);
tempStartIndex = temp.IndexOf('>', temp.IndexOf('-')) + 1;
tempEndIndex = temp.IndexOf('<', tempStartIndex);
string Fifty2WeekHigh = temp.Substring(tempStartIndex, tempEndIndex - tempStartIndex);
return new StockQuote
{
LastPrice = Convert.ToDecimal(lastPrice),
DayHigh = Convert.ToDecimal(dayHigh),
DayLow = Convert.ToDecimal(dayLow),
FiftyTwoWeekHigh = Convert.ToDecimal(Fifty2WeekHigh),
FiftyTwoWeekLow = Convert.ToDecimal(Fifty2WeekLow),
LastTraded = Convert.ToDateTime(lastTradeTime),
LastTradedString=lastTradeTime,
Open = Convert.ToDecimal(open),
PreviousClose = Convert.ToDecimal(previousClose)
};
}
catch
{
return new StockQuote();
}
}
}
}