加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

用MATLAB获取新浪股票数据

(2017-04-15 12:33:38)
标签:

matlab

m代码

股票

新浪股票数据接口

炒股票自然要做家庭作业,现在的股票家庭作业自然也不能继续停留在手工计算或揿计算器的时代了,取而代之的用计算机自动来算,为此必须先获得股票数据,这次家庭作业要用到恒生中国企业指数有关数据,却发现平时管用的计算机自动数据读取程序却不管用了,考虑到用MATLAB读取新浪股票数据、显示数据比较方便,为此复习了一下这方面M代码知识,并将复习“成果”记在这里。
用MATLAB获取新浪股票数据的M代码,如下所示:

clc;close all;clear all;

url='http://hq.sinajs.cn/list=';

stock_code='sz000877';%'sh601212';%'sh601006';
url1=strcat(url,stock_code);
s = urlread(url1)
%length(s);
[sd,j]=stockdata(s)

stock_code='sh000001';
url1=strcat(url,stock_code);
s = urlread(url1)
%length(s);
[sd,j]=stockdata(s)

stock_code='hkHSCEI';
url1=strcat(url,stock_code);
s = urlread(url1)
%length(s);
[sd,j]=stockdata(s)

for k=601001:601005
    stock_code=num2str(k);
    stock_code=strcat('sh',stock_code)
    %stock_code='hkHSCEI';
    url1=strcat(url,stock_code);
    s = urlread(url1)
    if ~isempty(s)
        [sd,j]=stockdata(s)
    end
end

function  [sd,j]=stockdata(s)
n=length(s);
sd=cell(1,32);
str='';
j=0;
flag1=0;
for i=1:n-1
    if s(i)=='"' 
        flag1=1;
    end
    if flag1==1 &&  s(i)~=',' 
        if  s(i)~='"'  && s(i)~=';' %&& s(i)~=' '
           str=strcat(str,s(i));
        %else
            %str=strcat(str,'_');
        end      
    %elseif flag1==1 &&  (s(i)==','|| s(i)=='"')
    elseif flag1==1 &&  s(i)==','    %|| s(i)=='"')
        j=j+1;
        sd{1,j}=str;
        str='';
    end
end
 
j=j+1;
sd{1,j}=str;
str='';

主程序的前半部分是获取单个股票数据,后半部分是获取连续代码股票数据,从网站上获取的股票数据只是一串文本,为此,要对此文本进行解析,那么stockdata()就是解析股票数据的。

回到前文,运行这个代码可以发现恒生中国企业指数的数据格式与别的股票数据格式不同,怪不得出错。

这个代码只是简单试验性的,你可以根据自己的需求作改进,比如,你的“家庭作业”是在EXCEL中的,那么需要增加读写EXCEL的语句,如果要循环读取数据,则要增加一个定时器语句等,总之要按照你自己的要求来改进。
    

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有