代码为什么第N+1周期以后就没有值了 (文华财经WH8赢智V8.2)

投资者咨询:代码为什么第N+1周期以后就没有值了 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-7-31 10:15

 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循环没有执行

 
技术人员回复
日期:2018-7-31 10:34

分析后回复

投资者咨询:代码为什么第N+1周期以后就没有值了 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-7-31 10:15
 麻烦老师了,这个代码有点复杂,初衷是想自己构造一个SAR函数使其参数可以为变量。感激不尽!
技术人员回复
日期:2018-7-31 10:53
 分析后预计下午17点给您回复
投资者咨询:代码为什么第N+1周期以后就没有值了 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-7-31 10:15

好,麻烦您了!!

技术人员回复
日期:2018-7-31 16:27

 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楼方式自编实现的,您了解一下

投资者咨询:代码为什么第N+1周期以后就没有值了 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-7-31 10:15

是在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;

技术人员回复
日期:2018-7-31 18:19

您的思路比较复杂,相关同事明天工作时间核实后给您回复,请耐心等待

技术人员回复
日期:2018-8-1 13:28

 从N+1根K线以后SARR没有定义

 

所以不能满足后续IF条件中 IF BARSLAST(CROSS(C,SARR))=0 THEN BEGIN是否穿越的判断

 

所以后续K线上SARR都是空值