Matlab支持从金融数据提供商(包括yahoo,Bloomberg和Retuters)直接读取数据,当然啦,之后Yahoo是免费的。
那么我们如何读取这些数据呢。使用fetch函数
该函数的帮助文件如下
D = fetch(C,S,D1,D2,P) returns the data for the given security for the date range D1 to D2 with a period of P. P can be
entered as:
'd' for daily values. 'w' for weekly values. 'm' for monthly values. 'v' for dividends.
现在举例说明如何使用(
斜体字代表是程序代码)
案例:绘制标普500最近360个交易日的走势图。
Step1 到
http://finance.yahoo.com 上搜索所需要股票(指数,期货,ETF等)的代码。 标普500的代码是^GSPC。
Step2 提取所需数据
fetch(yahoo,'^GSPC')
enter
显示当前该数据的最新值,以及当天的日期(数字格式)
结果如下
Symbol: {'^GSPC'}
Last: 1553.28
Date: 735329.00
Time: 0.69
Change: -6.70
Open: 1559.98
High: 1559.98
Low: 1539.50
Volume: 547925568.00
当天时期减去380(一年365天,大约260个交易日,还有休市,所以选择380)。
然后使用函数 fetch
输入程序
735329.00-380
ans =
734949.00
a=fetch(yahoo,'^GSPC', 734949.00,735329.00,'d')
得到如下结果
735329.00 1559.98 1559.98 1539.50 1553.28 3515410000.00 1553.28
735328.00 1553.69 1562.60 1552.52 1559.98 3350670000.00 1559.98
...
矩阵的各列分别表示(注意时间从上到下是倒序)
Date Open High Low Close Volume Adj Close*
我们只需要第五列数据,而且时间是从过去到现在的。输入下面命名
SPClose= flipud(a(1:260,5)) % flipud 是将矩阵的行进行倒排 , %
得到收盘价最新260个交易日的数据,且是按时间由过去到现在
数据已经得到。
Step3 绘图
在 Workspace中找到SPClose 可以看到它是260*1 double类型的数据
选中该变量,然后直接在Plot标签页中选择所需要的图形类型(这里选择plot图)。
如果是Matlab的较低版本可以在命令窗口中输入
plot(SPClose)
完成!
觉得有用记得给我评分呦!