楼主: zhangyunchou
2889 1

[源码分享] matlab获取A股,港股,美股的全市场实时盘口数据 [推广有奖]

  • 3关注
  • 70粉丝

博士生

55%

还不是VIP/贵宾

-

威望
0
论坛币
14428 个
通用积分
26.3053
学术水平
91 点
热心指数
92 点
信用等级
86 点
经验
7388 点
帖子
85
精华
3
在线时间
155 小时
注册时间
2011-10-8
最后登录
2023-10-15

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
  1. % 例子
  2. % load stocklistA;tic;[data,name]=get_stock_tick(stocklistA(:,4));toc

  3. function [data,name]=get_stock_tick(stocklist) % 获取股票实时盘口数据
  4. data=[];
  5. name=[];
  6. str=get_str(stocklist); % 获取需要解析
  7. %% 判断是A股还是港股,美股
  8. s=stocklist{1,1};
  9. s=s(1);
  10. if strcmp(s,'s') % A股
  11.     N=1;
  12. elseif strcmp(s,'r') % 港股
  13.     N=2;
  14. else % 美股
  15.     N=3;
  16. end
  17. [data,name]=get_data(str,N,stocklist) ;% 解析
  18. end
  19. function str=get_str(stocklist) % 获取需要解析的字符
  20. N=size(stocklist,1);
  21. N1=800;
  22. M=ceil(N/N1);
  23. str=[];
  24. for i=1:M
  25.     ind1=(i-1)*N1 1;
  26.     ind2=min(i*N1,N);
  27.     symbol=[];
  28.     for j=ind1:ind2
  29.         symbolT=stocklist{j,1};
  30.         if size(symbol,1)==0
  31.             symbol=symbolT;
  32.         else
  33.             symbol=[symbol,',',symbolT];
  34.         end
  35.     end
  36.     url2Read=['http://hq.sinajs.cn/list=',symbol];
  37.     strT=urlread(url2Read);
  38.     str=[str,strT];
  39. end
  40. end

  41. function [data,name]=get_data(str,N,stocklist) % 解析
  42. NN=N;
  43. datacell=textscan(str,'%s','delimiter', ',');
  44. datacell=datacell{1,1};
  45. ind=strfind(datacell,'var hq_str' );
  46. indA=find(~cellfun(@isempty,ind));
  47. indDiff=[indA(1:end-1)-indA(2:end);indA(end)-size(ind,1)-1];
  48. indD=find(indDiff~=min(indDiff));
  49. indNow=find(indDiff==min(indDiff));
  50. indB=indA;
  51. indB(indD)=[];
  52. datacell(indA,:)=[];
  53. N=size(datacell,1)/size(indB,1);
  54. M=size(indB,1);
  55. dataA=reshape(datacell,N,M);
  56. if NN==1
  57.     dataA=dataA(1:end-3,:);
  58.     name={'今日开盘价';'昨日收盘价';'最近成交价';'最高成交价';'最低成交价';'买入价';'卖出价';'成交数量';'成交金额';...
  59.         '买数量一';'买价位一';'买数量二';'买价位二';'买数量三';',买价位三';'买数量四';'买价位四';'买数量五';...
  60.         '买价位五';'卖数量一';'卖价位一';'卖数量二';'卖价位二';'卖数量三';'卖价位三';'卖数量四';'卖价位四';'卖数量五';'卖价位五'};
  61. elseif NN==2
  62.     dataA=dataA(2:16,:);
  63.     name={'开盘';'昨收';'最高';'最低';'当前';'涨跌额';'涨跌幅';'卖一';'买一';'成交额';'成交量';'市盈率';'收益率';'52周最高';'52周最低'};
  64. else
  65.     dataA([3 14 24 25 27],:)=[];
  66.     name={'最新价';'涨跌幅';'涨跌额';'开盘价';'最高价';'最低价';'52周最高价';'52周最低价';'成交量(单位股)';'平均成交量(单位股)';...
  67.         '市值(单位元)';'每股收益,市盈率';'fpe';'贝塔系数';'股息,收益率,总股本(单位元)';'instown';'盘前盘后价';...
  68.         '盘前盘后涨跌幅';'盘前盘后涨跌额';'昨收价'};
  69. end
  70. dataB=str2num(char(dataA));
  71. dataC=reshape(dataB,size(dataA,1),M);
  72. data=nan(size(dataC,1),size(stocklist,1));
  73. data(:,indNow)=dataC;

  74. end
复制代码

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:delimiter function reshape delimit symbol

沙发
jjxm20060807 发表于 2017-7-20 20:51:10 |只看作者 |坛友微信交流群
谢谢分享

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jr
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-26 08:56