SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 646|回复: 2
打印 上一主题 下一主题

求股票技术分析策略解法

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2008-9-26 20:48:00 | 只看该作者

求股票技术分析策略解法

date                        close          MA5            MA10  
2007/08/06        12.914        12.432        12.412
2007/08/07        12.784        12.368        12.503
2007/08/08        12.254        12.422        12.52
2007/08/09        12.394        12.47        12.542
2007/08/10        12.044        12.478        12.478
2007/08/13        12.074        12.31        12.371
2007/08/14        12.394        12.232        12.3
2007/08/15        12.914        12.364        12.393
2007/08/16        13.064        12.498        12.484
2007/08/17        12.594        12.608        12.543
2007/08/20        13.054        12.804        12.557
2007/08/21        13.794        13.084        12.658
2007/08/22        14.594        13.42        12.892
2007/08/23        14.874        13.782        13.14
2007/08/24        14.614        14.186        13.397
2007/08/27        15.504        14.676        13.74
2007/08/28        15.764        15.07        14.077
2007/08/29        14.724        15.096        14.258
2007/08/30        16.204        15.362        14.572
2007/08/31        15.904        15.62        14.903
2007/09/03        15.994        15.718        15.197
2007/09/04        15.894        15.744        15.407
2007/09/05        16.194        16.038        15.567
2007/09/06        16.864        16.17        15.766
2007/09/07        17.744        16.538        16.079
2007/09/10        18.554        17.05        16.384
2007/09/11        16.874        17.246        16.495
2007/09/12        17.174        17.442        16.74
2007/09/13        16.864        17.442        16.806
2007/09/14        16.924        17.278        16.908
以上是股价数据,其中close为收盘价,MA5、MA10分别为5日、10日移动平均线,假设一种交易策略,当MA5大于MA10的那一天以收盘价买入,当MA5小于MA10的那天以收盘价卖出,求最终收益,请问如何编程实现。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2008-9-27 13:07:54 | 只看该作者

Re: 求股票技术分析策略解法

我写的逻辑是:当MA5大于MA10且空仓,那么买入,否则无动作;当MA5小于MA10且有货,那么卖出,否则无动作。
[code:upqb2gtb]data temp;
infile datalines;
input date:yymmdd10. close MA5 MA10;
format date yymmdd10.;
datalines;
2007/08/06 12.914 12.432 12.412
2007/08/07 12.784 12.368 12.503
2007/08/08 12.254 12.422 12.52
2007/08/09 12.394 12.47 12.542
2007/08/10 12.044 12.478 12.478
2007/08/13 12.074 12.31 12.371
2007/08/14 12.394 12.232 12.3
2007/08/15 12.914 12.364 12.393
2007/08/16 13.064 12.498 12.484
2007/08/17 12.594 12.608 12.543
2007/08/20 13.054 12.804 12.557
2007/08/21 13.794 13.084 12.658
2007/08/22 14.594 13.42 12.892
2007/08/23 14.874 13.782 13.14
2007/08/24 14.614 14.186 13.397
2007/08/27 15.504 14.676 13.74
2007/08/28 15.764 15.07 14.077
2007/08/29 14.724 15.096 14.258
2007/08/30 16.204 15.362 14.572
2007/08/31 15.904 15.62 14.903
2007/09/03 15.994 15.718 15.197
2007/09/04 15.894 15.744 15.407
2007/09/05 16.194 16.038 15.567
2007/09/06 16.864 16.17 15.766
2007/09/07 17.744 16.538 16.079
2007/09/10 18.554 17.05 16.384
2007/09/11 16.874 17.246 16.495
2007/09/12 17.174 17.442 16.74
2007/09/13 16.864 17.442 16.806
2007/09/14 16.924 17.278 16.908
;
run;

data temp;
set temp;
retain flag pre_flag 0;
pre_flag=flag;
if MA5>=MA10 then do;
        if pre_flag=0 then total=-close; /*Buy*/
        flag=1;
end;
else do;
        if pre_flag=1 then total=close; /*Sell*/
        flag=0;
end;
run;[/code:upqb2gtb]
其实楼主的逻辑没有写清楚,是否只要当MA5大于MA10就买入1个单位?卖出同样问题。还有很多需要澄清的疑问,请楼主参考程序,自行扩展完善逻辑。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2008-9-27 14:25:30 | 只看该作者

Re: 求股票技术分析策略解法

[code:3hflrgt0]data temp;
infile datalines;
input date:yymmdd10. close MA5 MA10;
format date yymmdd10.;
datalines;
2007/08/06 12.914 12.432 12.412
2007/08/07 12.784 12.368 12.503
2007/08/08 12.254 12.422 12.52
2007/08/09 12.394 12.47 12.542
2007/08/10 12.044 12.478 12.478
2007/08/13 12.074 12.31 12.371
2007/08/14 12.394 12.232 12.3
2007/08/15 12.914 12.364 12.393
2007/08/16 13.064 12.498 12.484
2007/08/17 12.594 12.608 12.543
2007/08/20 13.054 12.804 12.557
2007/08/21 13.794 13.084 12.658
2007/08/22 14.594 13.42 12.892
2007/08/23 14.874 13.782 13.14
2007/08/24 14.614 14.186 13.397
2007/08/27 15.504 14.676 13.74
2007/08/28 15.764 15.07 14.077
2007/08/29 14.724 15.096 14.258
2007/08/30 16.204 15.362 14.572
2007/08/31 15.904 15.62 14.903
2007/09/03 15.994 15.718 15.197
2007/09/04 15.894 15.744 15.407
2007/09/05 16.194 16.038 15.567
2007/09/06 16.864 16.17 15.766
2007/09/07 17.744 16.538 16.079
2007/09/10 18.554 17.05 16.384
2007/09/11 16.874 17.246 16.495
2007/09/12 17.174 17.442 16.74
2007/09/13 16.864 17.442 16.806
2007/09/14 16.924 17.278 17.908
;
run;

data temp;
     set temp;
         retain fig 0;
         if ma5>=ma10 then fig=1;
         else fig=0;
         pre=lag(fig);
         if fig=1 and pre=0 then num+1;
run;

proc sort data=temp;
     by num descending fig;
run;

data temp1;
     set temp;
         by num descending fig;
         if first.fig then output;
run;

data buy;
     set temp1;
         by num;
         if fig=1;
         rename close=buy;
         keep close num;
run;

data sell;
     set temp1;
         by num;
         if fig=0;
         rename close=sell;
         keep close num;
run;

data profit;
     merge buy sell;
         by num;
         profit=sell-buy;
         label num='the nth time buy the socks';
run;[/code:3hflrgt0]
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-2-5 01:34 , Processed in 0.067073 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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