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

求高手解答一个匪夷所思的公式计算问题! [通达信]

  • 咨询内容: 思路:当前MACD为负值,(即当前光标所处位置为MACD为绿柱子的区域)我想求出上一次MACD为负值时区间内的最低价,即求PQD的值。 表达式如下: {N1定义为最近一次MACD柱子下穿0轴的位置} N1:=BARSLAST(CROSS(0,MACD)); {N2定义为最近一次MACD柱子上穿0轴的位置} N2:BARSLAST(CROSS(MACD,0)); {N3定义为前一次MACD柱子下穿0轴的位置} N3:REF(N1,N1+1)+N1+1; {计算前低价格PQD} M23:N3-N2; PQD:REF(LLV(L,M23),N2+1); 问题:上述公式验证时发现PQD的取值不正确。 验证过程如下:以深圳指数(04)日线为例,将光标移至20150306,按道理此时的PQD的计算结果应该为20150119日的最低值 10634.62。可是取到的却是20150206的10715.43。 为进一步验证细节,将计算PQD所需要的各个参数加以输出。此时M23(将光标移至20150306)输出为25,没有问题。将公示中的M23用常数25替代的话,则PQD的取值是正确的10634.62 但是直接用这样表达PQD:REF(LLV(L,M23),N2+1);结算结果就不正确呢?? 请高手赐教!!

     

  • 通达信技术部:

    N1:=BARSLAST(CROSS(0,MACD.MACD));{N1定义为最近一次MACD柱子下穿0轴的位置}
    N2:=BARSLAST(CROSS(MACD.MACD,0));{N2定义为最近一次MACD柱子上穿0轴的位置}
    N3:=REF(N1,N1+1)+N1+1;{N3定义为前一次MACD柱子下穿0轴的位置}
    M23:=N3-N2;
    PQD:REF(LLV(L,M23),N2+1);{计算前低价格PQD};

    说明:引用指标,取值默认为第一个值。所以你上面的公式默认取的是MACD中的DIF.要取MACD的值,得这样写"MACD.MACD”。

     

  • 通达信客服: 谢谢回复~~ 我漏了一点,我的公式定义的顶部就有以下几行代码,应该是这样的。 DIFF:=EMA(CLOSE,12) - EMA(CLOSE,26); DEA:=EMA(DIFF,9); MACD:=2*(DIFF-DEA); N1:=BARSLAST(CROSS(0,MACD.MACD));{N1定义为最近一次MACD柱子下穿0轴的位置} N2:=BARSLAST(CROSS(MACD.MACD,0));{N2定义为最近一次MACD柱子上穿0轴的位置} N3:=REF(N1,N1+1)+N1+1;{N3定义为前一次MACD柱子下穿0轴的位置} M23:=N3-N2; PQD:REF(LLV(L,M23),N2+1);{计算前低价格PQD}; 现在的主要问题还是主贴里的问题,我将N1 N2 N3 M23的计算结果都输出检测了,这些计算都是正确的。可是 PQD:REF(LLV(L,M23),N2+1)这个计算结果不对 这一句我要表达的意思是 从光标处作为当前,求N2+1日之前的M23日这个区间内L的最低值。

     

  • 网友交流: 为什么我的排版发出来就不换行了呢

     

  • 网友交流:

    你下载完整的数据在试试,我这里显示的是正确的:

    DIFF:=EMA(CLOSE,12) - EMA(CLOSE,26);
    DEA:=EMA(DIFF,9);
    MACD:=2*(DIFF-DEA);
    N1:=BARSLAST(CROSS(0,MACD));{N1定义为最近一次MACD柱子下穿0轴的位置}
    N2:=BARSLAST(CROSS(MACD,0));{N2定义为最近一次MACD柱子上穿0轴的位置}
    N3:=REF(N1,N1+1)+N1+1;{N3定义为前一次MACD柱子下穿0轴的位置}
    M23:=N3-N2;
    PQD:REF(LLV(L,M23),N2);{计算前低价格PQD};


    此主题相关图片如下a1.png:

 

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

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


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

相关文章

    没有相关内容