## 1169 Reputation

11 years, 206 days

My role is to help customers better exploit our tools. I’ve worked in selling, supporting and marketing maths and simulation software for all my professional career.

I’m fascinated by the full breadth and range of application of Maple. From financial mathematics and engineering to probability and calculus, I’m always impressed by what our users do with our tools.

However much I strenuously deny it, I’m a geek at heart. My first encounter with Maple was as an undergraduate when I used it to symbolically solve the differential equations that described the heat transfer in a series of stirred tanks. My colleagues brute-forced the problem with a numerical solution in Fortran (but they got the marks because that was the point of the course). I’ve since dramatized the process in a worksheet, and never fail to bore people with the story behind it.

I was born, raised and spent my formative years in England’s second city, Birmingham. I graduated with a degree in Chemical Engineering from The University of Nottingham, and after completing a PhD in Fluid Dynamics at Herriot-Watt University in Edinburgh, I started working for Adept Scientific – Maplesoft’s partner in the UK.

## What elements are you having problems wi...

What elements are you having problems with? Can you post a simple example?

Samir

## Funnily enough I needed to...

Funnily enough I needed to do exactly this a month ago for an app I was writing. This code downloads weather data (from wunderground.com) for Waterloo International Airport, airport code YKF (the airport referenced in your link) for 13th May 2010.

restart;
with(Sockets); sid :=
Open("www.wunderground.com", 80);
Write(sid, cat("GET /history/airport/CYKF/2010/05/13/DailyHistory.html?HideSpecis=0&format=0 HTTP/1.0 \n\n")):
str := "":
while b <> false do
str := cat(str, b):
end do:
Close(sid):
str;

If you really wanted to use the Environment Canada website you pointed to, then examine the [CSV] download link near the bottom of the webpage - it links to http://www.climate.weatheroffice.gc.ca/climateData/bulkdata_e.html?timeframe=2&Prov=XX&StationID=32008&Year=2010&Month=4&Day=1&format=csv&type=dly

All you'd need to do is reconcile that link against the code above. Try it out, but if you have problems let me know.

Samir

## Funnily enough I needed to...

Funnily enough I needed to do exactly this a month ago for an app I was writing. This code downloads weather data (from wunderground.com) for Waterloo International Airport, airport code YKF (the airport referenced in your link) for 13th May 2010.

restart;
with(Sockets); sid :=
Open("www.wunderground.com", 80);
Write(sid, cat("GET /history/airport/CYKF/2010/05/13/DailyHistory.html?HideSpecis=0&format=0 HTTP/1.0 \n\n")):
str := "":
while b <> false do
str := cat(str, b):
end do:
Close(sid):
str;

If you really wanted to use the Environment Canada website you pointed to, then examine the [CSV] download link near the bottom of the webpage - it links to http://www.climate.weatheroffice.gc.ca/climateData/bulkdata_e.html?timeframe=2&Prov=XX&StationID=32008&Year=2010&Month=4&Day=1&format=csv&type=dly

All you'd need to do is reconcile that link against the code above. Try it out, but if you have problems let me know.

Samir

## Chris, We're working towads parallelizi...

Chris,

We're working towads parallelizing our math library.  Due to its size and complexity, however, we can't make any promises about when any particular features will be available.

In the meantime, one of our senior kernel developers, Darin Ohashi, has blogged about the topic in detail over at http://www.mapleprimes.com/blog/dohashi

Samir

## I've edited my post - you...

I've edited my post - you should be able to figure it out

## I've edited my post - you...

I've edited my post - you should be able to figure it out

## This grabs all the SP500...

This grabs all the SP500 data.

str := "":
for page from 0 to 450 by 50 do
Sockets:-Write(sid, cat("GET /d/quotes.csv?s=@%5EGSPC&f=sl1d1t1c1ohgv&e=.csv&h=",page," HTTP/1.0 \n\n")):
while b <> false do
str := cat(str, b):
end do:
Sockets:-Close(sid):
end do:
str;

By changing the tags in the portion of the GET request that begins "f=sl1d1t1c1ohgv", you can specify what data you want to download (which is how my original Stock Importer worksheet operates).  The the table of keywords is at the end of this post.

"sl1d1t1c1ohgv" translates to Symbol, Last Trade (Price Only), Last Trade Date, Last Trade Time, Change, Open, Day's High, Days Low, Volume

I'm currently writing all of this up for a blog post at http://www.maplesoft.com/blog/default.aspx

Yahoo Finance Tags

a2  Average Daily Volume
b  Bid
b3  Bid (Real-time)
b4  Book Value
b6  Bid Size
c  Change & Percent Change
c1  Change
c3  Commission
c6  Change (Real-time)
c8  After Hours Change (Real-time)
d  Dividend/Share
e  Earnings/Share
e1  Error Indication (returned for symbol changed / invalid)
e7  EPS Estimate Current Year
e8  EPS Estimate Next Year
e9  EPS Estimate Next Quarter
f6  Float Shares
g  Day's Low
h  Day's High
j  52-week Low
k  52-week High
g1  Holdings Gain Percent
g3  Annualized Gain
g4  Holdings Gain
g5  Holdings Gain Percent (Real-time)
g6  Holdings Gain (Real-time)
i5  Order Book (Real-time)
j1  Market Capitalization
j3  Market Cap (Real-time)
j4  EBITDA
j5  Change From 52-week Low
j6  Percent Change From 52-week Low
k1  Last Trade (Real-time) With Time
k2  Change Percent (Real-time)
k4  Change From 52-week High
k5  Percebt Change From 52-week High
l2  High Limit
l3  Low Limit
m  Day's Range
m2  Day's Range (Real-time)
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  Name
n4  Notes
o  Open
p  Previous Close
p1  Price Paid
p2  Change in Percent
p5  Price/Sales
p6  Price/Book
q  Ex-Dividend Date
r  P/E Ratio
r1  Dividend Pay Date
r2  P/E Ratio (Real-time)
r5  PEG Ratio
r6  Price/EPS Estimate Current Year
r7  Price/EPS Estimate Next Year
s  Symbol
s1  Shares Owned
s7  Short Ratio
t7  Ticker Trend
t8  1 yr Target Price
v  Volume
v1  Holdings Value
v7  Holdings Value (Real-time)
w  52-week Range
w1  Day's Value Change
w4  Day's Value Change (Real-time)
x  Stock Exchange
y  Dividend Yield

Samir

## This grabs all the SP500...

This grabs all the SP500 data.

str := "":
for page from 0 to 450 by 50 do
Sockets:-Write(sid, cat("GET /d/quotes.csv?s=@%5EGSPC&f=sl1d1t1c1ohgv&e=.csv&h=",page," HTTP/1.0 \n\n")):
while b <> false do
str := cat(str, b):
end do:
Sockets:-Close(sid):
end do:
str;

By changing the tags in the portion of the GET request that begins "f=sl1d1t1c1ohgv", you can specify what data you want to download (which is how my original Stock Importer worksheet operates).  The the table of keywords is at the end of this post.

"sl1d1t1c1ohgv" translates to Symbol, Last Trade (Price Only), Last Trade Date, Last Trade Time, Change, Open, Day's High, Days Low, Volume

I'm currently writing all of this up for a blog post at http://www.maplesoft.com/blog/default.aspx

Yahoo Finance Tags

a2  Average Daily Volume
b  Bid
b3  Bid (Real-time)
b4  Book Value
b6  Bid Size
c  Change & Percent Change
c1  Change
c3  Commission
c6  Change (Real-time)
c8  After Hours Change (Real-time)
d  Dividend/Share
e  Earnings/Share
e1  Error Indication (returned for symbol changed / invalid)
e7  EPS Estimate Current Year
e8  EPS Estimate Next Year
e9  EPS Estimate Next Quarter
f6  Float Shares
g  Day's Low
h  Day's High
j  52-week Low
k  52-week High
g1  Holdings Gain Percent
g3  Annualized Gain
g4  Holdings Gain
g5  Holdings Gain Percent (Real-time)
g6  Holdings Gain (Real-time)
i5  Order Book (Real-time)
j1  Market Capitalization
j3  Market Cap (Real-time)
j4  EBITDA
j5  Change From 52-week Low
j6  Percent Change From 52-week Low
k1  Last Trade (Real-time) With Time
k2  Change Percent (Real-time)
k4  Change From 52-week High
k5  Percebt Change From 52-week High
l2  High Limit
l3  Low Limit
m  Day's Range
m2  Day's Range (Real-time)
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  Name
n4  Notes
o  Open
p  Previous Close
p1  Price Paid
p2  Change in Percent
p5  Price/Sales
p6  Price/Book
q  Ex-Dividend Date
r  P/E Ratio
r1  Dividend Pay Date
r2  P/E Ratio (Real-time)
r5  PEG Ratio
r6  Price/EPS Estimate Current Year
r7  Price/EPS Estimate Next Year
s  Symbol
s1  Shares Owned
s7  Short Ratio
t7  Ticker Trend
t8  1 yr Target Price
v  Volume
v1  Holdings Value
v7  Holdings Value (Real-time)
w  52-week Range
w1  Day's Value Change
w4  Day's Value Change (Real-time)
x  Stock Exchange
y  Dividend Yield

Samir