现在项目中有个需求要从股票开盘开始,实时监控指定股票(例如100只股票)的交易明细数据,这边明显要用到多线程进行处理每条股票的数据,查了下Matlab相关函数,竟然没有多线程的说法,网上说唯一一个多线实现方法就是Timer,好吧,既然只提供这个,那就没什么好说的了,就去研究下这个函数呗,但突然发现Timer只是一个定时处理数据,跟多线程有什么关系呢,后来发现是我误会了,人家Timer不仅提供定时,而且多个Timer是异步执行的(之前一直以为Matlab只存在单线程,所有数据处理都是串行机制),这样就能满足我的需求啦,然后进行实现,结果确实可以达到预期效果。

这边主要介绍下使用Timer实现实时监控股票交易数据的例子,Timer的具体用法度娘中多个是,就不具体分析啦

实时监控股票交易数据这边主要分为俩个部分,一个定时脚本,一个处理单只股票的函数,这边只是各初级例子,后面还有待完善,有相关需求的朋友可以拿来参考。

1、定时脚本

%% Main_GetRealTimeStockDataTest

% 定时获取股票的实时数据

% by qm

% Email:305638715@qq.com

% 2015/09/09

%% A Little Clean Work

tic;

% 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 Time

toc;1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

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 );

end

FileStr = [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);

end

end

% % 本地数据不存在

if 0 == FileExist

save(FileStr,'StockTickRealTime','Header','-v7.3');

end1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

针对这个需求,这个例子还不是很完善,因为要股票有开盘时间和收盘时间的说法,并不是需求一直取数据,这边可以用windows的定时任务处理,执行指定脚本,或者利用Timer本身的函数,但我这边看到Timer只有startat方法,并没有理想中的endat方法,但提供了Period 时间间隔(执行周期)和TasksToExecute 执行次数这俩个属性,就是执行多少次,执行频率加上执行次数,确实也可以算出结束时间。

股票计算总交易量 matlab,Matlab实时监控股票交易数据之Timer函数应用实例相关推荐

  1. matlab 股票分时图_Matlab实时监控股票交易数据之Timer函数应用实例

    现在项目中有个需求要从股票开盘开始,实时监控指定股票(例如100只股票)的交易明细数据,这边明显要用到多线程进行处理每条股票的数据,查了下Matlab相关函数,竟然没有多线程的说法,网上说唯一一个多线 ...

  2. Android(Linux)实时监控串口数据

    之前在做WinCE车载方案时,曾做过一个小工具TraceMonitor,用于显示WinCE系统上应用程序的调试信息,特别是在实车调试时,用于监控和显示CAN盒与主机之间的串口数据.因为需要抢占市场先机 ...

  3. MongoDB学习笔记(四)使用Java进行实时监控与数据收集(空间使用量、连接数)

    目录: MongoDB学习笔记(一)环境搭建与常用操作 MongoDB学习笔记(二)使用Java操作MongoDB MongoDB学习笔记(三)使用Spring Data操作MongoDB Mongo ...

  4. 实时监控后台数据 vue_实时数据监控,快速掌握B站爆款视频热度走向

    飞瓜数据B站版的数据监控功能提供对B站UP主监控功能,实时掌握UP主视频热度走向和投放效果. 通过监控输入B站视频链接,设定24/48时长开始对其监控.监控开始后在监控报告中查看对应视频的数据曲线变化 ...

  5. 数据库实时监控,实时监控数据库数据

    为了满足大多数用户对数据库的监控和运维需求,系统实时采集了监控数据库的主要指标,并提供完整的报警.性能容量分析和报告功能. 系统以数字形式收集现场设备发送的数据,通过实时数据操作实现监控功能,并提供有 ...

  6. VC调用matlab中定义的.m文件中的函数的实例

    Matlab是一个强大的数学计算/仿真工具,其内置了很多实用的现成的函数,而且我们经常也自己定义很多m函数.但在很多情况下,我们不得不使用VC编程.那么,如何在VC中利用matlab的资源呢?在这里我 ...

  7. kafka怎么监听oracle,Rango_lhl:Spark+Kafka实时监控Oracle数据预警

    import csv import pyinotify #这个包只支持linux,如果是window系统可以使用watchdog,一个原理及写法 import time import requests ...

  8. 把时间变成钱?可视化平台实时监控百万数据,决策分析不再等

    一个好的经营分析能够使得企业不断进行自我完善和优化,促进核心竞争力.那么在大数据时代下,企业该如何建立经营分析体系呢? 一.现状分析 有ERP.CRM以及行业系统等,但系统间存在数据孤岛及数据壁垒的问 ...

  9. html监控页面大小,JQuery实时监控窗口大小(无需插件)

    前篇文章介绍了<JQuery监控浏览器调整大小(使用resizeEnd插件)>,这个方法需要使用一个插件(resizeEnd),本文将介绍JQuery实时监控窗口大小的另一种方法,这个方法 ...

最新文章

  1. 响应式设计的十个基本技巧
  2. 图解RadASM使用初步
  3. 计算机视觉,基于skimage对图像阈值分割的学习
  4. 删零c语言,C语言(请不要删)
  5. Kubernetes里ingress配置的一些例子
  6. Django创建图书管理项目(完整版
  7. 33营销是引导至转化的过程
  8. 《趣学算法 [陈小玉]》学习笔记01
  9. javaweb时间插件
  10. 前端开发实习面经总结
  11. 重磅发布:《AI产品经理的实操手册(2021版)——AI产品经理大本营的4年1000篇干货合辑》(PDF)...
  12. EXCEL如何将两列数据合并为一列并在中间加符号
  13. html文件恢复工具,小飞文件恢复工具
  14. Android 百度人脸识别问题总结
  15. 故障解决:发生系统错误 67 找不到网络名
  16. Jeecg-Boot前端部署
  17. 斯坦福21秋季:实用机器学习-李沐课程笔记
  18. 网络工程师考试复习心得(附详细电子笔记)
  19. androidQ系统新特性
  20. oracle mysql认证考试流程_oraclemysql认证考试的流程有些什么

热门文章

  1. 查看mysql语句运行时间的方法
  2. 驾驶证——科目一技巧(三)
  3. 小米3联通电信通刷_2013062 2013063_官方线刷包_救砖包_解账户锁
  4. cesium之3D Tiles Next(下一代的3D Tiles)介绍
  5. 【SpringBoot系列】最详细demo- 集成Shiro权限管理
  6. 2007年春节联欢晚会经典台词
  7. 大数据学习(七)一分钟了解数据建模
  8. Android录音笔-音频播放器,不止适用于保存的录音
  9. 通过注解切换数据源(更换数据库)同一个项目使用多个数据库(支持MySQL、Oracle同时使用)
  10. java房屋销售论文_基于jsp的房屋销售系统-JavaEE实现房屋销售系统 - java项目源码...