按照之前的想法,今天做了stock history的数据的获得。所用的stock 是用的google中的china资产组合,不过其中有一些好像在yahoo finance中没有历史数据,所以没有办法用这个办法得到结果,list总共是146家中国的股票,在所有的中国股票中除去了(YTEC,ASTTY,ORS,PACT,MGH,ADL,ATYM,CRGIY)这些股票大多是股价在1.00以类或者yahoo上没有历史记录的。我也没有去看那个list上的中国公司都有些那的,不过样本就用这146吧。
最主要的问题在于这些得到的数据的格式,因为在04年到现在的这些股票,他们的交易日期其实很不一样,最normal的股票有1414个交易日,不过很多股票没有这个数,有些甚至只有300多天,而且我是按照list的顺序存在几个变量中的,变量作为一个2为数组A(a,b)其中A(:,b)代表的是在list中b位置的历史数值,由于中间可能存在一些数据个数的不一样,我们得到的数据维数其实是很不规则的,这个在后面的处理中还要好好倒腾下了。
另外的问题就是这个速度太慢了,由于这个method是建立在load进入网页后读取网页编码的办法,理论上load进去网络就决定了函数的运行速度,我们家的adsl 无线网,一个stock的处理要14s左右,运行所有的要35分钟,还有就是程序中没有错误处理的解决,我是自己一个个load后发现有些没与历史数据而强行终止的得到的,不过再往后就不可能再是这样了,试试建立一个错误的处理过程。
速度太慢了,甚至让我有放弃的感觉了。痛苦啊。
PS:最后下载数据的时候还是出错了,我一直觉得是我用的组合有问题,那个上面不仅仅有nyse nasdaq还有一些otc的,于是上nyse下了一个china的list 45+搜罗了nasdaq的总共是109个。尝试用新的再做一次了。
接下来就是建立一个数据库吧这些数据都放进去,为什么要是数据库其他的不行吗?我琢磨了下,因为我想把历史数据和option数据都放进去,所以还是试试用数据库吧,excel和access缓缓把,用的Sql,怎么建,google大神了。
下面是历史数据的主程序了
% A function for get the stock history price in the internet.
% whool.net
% step1 load the list of stock from txt.
function [HIS_DATE, HIST_HIGH, HIST_LOW, HIST_OPEN, HIST_CLOSE, \
HIST_VOL] =PJ_HIS _STOCK (STOCK_LIST)
for i=1:146
[hist_date, hist_high, hist_low, hist_open, hist_close, \
hist_vol,ptr] = get_hist _stock _data (STOCK_LIST (i))
HIS_DATE (1:ptr-1,i)=hist_date (:,1);
HIST_HIGH (1:ptr-1,i)=hist_high (:,1);
HIST_LOW (1:ptr-1,i)=hist_low (:,1);
HIST_OPEN (1:ptr-1,i)=hist_open (:,1);
HIST_CLOSE (1:ptr-1,i)=hist_close (:,1);
HIST_VOL (1:ptr-1,i)=hist_vol (:,1);
clear hist_date hist_high hist_low hist_open hist_close hist_vol \
ptr
end
end
你感兴趣的.....
Tags: data · history · stock2 Comments








发现matlab的yahoo数据接口组件了
connection_obj=yahoo
fetch(connecrtion_obj,’goog’).
fetch(connection_obj,’goog’,'close’,'01/01/2004′.’1/3/2009′)
速度和我的差不多,最重要的是得到是一个X*7的数组,这个可就比我的草根代码好多了
[回复]
虽然有这个数据接口,不过得到的价格好像并没有经过加权处理,这样很难用啊,如果做多了,碰上变态的spilt就很麻烦了
[回复]