以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://www.weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://www.weistock.com/bbs/list.asp?boardid=2)
----  分时黄线的值有时计算不出来  (http://www.weistock.com/bbs/dispbbs.asp?boardid=2&id=162251)

--  作者:滚雪球
--  发布时间:2018/3/22 15:14:25
--  分时黄线的值有时计算不出来
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有时不能正确的计算出来,在前台没发现问题,但是后台经常出现,其他品种多数正常,偶尔出现同样的问题

--  作者:banzhuan
--  发布时间:2018/3/22 15:32:09
--  
明天盘中本地核实一下您说的问题,是输出镍的YL值出现无效值是吧? 
--  作者:滚雪球
--  发布时间:2018/3/22 15:47:14
--  
镍,铅,其他的品种有时也会出现

--  作者:banzhuan
--  发布时间:2018/3/22 15:50:01
--  
好的,明天核实后在本帖给您跟帖答复
--  作者:滚雪球
--  发布时间:2018/3/22 15:56:51
--  
使用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

--  作者:banzhuan
--  发布时间:2018/3/22 16:44:42
--  
本地核实了下,和品种没有关系,是SUM函数的问题,如使用SUM函数,后台刷新K线数量必须要大于N1的数量,图表也是这样。如果K线数量小于N1的值,会求不出SUM的值,建议K线刷新数量修改为560根,您再试试
--  作者:滚雪球
--  发布时间:2018/3/22 19:32:07
--  
果然如此,之前设置为360根,改了看上去正常了,夜盘再看一下,谢谢