求高手解答一个匪夷所思的公式计算问题! [通达信]
-
咨询内容:
思路:当前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 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容