以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 金字塔软件问题提交 (http://weistock.com/bbs/list.asp?boardid=2) ---- [讨论]金字塔IF语句的问题 (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=3188) |
-- 作者:小小虾米 -- 发布时间:2010/10/11 12:28:12 -- [讨论]金字塔IF语句的问题 我的代码如下: Tsell(1,0,LMT, 卖一价-MINDIFF, 0, acct); sleep(1000); DEBUGFILE(\'e:\\logdir\\test.txt\',\'(03) TBuyHoldingEx=%.0f\', TBuyHoldingEx(acct, \'\', 1)); IF( TBuyHoldingEx(acct, \'\', 1=0) )THEN BEGIN DEBUGFILE(\'e:\\logdir\\test.txt\',\'(03) 平仓成功......\', 0); ...... END 我的日志如下: 2010-10-11 11:57:59.406 (03) TBuyHoldingEx=1 2010-10-11 11:57:59.406 (03) TIsRemainEx=0 2010-10-11 11:57:59.406 (03) 平仓成功...... 显然,这里 IF( TBuyHoldingEx(acct, \'\', 1=0) ) 返回结果为真,事实上,2010-10-11 11:57:59.406平仓是不会成功的,这里到底出了什么错呢? 我再次将 IF( TBuyHoldingEx(acct, \'\', 1=0) ) 语句改为:IF TBuyHoldingEx(acct, \'\', 1=0) ,现在结果正确!原来,金字塔程序将语句: IF( TBuyHoldingEx(acct, \'\', 1=0) ) 翻译成了 IF(X,A,B)函数! |
-- 作者:admin -- 发布时间:2010/10/11 12:30:56 -- 对于千奇百怪的用户编写方式,金字塔不可能每个语句都能100%精确识别错误语法,主要还要靠用户自己平时的编写的良好习惯,不能一出问题就去怪软件本身 |
-- 作者:小小虾米 -- 发布时间:2010/10/11 13:05:15 -- 以下是引用admin在2010-10-11 12:30:56的发言:
对于千奇百怪的用户编写方式,金字塔不可能每个语句都能100%精确识别错误语法,主要还要靠用户自己平时的编写的良好习惯,不能一出问题就去怪软件本身
如果你这样认为,算我没说。 |
-- 作者:fly -- 发布时间:2010/10/11 13:22:08 -- 楼主这样写,IF TBuyHoldingEx(acct, \'\', 1=0) 是有误的,可以参见TBuyHoldingEx的参数设置.最后一个参数写法,1=0这都是一个表达式了
金字塔的IF语句有两种,一种简单的就是紧跟其后带括号的IF(条件,A,B); 一种是IF 条件 THEN 楼主之前应该是不小心误写成前一种了. |
-- 作者:小小虾米 -- 发布时间:2010/10/11 14:45:10 -- 以下是引用fly在2010-10-11 13:22:08的发言:
楼主这样写,IF TBuyHoldingEx(acct, \'\', 1=0) 是有误的,可以参见TBuyHoldingEx的参数设置.最后一个参数写法,1=0这都是一个表达式了
金字塔的IF语句有两种,一种简单的就是紧跟其后带括号的IF(条件,A,B); 一种是IF 条件 THEN 楼主之前应该是不小心误写成前一种了. 呵呵,我贴的时候不是从源码里拷贝过来的,是直接写的,可能是我写的有误,不过你们可以测试一下, 和
的结果是不一样的。 这样也许更能说明问题。 [此贴子已经被作者于2010-10-11 14:53:52编辑过]
|
-- 作者:wattwei -- 发布时间:2010/10/11 15:09:36 -- 按道理无论如何不会解析出错,公式不具有二义性。 |
-- 作者:fly -- 发布时间:2010/10/11 15:29:05 -- 我试了楼主说的(条件简化了一下,呵呵), 差别就在于IF后面是否紧跟括号,如果IF后面是:空格+括号,则解析就上楼主想要的. 如果IF后面是:括号,就成了IF(条件,A,B);
所以,不能忽视----一个空格的价值,呵呵 |