VARIABLE:BAF:=0,SAF:=0;
STP:=STEP/100;
MAXV:=STP*10;
IF BARPOS=N+1 THEN
BEGIN
SARR:=IF(C>REF(C,N),LV(L,N),HV(H,N));
END
ELSE
BEGIN
IF BARSLAST(CROSS(C,SARR))=0 THEN BEGIN
SARR:=LV(L,N);
END
IF BARSLAST(CROSS(SARR,C))=0 THEN BEGIN
SARR:=HV(H,N);
END
IF BARSLAST(CROSS(C,SARR))<>0 OR BARSLAST(CROSS(SARR,C))<>0 THEN BEGIN
IF REF(C,1)>REF(SARR,1) THEN
SARR:=REF(SARR,1)+BAF*(REF(H,1)-REF(SARR,1));
ELSE
SARR:=REF(SARR,1)-SAF*(REF(SARR,1)-REF(L,1));
END
END
注:n step为参数,应该是第16行代码的if循环没有执行
分析后回复
好,麻烦您了!!
N+1周期以后就没有值是因为源码中仅在BARPOS=N+1位置定义了SARR:=IF(C>REF(C,N),LV(L,N),HV(H,N));
后续K线上返回值空值所以,无法在参与带后续BARSLAST(CROSS(C,SARR))=0的判断了
此外,SAR中的加速因子当AF小于MAX时,逐根的通过AF+STEP累加,涨跌发生转换时,AF重新计算,不是一个定量
SAR指标无法通过1楼方式自编实现的,您了解一下
是在BARPOS=N+1位置定义了SARR:=IF(C>REF(C,N),LV(L,N),HV(H,N));
但是后面不是还有ELSE吗?
另外加速因子定义为
IF BARSLAST(C<SARR)=1 THEN
BAF:=0;
IF H>HV(H,N) AND BAF<MAXV THEN
BAF:=BAF+STP;
BAF;
IF BARSLAST(C>SARR) = 1 THEN
SAF:=0;
IF L<LV(L,N) AND SAF<MAXV THEN
SAF:=SAF+STP;
您的思路比较复杂,相关同事明天工作时间核实后给您回复,请耐心等待
从N+1根K线以后SARR没有定义
所以不能满足后续IF条件中 IF BARSLAST(CROSS(C,SARR))=0 THEN BEGIN是否穿越的判断
所以后续K线上SARR都是空值