经管之家送您一份
应届毕业生专属福利!
求职就业群
感谢您参与论坛问题回答
经管之家送您两个论坛币!
+2 论坛币
- % 例子
- % load stocklistA;tic;[data,name]=get_stock_tick(stocklistA(:,4));toc
-
- function [data,name]=get_stock_tick(stocklist) % 获取股票实时盘口数据
- data=[];
- name=[];
- str=get_str(stocklist); % 获取需要解析
- %% 判断是A股还是港股,美股
- s=stocklist{1,1};
- s=s(1);
- if strcmp(s,'s') % A股
- N=1;
- elseif strcmp(s,'r') % 港股
- N=2;
- else % 美股
- N=3;
- end
- [data,name]=get_data(str,N,stocklist) ;% 解析
- end
- function str=get_str(stocklist) % 获取需要解析的字符
- N=size(stocklist,1);
- N1=800;
- M=ceil(N/N1);
- str=[];
- for i=1:M
- ind1=(i-1)*N1 1;
- ind2=min(i*N1,N);
- symbol=[];
- for j=ind1:ind2
- symbolT=stocklist{j,1};
- if size(symbol,1)==0
- symbol=symbolT;
- else
- symbol=[symbol,',',symbolT];
- end
- end
- url2Read=['http://hq.sinajs.cn/list=',symbol];
- strT=urlread(url2Read);
- str=[str,strT];
- end
- end
-
- function [data,name]=get_data(str,N,stocklist) % 解析
- NN=N;
- datacell=textscan(str,'%s','delimiter', ',');
- datacell=datacell{1,1};
- ind=strfind(datacell,'var hq_str' );
- indA=find(~cellfun(@isempty,ind));
- indDiff=[indA(1:end-1)-indA(2:end);indA(end)-size(ind,1)-1];
- indD=find(indDiff~=min(indDiff));
- indNow=find(indDiff==min(indDiff));
- indB=indA;
- indB(indD)=[];
- datacell(indA,:)=[];
- N=size(datacell,1)/size(indB,1);
- M=size(indB,1);
- dataA=reshape(datacell,N,M);
- if NN==1
- dataA=dataA(1:end-3,:);
- name={'今日开盘价';'昨日收盘价';'最近成交价';'最高成交价';'最低成交价';'买入价';'卖出价';'成交数量';'成交金额';...
- '买数量一';'买价位一';'买数量二';'买价位二';'买数量三';',买价位三';'买数量四';'买价位四';'买数量五';...
- '买价位五';'卖数量一';'卖价位一';'卖数量二';'卖价位二';'卖数量三';'卖价位三';'卖数量四';'卖价位四';'卖数量五';'卖价位五'};
- elseif NN==2
- dataA=dataA(2:16,:);
- name={'开盘';'昨收';'最高';'最低';'当前';'涨跌额';'涨跌幅';'卖一';'买一';'成交额';'成交量';'市盈率';'收益率';'52周最高';'52周最低'};
- else
- dataA([3 14 24 25 27],:)=[];
- name={'最新价';'涨跌幅';'涨跌额';'开盘价';'最高价';'最低价';'52周最高价';'52周最低价';'成交量(单位股)';'平均成交量(单位股)';...
- '市值(单位元)';'每股收益,市盈率';'fpe';'贝塔系数';'股息,收益率,总股本(单位元)';'instown';'盘前盘后价';...
- '盘前盘后涨跌幅';'盘前盘后涨跌额';'昨收价'};
- end
- dataB=str2num(char(dataA));
- dataC=reshape(dataB,size(dataA,1),M);
- data=nan(size(dataC,1),size(stocklist,1));
- data(:,indNow)=dataC;
-
- end
复制代码
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
|