N1:=OPENMINUTES(TIME);
YL:=IF(SUM(VOL,N1)=0,C,SUM(C*VOL,N1)/SUM(VOL,N1));
DEBUGFILE('D:\KK.LOG',NAME &' 跌↓ '& OI &' '& BIGTREND &' '& YLFLAG &' '&NUMTOSTR(仓单数量,0)&' '&NUMTOSTR(CLOSE,3)&' '&NUMTOSTR(YL,3),0);
前面两行是求分时黄线的值,然后用debugfile打印出来,但有时打印出来的值是-1.#QO
尤其是铅,镍这种6位数的出问题多,但铅,镍的close打印出来是正确的
感觉是YL有时不能正确的计算出来,在前台没发现问题,但是后台经常出现,其他品种多数正常,偶尔出现同样的问题
使用1分钟1秒后台轮询,代码大致可以简化成这样:
GLOBALVARIABLE:T:=-1;
NAME:=STRLEFT(STKNAME,STRLEN(STKNAME)-4);
N1:=OPENMINUTES(TIME);
YL:=IF(SUM(VOL,N1)=0,C,SUM(C*VOL,N1)/SUM(VOL,N1));
//使用全局变量控制1分钟只输出一次
IF OPENMINUTES(TIME)>T THEN BEGIN
DEBUGFILE('D:\KK.LOG',NAME &NUMTOSTR(CLOSE,3)&' '&NUMTOSTR(YL,3),0);
T:=OPENMINUTES(TIME);
END
本地核实了下,和品种没有关系,是SUM函数的问题,如使用SUM函数,后台刷新K线数量必须要大于N1的数量,图表也是这样。如果K线数量小于N1的值,会求不出SUM的值,建议K线刷新数量修改为560根,您再试试
果然如此,之前设置为360根,改了看上去正常了,夜盘再看一下,谢谢