我想底背离开仓,但是忽略前面两个,到第三个底背离才开仓怎么表达呢?
VARIABLE:BLCS=0; //使用全局变量记录背离的次数
// MACD指标
DIFF:EMA(CLOSE,12)-EMA(CLOSE,26);
DEA:EMA(DIFF,9);
MACD:=2*(DIFF-DEA),COLORSTICK;
//上次金叉对应的指标高点与价格高点
N:=BARSLAST(CROSS(DIFF,DEA))+1;
N1:=BARSLAST(CROSS(DEA,DIFF))+1;
DIFF1:=REF(REF(DIFF,N-1),1);
DIFF2:=REF(REF(DIFF,N1-1),1);
C1:=REF(REF(C,N-1),1);
C2:=REF(REF(C,N1-1),1);
//顶底背离的表现
DBL1:DIFF>DIFF1 AND CROSS(DIFF,DEA) AND C<C1;//底背离
DBL:DIFF<DIFF2 AND CROSS(DEA,DIFF) AND C>C2;//顶背离
IF DBL1 THEN BLCS:=BLCS+1;
IF BLCS=3 THEN BEGIN
BUY();
BLCS:=0;
END
你这里其实不用管的。这里+1去掉也是可以的,只要把后面的N-1改成N 也就一样了。
原本这种处理是为了传递有效参数的做法。比如hhv的第二个参数是另一个函数的返回值,但是这个函数返回值第一个位置是0.这个就会和需求的效果不一致。 hhv在第二个参数是0 时候是全部统计的意思。所以有时候会这样采取+1做法来纠正下。