楼主: nothk
1822 4

[问答] 问一下,R怎么做实时即刻的数据处理? [推广有奖]

  • 0关注
  • 0粉丝

本科生

46%

还不是VIP/贵宾

-

威望
0
论坛币
51 个
通用积分
0
学术水平
0 点
热心指数
7 点
信用等级
0 点
经验
530 点
帖子
48
精华
0
在线时间
93 小时
注册时间
2015-4-9
最后登录
2020-11-16

楼主
nothk 发表于 2017-1-17 11:29:22 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
学R这么久,每次都是导入数据,然后建模或者算法,算出结果画图,然后结束。

现在思考,R要怎么做那种实时即刻的数据处理?

比如传感器每分钟生成的数据实时统计出结果...

就是有点想windows任务管理器里面看cpu占用率那样,或者股票k线那样,能够实时统计,指标图形不断变化。

R可以实现吗?

有没有比较典型的例子,或者大神说说思路...?

多谢大家。
二维码

扫码加我 拉你入群

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

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

关键词:数据处理 怎么做 Windows Window 任务管理器 任务管理器 windows 传感器 统计

沙发
cheetahfly 在职认证  发表于 2017-1-17 11:37:41
while(TRUE) {
    ...
}

藤椅
hyu9910 在职认证  发表于 2017-1-17 16:01:04
“现在思考,R要怎么做那种实时即刻的数据处理?
比如传感器每分钟生成的数据实时统计出结果...
就是有点想windows任务管理器里面看cpu占用率那样,或者股票k线那样,能够实时统计,指标图形不断变化。”

-- 不合适的吧。 没有大而全的软件工具的。 R的强项在于统计建模,和MATLAB有相类的地方。

板凳
jameschin007 发表于 2017-1-17 22:16:23
实时数据的,还是让python或者java来完成吧。

报纸
cheetahfly 在职认证  发表于 2017-1-18 08:47:22
在对时效性要求特别强的场合还是用c或者c++(比如快一毫秒就能带来利润的场合),但简单的应用R是可以做到的。
下面是Wind资讯官方给的R语言的一个套期策略实现的例子:
  1. if1code='IF1408.CFE'  #代码
  2. if2code='IF1409.CFE'
  3. gate1b=2;gate1c=1; gate2b=2;gate2c=1;

  4. library(WindR)  #装载WindR
  5. w.start(0,F);   #启动WindR
  6. data<-w.tlogon('0000','0','w081263802','0000','cfe');#登录模拟交易
  7. logonid=data$Data$LogonID; #得到登录ID

  8. curpos=0;   #当前仓位状态
  9. printcount=0;
  10. while(TRUE)
  11. {
  12.                 wsqout<-w.wsq(paste(if1code,if2code,sep=','),"rt_bid1,rt_ask1")
  13.     if(wsqout$ErrorCode!=0)
  14.     {
  15.         print(wsqout);
  16.         Sys.sleep(1);
  17.         next;
  18.     }
  19.                 data<-wsqout$Data;#取到的当前价格信息

  20.     if(curpos==0){#没有持仓
  21.                                 if(data$RT_BID1[1] - data$RT_ASK1[2]>gate1b){#以买价卖出if1,以卖价买入if2
  22.                                           w.torder(c(if1code,if2code),c('short','buy'),c(data$RT_BID1[1], data$RT_ASK1[2]),c(1,1),logonid=logonid);
  23.                                           curpos = 1;
  24.                                           print(paste('开仓:short',if1code, 'at ', data$RT_BID1[1],', buy',if2code,'at', data$RT_ASK1[2]));
  25.                     }
  26.                                 if(data$RT_BID1[2] - data$RT_ASK1[1]>gate2b){#以买价卖出if2,以卖价买入if1
  27.                                           w.torder(c(if2code,if1code),c('short','buy'),c(data$RT_BID1[2], data$RT_ASK1[1]),c(1,1),logonid=logonid);
  28.                                           print(paste('开仓:short',if2code, 'at ', data$RT_BID1[2],', buy',if1code,'at', data$RT_ASK1[1]));
  29.                                           curpos = -1;
  30.                     }
  31.                 }else if(curpos==1){#已经卖出if1,买入了if2,检查是不是要平仓
  32.                                 if(data$RT_ASK1[1] - data$RT_BID1[2]<gate1c){#以卖价平空if1,以买价平多if2
  33.                                                 w.torder(c(if1code,if2code),c('cover','sell'),c(data$RT_ASK1[1], data$RT_BID1[2]),c(1,1),logonid=logonid);
  34.                                                 curpos= 0;
  35.                                                 print(paste('平仓:cover',if1code, 'at ', data$RT_ASK1[1],', sell',if2code,'at', data$RT_BID1[2]));
  36.                     }
  37.     }else  if(curpos==-1){#已经卖出if2,买入了if1,检查是不是要平仓
  38.                                 if(data$RT_ASK1[2] - data$RT_BID1[1]<gate2c){#以卖价平空if2,以买价平多if1
  39.                                                 w.torder(c(if2code,if1code),c('cover','sell'),c(data$RT_ASK1[2], data$RT_BID1[1]),c(1,1),logonid=logonid);
  40.                                                 curpos= 0;
  41.                                                 print(paste('平仓:cover',if2code, 'at ', data$RT_ASK1[1],', sell',if1code,'at', data$RT_BID1[2]));
  42.                     }
  43.     }
  44.     printcount = printcount+1;
  45.                 if(printcount>80)
  46.                 {
  47.                         cat('\n');
  48.                         cat(paste('price=[',data$RT_BID1[1],data$RT_BID1[2],data$RT_ASK1[1],data$RT_ASK1[2],']'));
  49.                         printcount = 0;
  50.                 }else cat('.');
  51.     Sys.sleep(1);
  52. }
复制代码

我想你想要了解的主要是:用while(TRUE) + Sys.sleep(1)来控制循环和节奏。

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-24 05:04