在编写通达信指标公式时,经常会遇到出现很多信号,但是只想保留一个的问题。比如只保留最后一次信号,或者连续信号取第一个。今天就给大家介绍一下常见的处理方法,涉及到ISLASTBAR、CURRBARSCOUNT、FILTER、CROSS、COUNT这5个函数。
1、ISLASTBAR函数
ISLASTBAR函数用来判断是否为最后一个周期
举例:
DRAWICON(C>O,L,1);{如果是阳线,在最低价画红色箭头}
加载到主图,如下图,图片中的这一段行情下面的例子中会还会用到。
可以看到只要符合阳线,就有小箭头。如果只想保留最后一次信号,也就是今天是阳线的时候画红色箭头,需要用ISLASTBAR函数判断。
DRAWICON(ISLASTBARANDC>O,L,1);{如果今天是阳线,在最低价画红色箭头};
2、CURRBARSCOUNT函数
CURRBARSCOUNT函数获取到今天的周期数,比如今天CURRBARSCOUNT=1,昨天CURRBARSCOUNT=2。
举例:
CURRBARSCOUNT=5;{到今天的周期数等于5};
下图中倒数第5根K线出信号。
DRAWICON(CURRBARSCOUNT<=5ANDC>O,L,1);{如果到今天的周期数小于等于5并且是阳线,在最低价画红色箭头};
对于上文图1中一段行情,只有最近5天的K线是阳线时才会出现红色箭头。
3、FILTER函数
FILTER函数用来过滤连续出现的信号
用法:FILTER(X,N),X条件成立时,将后面N个周期内的X置为0。X=1表示条件成立,第一个X条件成立之后,后面的N个周期即使X=1,也会被置为0,这样就不成立了,不会出现信号。
例如:
YX:=FILTER(C>O,5);{出现阳线之后,之后5天的阳线信号过滤掉}
DRAWICON(YX,L,1);{出现阳线之后,5天之内再次出现阳线也不画红色箭头};
4、CROSS函数
CROSS函数表示交叉。
用法:CROSS(A,B)表示当A从下方向上穿过B时返回1,否则返回0
DIF:EMA(CLOSE,12)-EMA(CLOSE,26);
DEA:EMA(DIF,9);
MACD:(DIF-DEA)*2,COLORSTICK;
DRAWICON(MACD>0,0,1);{MACD大于0,在0处画红色箭头};
当使用MACD>0这个条件时,很多周期都可以满足条件,出现红色箭头,但是用CROSS(MACD,0)时,只有上穿的那个周期才会出现红色箭头。
DIF:EMA(CLOSE,12)-EMA(CLOSE,26);
DEA:EMA(DIF,9);
MACD:(DIF-DEA)*2,COLORSTICK;
DRAWICON(CROSS(MACD,0),0,1);{MACD大于0,在0处画红色箭头};
5、COUNT函数
COUNT函数用来统计条件成立的周期数
用法:COUNT(X,N),统计N周期中X条件成立的周期数,当COUNT(X,N)=1的时候,就表示第一次成立。
举例:零轴之上第一次金叉
DIF:EMA(CLOSE,12)-EMA(CLOSE,26);
DEA:EMA(DIF,9);
MACD:(DIF-DEA)*2,COLORSTICK;
T:=BARSLAST(CROSS(DEA,0));{DEA上穿0轴以来的周期数}
JC:=CROSS(DIF,DEA);{DIF、DEA金叉}
DYC:=JCANDCOUNT(JC,T)=1ANDDEA>0;{DEA上穿0轴以来第一次金叉,并且DEA大于0}
DRAWICON(DYC,DEA,1);{满足DYC条件画红色箭头};
关注技术Pie,学习更多通达信指标公式编写知识。
友情提醒:本文仅供学习交流技术指标公式,不构成任何投资建议。投资有风险,入市需谨慎!
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。