Matlab通过Yahoo与Sina获取历史与实时股票数据

     最近需要进行Matlab培训,与金融从业人员相比,很多学生或非金融行业的人员没有Wind等其他数据源。为学习或了解Matlab的金融数量分析,不仅需要学习Matlab语法,更重要的是需要根据实际数据进行实践,为此自己花些时间整理一下Matlab通过Yahoo与Sina获取历史与实时股票数据的代码与案例。
金融数据Matlab接口(Finance Data Matlab Interface)基于Yahoo与Sina的金融数据接口为Matlab提供金融数据,数据主要包括股票、指数、交易型基金的历史行情与实时行情数据(点击下载)

说明:

  • 历史数据通过Yahoo接口获得 (历史数据为未复权数据,使用时候请注意)
  • 实时数据通过Sina的接口获得
  • Yahoo中证券代码为 (上海 .ss 深圳 .sz),例如招商银行,600036.ss

[DateV,PriceV]=YahooData(’600005.ss’, ’01/01/2005′, ’12/31/2008′, ‘d’)

  • Sina中证券代码为 (sh. 上海 sz.深圳),例如招商银行sh600036

StockCode=’sh600036′; [Name,OpenPrice,ClosePrice,TPrice]=SinaData(StockCode)

1.通过yahoo提去股票历史数据(测试函数)

?View Code LANGUAGE
%提取数据 武钢股份(上海交易所)
[DateV,PriceV]=YahooData('600005.ss', '01/01/2005', '12/31/2008', 'd')
%将A数据 A的格式[价格、日期] 采用的matlab编码形式,以整数编码
%将A数据 转变为时间序列
%画图
plot(DateV,PriceV);
dateaxis('x',2);

2.通过yahoo提取股票历史数据(代码函数)

?View Code LANGUAGE
function [DateV,PriceV]=YahooData(StockName, StartDate, EndDate, Freq)
% 输入参数
% StockName 证券代码(上海 .ss 深圳 .sz)
% StartDate, EndDate 时间段的开始日与结束日
% Freq 频率
% This engine is used for a rapid searching in Yahoo!Finance for retriving
% Financial Data.
%%
%数据时间区间
startdate=StartDate;
enddate=EndDate;
%字符串变化
ms=num2str(str2num(datestr(startdate, 'mm'))-1);
ds=datestr(startdate, 'dd');
ys=datestr(startdate, 'yyyy');
me=num2str(str2num(datestr(enddate, 'mm'))-1);
de=datestr(enddate, 'dd');
ye=datestr(enddate, 'yyyy');
 
url2Read=sprintf('http://ichart.finance.yahoo.com/table.csv?s=%s&a=%s&b=%s&c=%s&d=%s&e=%s&f=%s&g=%s&ignore=.csv', StockName, ms, ds, ys, me, de, ye, Freq);
s=urlread(url2Read);
 
[Date Open High Low Close Volume AdjClose]=strread (s, '%s %s %s %s %s %s %s', 'delimiter', ',');
 
Date(1)=[];
AdjClose(1)=[];
 
row=size(Date, 1);
for i = 1:row
 
Date_temp(i, 1)=datenum(cell2mat(Date(i)), 'yyyy-mm-dd');
AdjClose_temp(i, 1)=str2num(cell2mat(AdjClose(i)));
 
end
DateV=Date_temp;
PriceV=AdjClose_temp;
%存储M文件
% root=[pwd, '\'];
% filename=[root, StockName, '.mat'];
% save(filename, 'stock_Price') ;
 
end

3.通过Sina提取实时股票数据(测试函数)

?View Code LANGUAGE
%提取数据 招商银行(上海交易所)
StockCode='sh600036';
[Name,OpenPrice,ClosePrice,TPrice]=SinaData(StockCode)

4.通过Sina提取实时股票数据(代码函数)

?View Code LANGUAGE
function [Name,OpenPrice,ClosePrice,TPrice]=SinaData(StockCode)
% 输入参数
% StockCode 证券代码(上海sh+code 深圳 sz+code)
%
% This engine is used for a rapid searching in Sina !Finance for retriving
% Financial Data.
%StockName='sh601006';
url2Read=['http://hq.sinajs.cn/list=',StockCode];
s=urlread(url2Read);
result=strread(s,'%s','delimiter', ',');
Name=cell2mat(result(1));%名称
Name=Name(22:end);
OpenPrice=str2num(cell2mat(result(2)));% 今日开盘价;
PreClosePrice=str2num(cell2mat(result(3)));% 昨日收盘价;
TPrice=str2num(cell2mat(result(4)));% 当前价格;
end

One thought on “Matlab通过Yahoo与Sina获取历史与实时股票数据

  1. Pingback: Matlab如何获取实时行情数据 - Ariszheng–专注领域: 产品设计 量化投资 Matlab/R

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>