SAS中文论坛
标题:
求股票技术分析策略解法
[打印本页]
作者:
shiyiming
时间:
2008-9-26 20:48
标题:
求股票技术分析策略解法
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的那天以收盘价卖出,求最终收益,请问如何编程实现。
作者:
shiyiming
时间:
2008-9-27 13:07
标题:
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个单位?卖出同样问题。还有很多需要澄清的疑问,请楼主参考程序,自行扩展完善逻辑。
作者:
shiyiming
时间:
2008-9-27 14:25
标题:
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]
欢迎光临 SAS中文论坛 (https://mysas.net/forum/)
Powered by Discuz! X3.2