52matlab技术网站,matlab教程,matlab安装教程,matlab下载

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 5948|回复: 0
打印 上一主题 下一主题

Matlab获取股票实时行情信息

[复制链接]

123

主题

207

帖子

2996

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2996
跳转到指定楼层
楼主
发表于 2018-4-27 15:59:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 matlab的旋律 于 2018-8-15 05:39 编辑

      对非金融从业人员来说,大部分人员没有Wind等其他股票数据源,同时股票信息也是一类常见的时序信号。因此,为方便广大的非金融从业人员以及时序信号处理爱好者,本文给出Matlab通过Sina获取实时股票数据,同时通过GUI显示股票实时信息和股价变化曲线的代码使用说明。实时获取股票gui如下图

      以平安银行(股票代码:000001)为例,如果要获取它的最新行情,只需访问新浪的股票数据,输入的url为:
url= 'http://hq.sinajs.cn/list=sz000001';
通过Matlab自带的库函数urlread对url进行操作,quotes_page=urlread(url);得到输出:
var hq_str_sz000001="平安银行,11.490,11.420,10.850,11.510,10.630,10.850,10.860,270979568,2958464277.860,1376408,10.850,509000,10.840,354065,10.830,319800,10.820,284400,10.810,451100,10.860,379866,10.870,222505,10.880,103917,10.890,106705,10.900,2018-04-27,15:05:03,00";
这个字符串由许多数据拼接在一起,不同含义的数据用逗号隔开了,按照Matlab的操作习惯,顺序号从1开始。
1:平安银行,股票名字;
2:11.490,今日开盘价;
3:11.420,昨日收盘价;
4:10.850,当前价格;
5:11.510,今日最高价;
6:10.630,今日最低价;
7:10.850,竞买价,即“买一”报价;
8:10.860,竞卖价,即“卖一”报价;
9:270979568,成交的股票数,由于股票交易以一百股为基本单位,所以在使用时,通常把该值除以一百;
10:2958464277.860,成交金额,单位为“元”,为了一目了然,通常以“万元”为成交金额的单位,所以通常把该值除以一万;
11:1376408,“买一”申请1376408股,即13764手;
12:10.850,“买一”报价;
(13, 14), (15, 16), (17,18), (19, 20)分别为“买二”至“买四的情况”
21:451100,“卖一”申报451100股,即4511手;
22:10.860,“卖一”报价
(23, 24), (25, 26), (27,28), (29, 30)分别为“卖二”至“卖五的情况”
31:2018-04-27,日期;
32:15:05:03,时间。

考虑到实际使用情况以及GUI显示的简洁性,本文只给出了部分指数(df),具体如下:
code: '000001'              %股票代号
name: '平安银行'            %股票名字
open: '11.490'              %今日开盘价
pre_close: '11.420'         %昨日收盘价
price: '10.850'             %当前价格
high: '11.510'              %今日最高价
low: '10.630'               %今日最低价
volume: '270979568'         %成交的股票数
amount: '2958464277.860'    %成交金额
以及当前时间(nowTimeIfo):
'2018-04-27,15:05:03'
上述操作在工程中的函数get_realtime_quotes中完成。
国内股票分为深圳交易所上市的股票,用SZ表示,即为深圳两个字的第一个字母;以及上证交易所上市的股票,用SH表示,即为上海两个字的第一个字母。另外国内股票的交易时间为:
交易日:周一~周五(法定节日除外)
9:15 —— 9:25集合竞价
9:30 —— 11:30 前市,连续竞价
13:00 —— 15:00 后市,连续竞价
(14:57——15:00深圳为收盘集合竞价)
函数code_to_symbol给出了股票指数和具体某支股票的代码信息。
因此此外的时间段该GUI的操作显示信息会不正常,目前的容错性还需要持续改进。
函数code_to_symbol给出了股票指数和具体某支股票的代码信息。
function [ code ] = code_to_symbol( code )%code股票代码

if ischar(code) % 指数
    if strcmp(code,'hs300')
        code = 'sz399300';
    elseif strcmp(code,'sh')
        code ='sh000001';
    elseif strcmp(code,'sz')
            code = 'sz399001';
    elseif strcmp(code,'sz50')
        code ='sh000016';
    elseif strcmp(code,'zxb')
        code ='sz399005';
    elseif strcmp(code,'cyb')
            code ='sz399006';
    elseif  strcmp(code,'sz300')
            code ='sz399008';
    elseif  strcmp(code,'zh500')
        code = 'sh000905';
    end
else %普通
    code=num2str(code);
    while length(code)<6
        code=['0',code];
    end
end
if code(1)=='6'||code(1)=='5'||code(1)=='9'
    code=['sh',code];
else
    code=['sz',code];
end

end
       这里科普一下指数,即股票价格指数,也就是表明股票行市变动情况的价格平均数。编制股票指数,通常以某年某月为基础,以这个基期的股票价格作为100, 用以后各时期的股票价格和基期价格比较,计算出升除的百分比,就是该时期的股票指数。投资者根据指数的升降,可以判断出股票价格的变动趋势。并且为了能实时的向投资者反映股市的动向,所有的股市几乎都是在股价变化的同时即时公布股票价格指数。 具体的计算方法较多,有兴趣的朋友可以查询相关资料。
    本文用到一个Matlab比较好玩的一个功能,即在x轴显示实时时间信息,具体的操作先对时间格式为:
nowTimeIfo =

    '2018-04-27,15:05:03'
用函数datenum进行转换,便于程序中的操作,具体如下:
>> datenum(nowTimeIfo)

ans =

          737177.628506944
即将得到的数值做为x轴信息,价格为y轴用plot绘图,最后对x轴信息用语句
datetick(handles.plot_axes_tag,'x',13)
转换为15:05:03,需要注意的这里的数值13对应的时间格式为'HH:MM:SS',如需要展示其他时间格式可以查阅datetick的帮助文档。
      有了股票的实时信息以及存储的历史信息,就可以做股票的实时预测。关于具体的预测方法,后续的文章会陆续推出,同时也作为一个开源项目会在本人个人论坛(www.52matlab.com)上分享。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|52matlab技术网站 ( 粤ICP备14005920号-5 )

GMT+8, 2024-4-26 07:40 , Processed in 0.100981 second(s), 20 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

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