CodeCharge Studio
search Register Login  

Visual PHP Web Development

Visually Create Internationalized Web Applications, Web Reports, Calendars, and more.
CodeCharge.com

YesSoftware Forums -> Archive -> GotoCode Archive

 Pull Stock Prices

Print topic Send  topic

Author Message
Kip Dole
Posted: 09/08/2003, 2:15 PM

Hello,

How would I automatically pull in 15 minute delay stock prices to my application. Thanks for your help.

Kip
Hamilton
Posted: 09/09/2003, 7:08 AM

You will need to create 3 files, as follows;

File Name: SimpleXMLStockScraper.xsl

<?xml version="1.0" ?>
- <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" version="2.0">
<xsl:output method="html" />
- <xsl:template match="stocks">
- <table border="1">
- <tr>
- <th>
<p>Symbol</p>
</th>
- <th>
<p>Last Trade Value</p>
</th>
- <th>
<p>Last Trade Date</p>
</th>
- <th>
<p>Last Trade Time</p>
</th>
- <th>
<p>Change</p>
</th>
- <th>
<p>Open</p>
</th>
- <th>
<p>Days Range High</p>
</th>
- <th>
<p>Days Range Low</p>
</th>
- <th>
<p>Volume</p>
</th>
</tr>
- <xsl:for-each select="stock">
- <tr>
- <td>
- <p>
<xsl:value-of select="symbol" />
</p>
</td>
- <td>
- <p>
<xsl:value-of select="last_trade_value" />
</p>
</td>
- <td>
- <p>
<xsl:value-of select="last_trade_date" />
</p>
</td>
- <td>
- <p>
<xsl:value-of select="last_trade_time" />
</p>
</td>
- <td>
- <p>
<xsl:value-of select="change" />
</p>
</td>
- <td>
- <p>
<xsl:value-of select="open" />
</p>
</td>
- <td>
- <p>
<xsl:value-of select="days_range_high" />
</p>
</td>
- <td>
- <p>
<xsl:value-of select="days_range_low" />
</p>
</td>
- <td>
- <p>
<xsl:value-of select="volume" />
</p>
</td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>

*********************************************************
File Name: SimpleXMLStockScraper.asp

<% Option Explicit %>

<!-- #include file="SimpleXMLStockScraperClass.asp" -->

<html>
<head>
<title>Simple XML Stock Scraper Demo</title>
</head>
<body>
<form method="post">
<table border="1">
<tr>
<td colspan="2"><p>Enter Stock Symbols (seperated by commas)</p></td>
</tr>
<tr>
<td><input type="text" value="MSFT,DELL,^DJI" name="frmSymbols" /></td>
<td><input type="submit" value="Get Quote" /></td>
</tr>
</table>
</form>

<%
If Not IsEmpty(Request.Form("frmSymbols")) Then
Dim objXMLQuote, _
objXMLDOMDocument, _
objXMLDOMStyleSheet

' Create an instance of the class
Set objXMLQuote = New XMLQuote
' Add submitted symbols
objXMLQuote.AddSymbols(Request.Form("frmSymbols"))
' Retrieve the XML document from the class
Set objXMLDOMDocument = objXMLQuote.GetXMLQuote()

' Create and load an XSL stylesheet
Set objXMLDOMStyleSheet = Server.CreateObject("MSXML2.DOMDocument")
objXMLDOMStyleSheet.Async = False
objXMLDOMStyleSheet.Load Server.MapPath("SimpleXMLStockScraper.xsl")
' Write transformed XML document
Response.Write objXMLDOMDocument.TransformNode(objXMLDOMStyleSheet)

Set objXMLDOMStyleSheet = Nothing
Set objXMLDOMDocument = Nothing
Set objXMLQuote = Nothing
End If
%>

</body>
</html>

********************************************************
File Name: SimpleXMLStockScraperClass.asp

<%
Class XMLQuote
Dim arrSymbols

Private Function AddSymbol(ByVal strNewSymbol)
If IsEmpty(arrSymbols) Then
ReDim arrSymbols(0)
Else
ReDim Preserve arrSymbols(UBound(arrSymbols) + 1)
End If
arrSymbols(UBound(arrSymbols)) = strNewSymbol
End Function

Public Function AddSymbols(ByVal arrNewSymbols)
Dim i
arrNewSymbols = Split(Replace(arrNewSymbols, " ", ""), ",")
For i = 0 to UBound(arrNewSymbols)
Addsymbol(arrNewSymbols(i))
Next
End Function

Public Function GetXMLQuote()
Dim objXMLDOMDocument, _
objXMLDOMBody, _
objXMLDOMNode, _
objXMLDOMBodyNode, _
objXMLHTTP, _
strSymbols, _
strQuote, _
strQuoteField, _
strQuoteFieldNames, _
i, j

Set objxMLDOMDocument = Server.Createobject("MSXML2.DOMDocument")
objXMLDOMDocument.AppendChild objXMLDOMDocument.CreateProcessingInstruction("xml", "version=""1.0""")
strSymbols = Join(arrSymbols, "+")
strQuoteFieldNames = Array("symbol", "last_trade_value", "last_trade_date", "last_trade_time", "change", "open", "days_range_high", "days_range_low", "volume")

On Error Resume Next
Set objXMLHTTP = Server.CreateObject("MSXML2.XMLHTTP")
objXMLHTTP.Open "GET", "http://finance.yahoo.com/d/quotes.csv?s=" & strSymbols & "&f=sl1d1t1c1ohgv&e=.csv", False
objXMLHTTP.Send
On Error Goto 0

If objXMLHTTP.Status = 200 Then
strQuote = Split(objXMLHTTP.ResponseText, vbCrLf)
Set objXMLDOMBody = objXMLDOMDocument.CreateElement("stocks")
For i = 0 To UBound(strQuote) - 1
strQuoteField = Split(Replace(strQuote(i), """", ""), ",")
Set objXMLDOMBodyNode = objXMLDOMDocument.CreateElement("stock")
For j = 0 To UBound(strQuoteField)
Set objXMLDOMNode = objXMLDOMDocument.CreateElement(strQuoteFieldNames(j))
objXMLDOMNode.Text = strQuoteField(j)
objXMLDOMBodyNode.AppendChild objXMLDOMNode
Next
objXMLDOMBody.AppendChild objXMLDOMBodyNode
Next
objXMLDOMDocument.AppendChild objXMLDOMBody
Else
Set objXMLDOMBody = objXMLDOMDocument.CreateElement("error")
Set objXMLDOMNode = objXMLDOMDocument.CreateElement("error_code")
objXMLDOMNode.Text = objXMLHTTP.Status
objXMLDOMBody.AppendChild objXMLDOMNode
Set objXMLDOMNode = objXMLDOMDocument.CreateElement("error_text")
objXMLDOMNode.Text = objXMLHTTP.StatusText
objXMLDOMBody.AppendChild objXMLDOMNode
objXMLDOMDocument.AppendChild objXMLDOMBody
End If
Set GetXMLQuote = objXMLDOMDocument
End Function
End Class
%>
Kip Dole
Posted: 09/09/2003, 9:16 AM

Thanks for the reply. I will give it a try!


   


These are Community Forums for users to exchange information.
If you would like to obtain technical product help please visit http://support.yessoftware.com.

Web Database

Join thousands of Web developers who build Web applications with minimal coding.
CodeCharge.com

Home   |    Search   |    Members   |    Register   |    Login


Powered by UltraApps Forum created with CodeCharge Studio
Copyright © 2003-2004 by UltraApps.com  and YesSoftware, Inc.