《量化投资:以MATLAB为工具》

MATLAB技术论坛

 找回密码
 注册账号
查看: 7865|回复: 17
收起左侧

[源码] matlab编程自动从yahoo获取上证A股所有股票数据

  [复制链接]
发表于 2014-3-3 23:54:51 | 显示全部楼层 |阅读模式
%by yupengfang 2014.03.03 1253582364@qq.com
%利用fetch函数自动读取当日至前一个月的上证A股所有股票的收盘价,即2400多只股票一个月
%的收盘价,鄙人09年买的电脑,华硕,CPU酷睿2,学校坑爹的网速的情况下,用时Elapsed time is 784.235750 seconds.
%速度还是可以接受的,用于短期数据分析的话比较快捷。
%获取的数据保存在data矩阵中,后续的数据分析和预测可以用这个矩阵就可以了。程序比较粗糙,欢迎大家指正批评。
tic
clear;
close all;
a=readallcode;%从txt读取股票代码,自编的程序
clc
num=length(a);
con=yahoo;
e=datestr(today,23);
s=datestr(today-30,23);
i=1;
data=[];
while i<=num
    i
    code=[];
    gupiao=[];
    code=[a(i,:) '.ss'];
    try%跳过不能获取的股票
      i=i+1;
      gupiao=fetch(con,code,'close',s,e);
      gupiao1=[str2double(a(i,:));gupiao(:,2)];%提取收盘价
      data=[data,gupiao1];%保存获取的股票代码和对应的股票数据
    catch
       continue
    end
end
toc


%by yupengfang 2014.03.03 1253582364@qq.com
%从A股所有股票代码.txt文件中读取股票代码,可以从网上找到资源。
function a=readallcode
[fid,message]=fopen('F:\数学建模\数据\A股所有股票代码.txt');
a=[];
if fid==-1
disp(message)
else
    while 1
    tline=fgetl(fid);
    if ~ischar(tline)
        break;
    end
    a=[a;tline];
    end
end




A股所有股票代码.txt (19.02 KB, 下载次数: 273)

评分

参与人数 1贝壳 +6 收起 理由
faruto + 6 感谢您分享自己珍贵的资料

查看全部评分

发表于 2015-9-26 11:00:31 | 显示全部楼层
感谢楼主,不知道有没有从新浪获取数据的方法?
回复 支持 反对

使用道具 举报

发表于 2015-9-26 12:46:03 | 显示全部楼层
疯狂管理工具进口量
回复 支持 反对

使用道具 举报

发表于 2015-6-29 18:20:06 | 显示全部楼层
谢谢分享,精华代码啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-3 23:56:04 | 显示全部楼层
balabalabalabal
回复 支持 反对

使用道具 举报

发表于 2014-3-9 11:43:08 | 显示全部楼层
楼主的策略,貌似读出来的数据和行情价格对不上号啊试了几只股票,前复权,后复权,不复权,价格都不对啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-17 22:17:45 | 显示全部楼层
wang.孙 发表于 2014-3-9 11:43
楼主的策略,貌似读出来的数据和行情价格对不上号啊试了几只股票,前复权,后复权,不复权,价格都不对啊

程序有错误,现在发现了,在改,谢谢提醒
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-17 22:36:52 | 显示全部楼层
我的首页吧 发表于 2014-3-17 22:17
程序有错误,现在发现了,在改,谢谢提醒

把   code=[a(i,:) '.ss'];放在i=i+1的后面就好了。另外fetch调出来的数据都是从最下面往最上面读的,所以最下面的数据是日期最近的数据。另外,fetch最早好像只能读取倒数第二天的数据。这样就对了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-17 22:37:50 | 显示全部楼层
wang.孙 发表于 2014-3-9 11:43
楼主的策略,貌似读出来的数据和行情价格对不上号啊试了几只股票,前复权,后复权,不复权,价格都不对啊

把   code=[a(i,:) '.ss'];放在i=i+1的后面就好了。另外fetch调出来的数据都是从最下面往最上面读的,所以最下面的数据是日期最近的数据。另外,fetch最早好像只能读取倒数第二天的数据。这样就对了。

回复 支持 反对

使用道具 举报

发表于 2014-4-13 18:09:01 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2014-4-13 23:11:22 | 显示全部楼层
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
回复 支持 反对

使用道具 举报

发表于 2014-4-15 17:05:32 | 显示全部楼层
多谢楼主 试了次确实可行  
不过这方法效率不行,没法批量获取数据
我找到可以高效得到即时数据的方法了,还免费 哈哈
希望同好一起交流 我的Q 1950 - 9549- 39   注明:matlab
回复 支持 反对

使用道具 举报

匿名  发表于 1970-1-1 08:00:00
post_deleted
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|网站地图|MATLAB技术论坛|Simulink仿真论坛 ( 蜀ICP备19014457号 

GMT+8, 2020-8-6 06:28 , Processed in 0.054568 second(s), 14 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表