您现在的位置:程序化交易>> 股票公式>> 通达信>> 通达信知识>>正文内容

向老师请教6种选择函数的区别 [通达信]

  • 咨询内容:
    老师:
    以下6种选择函数,具体用于什么情况?
    以下是我的理解和疑问:

    IF
    根据条件求不同的值.
     IF(X,A,B)若X不为0则返回A,否则返回B,这个好理解,过了


    IFF用法同IF一样,那么IFF为什么还有必要存在


    IFN
    同IF判断相反.
     IFN(X,A,B)若X不为0则返回B,否则返回A
     IF (X,B,A)把A和B对调,是否就与上句等效? 

    IFC
    根据条件求不同的值,可中止.
    用法:
     IFC(X,A,B)若X不为0则返回A,否则返回B.IFC与IF函数的区别:根据X的值来选择性执行A、B表达式.
    例如:
     IFC(CLOSE>OPEN,HIGH,TESTSKIP(1));L;表示当日收阳则返回最高值,并执行下一句"L;",否则退出公式计算
    还是没有看懂IFC与IF的区别


    VALUEWHEN(COND,X) 
    当COND条件成立时,取X的当前值,否则取VALUEWHEN的上个值.
    这个,是否与ref(x,barslast(COND))效果一样

    TESTSKIP(A):满足A则直接返回.
    用法:
     TESTSKIP(A) 
     表示如果满足条件A则该公式直接返回,不再计算接下来的表达式 注意:A为非序列数据,只取最后一个数据
    非序列数据是指什么?
    序列数据又指什么呢?

     

  • 通达信技术部:
    以下是引用江哥323323在2016-11-6 15:30:00的发言:
    老师:
    以下6种选择函数,具体用于什么情况?
    以下是我的理解和疑问:

    IF
    根据条件求不同的值.
     IF(X,A,B)若X不为0则返回A,否则返回B,这个好理解,过了


    IFF用法同IF一样,那么IFF为什么还有必要存在


    IFN
    同IF判断相反.
     IFN(X,A,B)若X不为0则返回B,否则返回A
     IF (X,B,A)把A和B对调,是否就与上句等效? 
     
    等效的,测试一下就知道了。
    可以使用你最常用的,其他相同的用法之所以保留,肯定是有原因的。就像有人用C,有人用CLOSE,不能轻易去掉。以上问题同解。

    IFC
    根据条件求不同的值,可中止.
    用法:
     IFC(X,A,B)若X不为0则返回A,否则返回B.IFC与IF函数的区别:根据X的值来选择性执行A、B表达式.
    例如:
     IFC(CLOSE>OPEN,HIGH,TESTSKIP(1));L;表示当日收阳则返回最高值,并执行下一句"L;",否则退出公式计算
    还是没有看懂IFC与IF的区别
     
    IFC就是可以通过TESTSKIP,判断是否退出公式计算。


    VALUEWHEN(COND,X) 
    当COND条件成立时,取X的当前值,否则取VALUEWHEN的上个值.
    这个,是否与ref(x,barslast(COND))效果一样
     
    效果是一样的。

    TESTSKIP(A):满足A则直接返回.
    用法:
     TESTSKIP(A) 
     表示如果满足条件A则该公式直接返回,不再计算接下来的表达式 注意:A为非序列数据,只取最后一个数据
    非序列数据是指什么?
    序列数据又指什么呢?
     
    序列数据指的是时间序列数据,不同时间点上手机到的数据。非序列数据则相反,不管时间点,只有一个值。即时行情函数显示出来的数据如DYNAINFO(4)只有一个实时的值,就是非序列数据。

     

  • 通达信客服: 谢谢飞燕老师

    看了您写的回复,请再看看,我的理解对不对

    IFC始终和TESTSKIP搭配使用。

    序列数据指的是时间序列数据,比如在K线图中,随光标的移动而变化的CLOSE,就属于序列数据。
    流通盘caption,不随光标变化而变化,就属于非序列数据。

    由于IF、IFN、IFC的作用分类,属于平行关系,而非从属关系,
    为了保证在字面上看出这种关系,所以才把IF另命名为IFF,以求视觉上的平等。

     

  • 网友交流:
    关于IFC,还有以下疑问

    我在百度上搜过,IFC的用法介绍,和通达信软件的公式管理器的说明完全一样,没有任何扩展示例
    IFC(CLOSE>OPEN,HIGH,TESTSKIP(1));L;表示当日收阳则返回最高值,并执行下一句"L;",否则退出公式计算

    IFC(CLOSE>OPEN,HIGH,TESTSKIP(1));L;
    这里的L; 为什么不换行?是IFC的约定的书写格式?还是一种泛指?L表示什么?
    --------------------------------------------------------------------------
    IFC(CLOSE>OPEN,HIGH,TESTSKIP(1));L;
    是否等同于
    IFC(CLOSE>OPEN,HIGH,TESTSKIP(1));
    L;
    还是等同于
    IFC(CLOSE>OPEN,HIGH,TESTSKIP(1));
    。。。。A其它语句;
    。。。。B其它语句;
    。。。。L其它语句;

    --------------------------------------------------------------------------
    TESTSKIP(A):满足A则直接返回.
    用法:
     TESTSKIP(A) 
     表示如果满足条件A则该公式直接返回,不再计算接下来的表达式 注意:A为非序列数据,只取最后一个数据

    TESTSKIP(1) 是否等同于TESTSKIP(2),也就等同于TESTSKIP(100)?
    它的作用是否等同于Stop或是End?
    --------------------------------------------------------------------------
    TESTSKIP能否脱离IFC而单独存在?
       
    --------------------------------------------------------------------------
    IFC(CLOSE>OPEN,HIGH,TESTSKIP(1));
    。。。。A其它语句
    。。。。B其它语句
    。。。。L其它语句
    如果条件成立,执行的下一句L,在上例中,是指A还是指L?
    IFC(CLOSE>OPEN,HIGH,TESTSKIP(1));L;表示当日收阳则返回最高值,并执行下一句"L;",否则退出公式计算
如果换成汉化版,意思是否是如下这样
IF(条件,返回最高值,并执行下一句"L;",否则退出公式计算);

有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友

可联系技术人员 QQ: 511411198  点击这里给我发消息进行 有偿 编写!不贵!点击查看价格!


【字体: 】【打印文章】【查看评论

相关文章

    没有相关内容