Matlab实时监控股票交易数据之Timer函数应用实例
来源:互联网 发布:北方医疗大数据 编辑:程序博客网 时间:2024/04/30 15:42
现在项目中有个需求要从股票开盘开始,实时监控指定股票(例如100只股票)的交易明细数据,这边明显要用到多线程进行处理每条股票的数据,查了下Matlab相关函数,竟然没有多线程的说法,网上说唯一一个多线实现方法就是Timer,好吧,既然只提供这个,那就没什么好说的了,就去研究下这个函数呗,但突然发现Timer只是一个定时处理数据,跟多线程有什么关系呢,后来发现是我误会了,人家Timer不仅提供定时,而且多个Timer是异步执行的(之前一直以为Matlab只存在单线程,所有数据处理都是串行机制),这样就能满足我的需求啦,然后进行实现,结果确实可以达到预期效果。
这边主要介绍下使用Timer实现实时监控股票交易数据的例子,Timer的具体用法度娘中多个是,就不具体分析啦
实时监控股票交易数据这边主要分为俩个部分,一个定时脚本,一个处理单只股票的函数,这边只是各初级例子,后面还有待完善,有相关需求的朋友可以拿来参考。
1、定时脚本
%% Main_GetRealTimeStockDataTest% 定时获取股票的实时数据% by qm% Email:305638715@qq.com% 2015/09/09%% A Little Clean Worktic;% clear;% clc;% close all;format compact;%% 定时程序 data = {'600000';'600005';'600006';'600007';'300200'};Len = size(data);for i = 1:Len StockCode = data{i}; t=timer(... 'Name',['RealTimeStockData_',StockCode],... 'TimerFcn',@GetRealTimeStockData,... 'Period',5,... 'ExecutionMode','fixedrate'); set(t,'UserData',StockCode); start(t);end%% Record Timetoc;
2、针对一只股票实时数据处理(这里是将每5s数据存储到本地文件)
function [DataOutput, Status] = GetRealTimeStockData(obj,eventdata,UserData)% 获取实时交易数据% by qm% Email:305638715@qq.com% 2015/09/09 %% 输入输出预处理 DataOutput = []; Status = 0; StockCode = obj.UserData;%获取实时数据GetRTQuotes = fGetRTQuotes(); GetRTQuotes.Code = StockCode; DataCell = GetRTQuotes.GetRTQuotes();Header = { '时间','今开盘','昨收盘','当前价','今最高','今最低',... '竞买价,即“买一”报价','竞卖价,即“卖一”报价', ... '成交量,单位“股”','成交额,单位“元”',... '买一量','买一价','买二量','买二价','买三量','买三价',... '买四量','买四价','买五量','买五价', ... '卖一量','卖一价','卖二量','卖二价','卖三量','卖三价',... '卖四量','卖四价','买五量','卖五价'};DataCellTemp = {1,32}; % 数据转换DataCellTemp(1,2:30) = DataCell(2:30,1); dateTemp = [char(DataCell(31)),' ',char(DataCell(32))]; dateTemp = datenum( dateTemp, 'yyyy-mm-dd HH:MM:SS'); dateTemp = datestr(dateTemp,'yyyymmddHHMM.SS');dateTemp = str2double(dateTemp); DataCellTemp{1} = dateTemp;StockTickRealTime = DataCellTemp; disp(StockTickRealTime);%保存数据,已有文件进行追加,没有则新建% 读取数据库地址load 'Config'; HomeFolder = Config{1};FolderStr = [HomeFolder,'/DataBase/Stock/Tick_RealTime_mat/',datestr(date,'yyyy-mm-dd')];if ~isdir( FolderStr ) mkdir( FolderStr );endFileStr = [FolderStr,'/',StockCode,'_Tick_RealTime.mat'];FileExist = 0;if exist(FileStr, 'file') == 2 FileExist = 1;end% % 本地数据存在,进行尾部更新添加if 1 == FileExist try MatObj = matfile(FileStr,'Writable',true); [nrows, ncols]=size(MatObj,'StockTickRealTime'); if nrows > 0 MatObj.StockTickRealTime = [MatObj.StockTickRealTime(1:nrows,:);StockTickRealTime]; else MatObj.StockTickRealTime = StockTickRealTime; end catch errormsg str = [ StockCode,datestr(clock,'yyyy-mm-dd HH:MM:SS'),' 数据保存失败!' ]; disp(errormsg); disp(str); endend% % 本地数据不存在if 0 == FileExist save(FileStr,'StockTickRealTime','Header','-v7.3');end
针对这个需求,这个例子还不是很完善,因为要股票有开盘时间和收盘时间的说法,并不是需求一直取数据,这边可以用windows的定时任务处理,执行指定脚本,或者利用Timer本身的函数,但我这边看到Timer只有startat方法,并没有理想中的endat方法,但提供了Period 时间间隔(执行周期)和TasksToExecute 执行次数这俩个属性,就是执行多少次,执行频率加上执行次数,确实也可以算出结束时间。
0 0
- Matlab实时监控股票交易数据之Timer函数应用实例
- 应用实时监控
- Matlab处理Timer工具函数
- 实时应用系统监控平台
- linux 之 实时监控脚本
- Matlab之Cell(单元数据)函数
- android实例之——流量监控悬浮窗(实时网速的获取)
- android实例之——流量监控悬浮窗(实时网速的获取)
- Linux部署实时应用监控平台CAT
- 游戏数据实时监控和分析
- Flume实时抽取监控目录数据
- Flume实时抽取监控目录数据
- PostgreSQL 业务数据质量 实时监控 实践
- 定时器:Timer与Quartz应用实例
- Spark之sparkStream实时监控端口读取数据存入到HDFS
- Flume的使用之二——实时监控文件的数据变化并发送到工作台
- spring amqp股票交易应用DeferredResult
- Matlab之画图实例
- 浅秋,深情如画
- Hadoop权威指南第4版第7章Anatomy of a MapReduce Job Run
- java
- 在windows server 中批量绑定ip和mac的方法
- mysql中join的四种连接
- Matlab实时监控股票交易数据之Timer函数应用实例
- 黑马程序员——学习日记6
- 斯坦福Developing iOS 8 Apps学习笔记(五)
- 【硬件测试】华为2016校招·电路设计领域机考试题
- LeetCode_pascals-triangle
- 使用apktool + idea 调试smali
- 网络连接之——HttpClient(doGet和doPost)
- 解决Eclipse导入Android工程出错
- 给我半个小时记录一下最近