以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  求教,关于不等于操作符  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=160218)

--  作者:巴巴罗
--  发布时间:2017/12/7 10:25:31
--  求教,关于不等于操作符
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)无法阻止执行这句呢?

--  作者:巴巴罗
--  发布时间:2017/12/7 10:35:53
--  
我不知道不等于是 != 还是 <>, 等于和赋值都是=吗?
关于 等于 不等于 这样的基本的操作符,帮助手册里查不到,都是函数声明,请给我一个可以查到关于不等于这样的基本的数学操作符的手册地址

--  作者:FireScript
--  发布时间:2017/12/7 10:39:13
--  
UP_PRICE1<>INTPART(TORDERPRICE(1,1)*100)/100) 你这里有个取整的动作。  你打印的结果并没有取整。
--  作者:巴巴罗
--  发布时间:2017/12/7 10:48:37
--  
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

还有个诡异的问题,就是不加取整,就是所有品种都会有这个问题,加取整,只有天原集团一个股票出问题,其他是正常的。

--  作者:pyd
--  发布时间:2017/12/7 15:37:49
--  

两个值都用ROUNDS取两位小数再做比较

ROUNDS(UP_PRICE1,2)<>ROUNDS(TORDERPRICE(1,1),2)