欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件金字塔软件问题提交 → [讨论]金字塔IF语句的问题

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有6148人关注过本帖树形打印复制链接

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

帅哥哟,离线,有人找我吗?
小小虾米
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:44 积分:263 威望:0 精华:0 注册:2010/9/23 10:38:00
[讨论]金字塔IF语句的问题  发帖心情 Post By: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)函数!图片点击可在新窗口打开查看


 回到顶部
帅哥哟,离线,有人找我吗?
admin
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2010/10/11 12:30:56 [只看该作者]

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


 回到顶部
帅哥哟,离线,有人找我吗?
小小虾米
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:44 积分:263 威望:0 精华:0 注册:2010/9/23 10:38:00
  发帖心情 Post By:2010/10/11 13:05:15 [只看该作者]

以下是引用admin在2010-10-11 12:30:56的发言:

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

 

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


 回到顶部
帅哥哟,离线,有人找我吗?
fly
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:5082 积分:17642 威望:0 精华:6 注册:2010/7/15 9:05:58
  发帖心情 Post By:2010/10/11 13:22:08 [只看该作者]

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

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

 

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

                             一种是IF  条件   THEN

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



金字塔—专业程序化交易量化投资平台

客户服务部

-----------------------------------------------------------

欢迎您参加我公司的技术培训,具体培训需求请发邮件到

service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部
帅哥哟,离线,有人找我吗?
小小虾米
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:44 积分:263 威望:0 精华:0 注册:2010/9/23 10:38:00
  发帖心情 Post By: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
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:574 积分:3167 威望:0 精华:0 注册:2009/10/10 11:13:01
  发帖心情 Post By:2010/10/11 15:09:36 [只看该作者]

按道理无论如何不会解析出错,公式不具有二义性。

 回到顶部
帅哥哟,离线,有人找我吗?
fly
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:5082 积分:17642 威望:0 精华:6 注册:2010/7/15 9:05:58
  发帖心情 Post By:2010/10/11 15:29:05 [只看该作者]

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

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

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

 

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



金字塔—专业程序化交易量化投资平台

客户服务部

-----------------------------------------------------------

欢迎您参加我公司的技术培训,具体培训需求请发邮件到

service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部