Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共7 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:[讨论]金字塔IF语句的问题

1楼
小小虾米 发表于:2010/10/11 12:28:12

我的代码如下:

    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)函数!图片点击可在新窗口打开查看

2楼
admin 发表于:2010/10/11 12:30:56

对于千奇百怪的用户编写方式,金字塔不可能每个语句都能100%精确识别错误语法,主要还要靠用户自己平时的编写的良好习惯,不能一出问题就去怪软件本身

3楼
小小虾米 发表于:2010/10/11 13:05:15
以下是引用admin在2010-10-11 12:30:56的发言:

对于千奇百怪的用户编写方式,金字塔不可能每个语句都能100%精确识别错误语法,主要还要靠用户自己平时的编写的良好习惯,不能一出问题就去怪软件本身

 

如果你这样认为,算我没说。

4楼
fly 发表于:2010/10/11 13:22:08

楼主这样写,IF TBuyHoldingEx(acct, '', 1=0)  

是有误的,可以参见TBuyHoldingEx的参数设置.最后一个参数写法,1=0这都是一个表达式了

 

金字塔的IF语句有两种,一种简单的就是紧跟其后带括号的IF(条件,A,B);

                             一种是IF  条件   THEN

楼主之前应该是不小心误写成前一种了.

5楼
小小虾米 发表于: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编辑过]
6楼
wattwei 发表于:2010/10/11 15:09:36
按道理无论如何不会解析出错,公式不具有二义性。
7楼
fly 发表于:2010/10/11 15:29:05

我试了楼主说的(条件简化了一下,呵呵),

差别就在于IF后面是否紧跟括号,如果IF后面是:空格+括号,则解析就上楼主想要的.

                                        如果IF后面是:括号,就成了IF(条件,A,B);

 

所以,不能忽视----一个空格的价值,呵呵

共7 条记录, 每页显示 10 条, 页签: [1]


Powered By Dvbbs Version 8.3.0
Processed in 0.01563 s, 2 queries.