全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
7355 8
2010-06-21
本人在做高频数据时,需要判断每笔交易的买卖方向。
交易数据主要包括 price, buyprice 和 sellprice三个价格;希望根据当前价格与上一条记录的价格来判断当前交易方向flag;判断方法是:
如果 price > ( lag(buyprice)+lag(sellprice) ) /2 ,  则 flag = 'B';
如果 price < ( lag(buyprice)+lag(sellprice) ) /2 ,  则 flag = 'S';
如果 price = ( lag(buyprice)+lag(sellprice) ) /2 ,  则 希望 flag 等于上一条记录的 flag;

已采用 flag= lag(flag), 无法实现我想要的结果;
请教高人有无好的办法解决这个问题!
非常感谢!
二维码

扫码加我 拉你入群

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

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

全部回复
2010-6-21 17:26:46
如果 price > ( lag(buyprice)+lag(sellprice) ) /2 ,  则 flag = 'B';
如果 price < ( lag(buyprice)+lag(sellprice) ) /2 ,  则 flag = 'S';
flag1=lag(flag);
drop flag1;
如果 price = ( lag(buyprice)+lag(sellprice) ) /2 ,  则 希望 flag =flag1;
二维码

扫码加我 拉你入群

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

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

2010-6-21 18:33:52
多谢楼上的指点!
但是添加下列语句与直接赋滞后的值有什么不同呢?
     flag1=lag(flag);
     drop flag1;

按照你的方法, 我改写程序片段为:

data a;
set a;
price2 = ( Buy_1 + Sell_1 )/2 ;
price2_lag = lag(price2);
flag = ' ';
run;

data a;
set a;
if price > price2_lag then flag = 'B';  
if price < price2_lag then flag = 'S';  
if price = price2_lag  then do;
  flag1=lag(flag);
  drop flag1;
  flag = flag1;  
end;
run;

似乎也没用啊?! 是哪里有问题呢?
再次请求帮助!
二维码

扫码加我 拉你入群

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

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

2010-6-21 20:54:18
用retain。
二维码

扫码加我 拉你入群

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

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

2010-6-21 21:25:08
3# rick007007

复制代码
二维码

扫码加我 拉你入群

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

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

2010-6-21 22:01:13
问题已解决,非常感谢4楼和5楼的兄弟热心指点!
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群