我的代码如下:
Tsell(1,0,LMT, 卖一价-MINDIFF, 0, acct);
sleep(1000);
DEBUGFILE('e:\logdir\test.txt','(03) TBuyHoldingEx=%.0f', TBuyHoldingEx(acct, '', 1));
DEBUGFILE('e:\logdir\test.txt','(03) TIsRemainEx=%.0f', TIsRemainEx(0, acct, ''));
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)函数!
对于千奇百怪的用户编写方式,金字塔不可能每个语句都能100%精确识别错误语法,主要还要靠用户自己平时的编写的良好习惯,不能一出问题就去怪软件本身
对于千奇百怪的用户编写方式,金字塔不可能每个语句都能100%精确识别错误语法,主要还要靠用户自己平时的编写的良好习惯,不能一出问题就去怪软件本身
如果你这样认为,算我没说。
楼主这样写,IF TBuyHoldingEx(acct, '', 1=0)
是有误的,可以参见TBuyHoldingEx的参数设置.最后一个参数写法,1=0这都是一个表达式了
金字塔的IF语句有两种,一种简单的就是紧跟其后带括号的IF(条件,A,B);
一种是IF 条件 THEN
楼主之前应该是不小心误写成前一种了.
楼主这样写,IF TBuyHoldingEx(acct, '', 1=0)
是有误的,可以参见TBuyHoldingEx的参数设置.最后一个参数写法,1=0这都是一个表达式了
金字塔的IF语句有两种,一种简单的就是紧跟其后带括号的IF(条件,A,B);
一种是IF 条件 THEN
楼主之前应该是不小心误写成前一种了.
呵呵,我贴的时候不是从源码里拷贝过来的,是直接写的,可能是我写的有误,不过你们可以测试一下,
和
的结果是不一样的。
这样也许更能说明问题。
我试了楼主说的(条件简化了一下,呵呵),
差别就在于IF后面是否紧跟括号,如果IF后面是:空格+括号,则解析就上楼主想要的.
如果IF后面是:括号,就成了IF(条件,A,B);
所以,不能忽视----一个空格的价值,呵呵