您现在的位置:程序化交易>> 股票公式>> 大智慧>> 大智慧知识>>正文内容

请版主高手核查,发现一个大智慧公式的BUG [大智慧]

  • 咨询问题:

    LLV,是我们编公式中经常用到的一个涵数,可是,最近,我却发现了一个问题。LLV里面如果带有参数的话,就会出错。

     

    我特地弄了两个可以替换的涵数进行验证。

     

    发现一个HHV,LLV的问题,请高手版主探讨

     

    DIF:EMA(CLOSE,12)-EMA(CLOSE,26);
    DEA:=EMA(DIF,9);
    MACD:(DIF-DEA)*2,COLORSTICK;
    A1:=BARSLAST(CROSS(DIF,DEA));
    B11:LLV(REF(DIF,A1),4);
    B12:min(REF(DIF,A1),REF(DIF,A1+1),REF(DIF,A1+2),REF(DIF,A1+3));

     

    按理说,B11和B12应该是同一条线,可是,我检测出来后发现,并不是这样,B12得出的结果没错,而B11得出的却是 REF(DIF,A1)当天的DIF值,而不是四天内的最低值。

     

    不知是我的思路错误,还是真的软件BUG。版主和各位高手看看。

     

     


    图片点击可在新窗口打开查看此主题相关图片如下:aa.gif
    图片点击可在新窗口打开查看

     

     

     

  • 大智慧客服: REF(REF(DIF,A1),1)
    不等于
    REF(DIF,A1+1)

     

  • 大智慧客服:
    以下是引用不咋地在2012-1-16 11:11:00的发言:
    REF(REF(DIF,A1),1)
    不等于
    REF(DIF,A1+1)

     

     

    中间没有用到  REF(REF(DIF,A1),1)

     

  • 网友交流:  LLV内部用到。

     

  • 用户交流:

    以下是引用zxlc888在2012-1-15 13:12:00的发言:
    LLV,是我们编公式中经常用到的一个涵数,可是,最近,我却发现了一个问题。LLV里面如果带有参数的话,就会出错。
     
    我特地弄了两个可以替换的涵数进行验证。
     
    发现一个HHV,LLV的问题,请高手版主探讨
     
    DIF:EMA(CLOSE,12)-EMA(CLOSE,26);
    DEA:=EMA(DIF,9);
    MACD:(DIF-DEA)*2,COLORSTICK;
    A1:=BARSLAST(CROSS(DIF,DEA));
    B11:LLV(REF(DIF,A1),4);
    B12:min(REF(DIF,A1),REF(DIF,A1+1),REF(DIF,A1+2),REF(DIF,A1+3));
     
    按理说,B11和B12应该是同一条线,可是,我检测出来后发现,并不是这样,B12得出的结果没错,而B11得出的却是 REF(DIF,A1)当天的DIF值,而不是四天内的最低值。
     
    不知是我的思路错误,还是真的软件BUG。版主和各位高手看看。
     
     

    图片点击可在新窗口打开查看此主题相关图片如下:aa.gif
    图片点击可在新窗口打开查看

     
     
     
    这是个好问题:

    1、楼主对软件的理解有误,2、软件的确存在函数取值有问题
    回答这个问题我们要做分解,一步步来
     
    请先将以下式子引入,以今日分时状态下上证指数做说明
    DIF:EMA(CLOSE,12)-EMA(CLOSE,26);
    DEA:EMA(DIF,9);
    MACD:(DIF-DEA)*2,COLORSTICK;
    A1:BARSLAST(CROSS(DIF,DEA)),linethick0,precis0,color54ff54;
    B11:LLV(REF(DIF,A1),4),color52ff52;
    B12:min(REF(DIF,A1),REF(DIF,A1+1),REF(DIF,A1+2),REF(DIF,A1+3)),color5252ff;
    REF(DIF,A1),linethick0,colorffffff;
    REF(DIF,A1+1),linethick0,colorffffff;
    REF(DIF,A1+2),linethick0,colorffffff;
    REF(DIF,A1+2),linethick0,colorffffff;

     

    配图


    图片点击可在新窗口打开查看此主题相关图片如下:snap1.jpg
    图片点击可在新窗口打开查看

     

    <1>、barslast问题

    注意图中B12第一个有效值比B11早了叁个区间,这是为什么呢?

    看A1的第一个有效值出现的时间是9:38分,这与B12起始值相同->没有问题

    但是LLV(X,4)决定了B11第一个有效值出现在9:41分->问题就在这里

     

    9:38-9:41的区间是第一次满足A1都出现有效值的条件所以LLV才有输出

    而9:30-9:40,没有A1同时得到有效输出值,所以无法比较;

    总结:LLV(X,N)第一个有效值应当出现在第一次区间>=N时!

     

    <2>、LLV(X,N)函数对于负值会出现取值错误:

    非常简单的一个实验: var1:close*(-1);var2:llv(var1,3);

    为负数时,值越大越小,值越小越大,这时LLV可以体现这一点;

    但是在本例中却颠倒,注意四个值中-0.813和-0.835

    应是最大值却成了最小值


    图片点击可在新窗口打开查看此主题相关图片如下:snap2.jpg
    图片点击可在新窗口打开查看

     


    图片点击可在新窗口打开查看此主题相关图片如下:snap4.jpg
    图片点击可在新窗口打开查看

     

    所以我们修改一下B12为如下条件,就会得到两线重合,

    不重合的部分因<1>导致有三个初始值。

    B12:MAX(REF(DIF,A1),REF(DIF,A1+1),REF(DIF,A1+2),REF(DIF,A1+3)),color5252ff;


    图片点击可在新窗口打开查看此主题相关图片如下:snap3.jpg
    图片点击可在新窗口打开查看

    [此贴子已经被作者于2012-1-16 12:12:55编辑过]

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

相关文章

    没有相关内容