shenliang_111 发表于 2011-9-24 18:17 
楼主:收益率的解释不大会...比如连续买进和卖出的情况...怎么求收益率,也就是说,怎么算交易一次...从而算 ...
我是通过求5日均线和10日均线:
proc import
datafile='H:\DayData\SH600000.TXT'
out=sasuser.sh60000
dbms=csv
replace;
datarow=3;
label var1='date' var2='open' var3='high' var4='low' var5='close' var6='volume' var7='turnover';
run;
/*计算移动平均的宏*/
%macro ma(x); /*计算x天的移动平均线,例如x=5,就是计算5天的移动平均线*/
ma&x=0; /*初始变量ma5=0*/
array l&x.ags(&x); /*申明一个数组,数组名字为l5ags*/
l&x.ags(1)=var5;
ma&x=ma&x+l&x.ags(1);
do i&x=2 to &x;
l&x.ags(i&x)=lag(l&x.ags(i&x-1));
ma&x=ma&x+l&x.ags(i&x);
end;
ma&x=ma&x/&x;
drop i&x l&x.ags1-l&x.ags&x; /*将不必要的变量舍去*/
%mend;
data sh6_2;
set sasuser.sh60000;
%ma(5);
%ma(10);
run;
现在有个问题,就是如何把算法编程成代码,算法思路大概这样:
当5日均线值max5(i)>max10(i)且max5(i+1)<max10(i+1)时,判断为卖出;
当5日均线值max5(i)<max10(i)且max5(i+1)>max10(i+1)时,判断为买入;
i 其实就是时间,但具体怎么转化,遇到问题了,目的就是求出两个if语句各自的 i (时间)的各个取值