if (dea>0) then {DEA为MACD中的DEA,前面有定义,这里 省略}
begin
va:=0;
j:=0;
cond3:=0;
while (va>=0) do { VA为中间变量,调用以前的DEA用}
begin
j:=j+1;
va:=ref(dea,j);
if ref(low,j)<=ref(ma4,j) then{MA4,为30日均线,前面有定义,这里省略)
cond3:=1;
break;
end
end
我这个的意思是:当MACD中DEA为正时,往前看DEA>0这段时间内就最低价是否触碰MA4这根均线,如果触碰就复制条件cond3=1;
这个程序编译后说ref()这个函数不能在循环语句中调用,请问不这样写要怎么写呢】
你这个无法处理的。一般通常ref是在循环外面计算好,然后在循环里面调用。但是你这种没办法。你的ref调用和j有关联。
就是DEA从之前金叉到现在这段K线,是否出现价格触碰MA4,就是这个意思
不需要循环。
ma4:=ma(c,4);
len:BARSLAST(cross(dea,diff));//上次金叉距离现在的周期数
cond:if(dea>0 and count(l<=ma4,len+1)>=1,1,0);//当前是dea>0,并且上次金叉到现在存在 l<=ma4成立的K。