IF (CONDBUY1 AND TISREMAIN(1) AND UP_PRICE1<>INTPART(TORDERPRICE(1,1)*100)/100) THEN BEGIN
TCANCEL(1,1);
DEBUGFILE('C:\RECORD111.TXT','卖出2 '+STKNAME+'/价格'+NUMTOSTR(TORDERPRICE(1,1),5)+'/价格'+NUMTOSTR(UP_PRICE1,5),1);
END
上述语句是我判断,如果计算价格发生变化,和已经委托下单但未成交里的委托价格不一致,就撤销委托,重新下单。
但是明明价格一样,但总是不停执行,我打印里日志如下、2017-12-07 10:19:31.325 卖出2 天原集团/价格8.07000/价格8.07000
2017-12-07 10:20:58.225 卖出2 天原集团/价格8.07000/价格8.07000
2017-12-07 10:22:02.732 卖出2 天原集团/价格8.07000/价格8.07000
2017-12-07 10:22:46.121 卖出2 天原集团/价格8.07000/价格8.07000
2017-12-07 10:23:29.431 卖出2 天原集团/价格8.07000/价格8.07000
2017-12-07 10:24:13.044 卖出2 天原集团/价格8.07000/价格8.07000
明明2个价格都是8.07000,为啥用UP_PRICE1<>INTPART(TORDERPRICE(1,1)*100)/100)无法阻止执行这句呢?
我不知道不等于是 != 还是 <>, 等于和赋值都是=吗?
关于 等于 不等于 这样的基本的操作符,帮助手册里查不到,都是函数声明,请给我一个可以查到关于不等于这样的基本的数学操作符的手册地址
IF (CONDBUY1 AND TISREMAIN(1) AND UP_PRICE1<>TORDERPRICE(1,1)) THEN BEGIN
TCANCEL(1,1);
DEBUGFILE('C:\RECORD111.TXT','卖出2 '+STKNAME+'/价格'+NUMTOSTR(TORDERPRICE(1,1),5)+'/价格'+NUMTOSTR(UP_PRICE1,5),1);
END
我之前就是没有取整的,所以才增加取整操作,但是不管加不加,都有这个问题,现在取消了,如上,但是还是在不断的执行
2017-12-07 10:46:03.735 卖出2 轴研科技/价格9.03000/价格9.03000
2017-12-07 10:46:09.374 卖出2 天原集团/价格8.07000/价格8.07000
2017-12-07 10:46:11.551 卖出2 万里扬/价格10.43000/价格10.43000
2017-12-07 10:46:53.224 卖出2 新力金融/价格11.55000/价格11.55000
2017-12-07 10:47:15.721 卖出2 轴研科技/价格9.03000/价格9.03000
2017-12-07 10:47:21.493 卖出2 天原集团/价格8.07000/价格8.07000
2017-12-07 10:47:23.375 卖出2 万里扬/价格10.43000/价格10.43000
还有个诡异的问题,就是不加取整,就是所有品种都会有这个问题,加取整,只有天原集团一个股票出问题,其他是正常的。
两个值都用ROUNDS取两位小数再做比较
ROUNDS(UP_PRICE1,2)<>ROUNDS(TORDERPRICE(1,1),2)