通达信指标公式如何实现只保留一个信号?

时间:2023-03-30 09:59:57

在编写通达信指标公式时,经常会遇到出现很多信号,但是只想保留一个的问题。比如只保留最后一次信号,或者连续信号取第一个。今天给大家介绍一下常见的处理方法,涉及到ISLASTBAR、CURRBARSCOUNT、FILTER、CROSS、COUNT这5个函数。

1、ISLASTBAR函数

ISLASTBAR函数用来判断是否为最后一个周期。

举例:

DRAWICON(C>O,L,1);{如果是阳线,在最低价画红色箭头}

加载到主图,如下图(图1),图片中的这一段行情下面的例子中还会用到。

通达信指标公式如何实现只保留一个信号?

 可以看到只要符合阳线,就有小箭头。如果只想保留最后一次信号,也就是今天是阳线的时候画红色箭头,需要用ISLASTBAR函数判断。

DRAWICON(ISLASTBAR AND C>O,L,1);{如果今天是阳线,在最低价画红色箭头};

通达信指标公式如何实现只保留一个信号?

 

2、CURRBARSCOUNT函数

CURRBARSCOUNT函数获取到今天的周期数,比如今天CURRBARSCOUNT=1,昨天CURRBARSCOUNT=2。

举例:

CURRBARSCOUNT=5;{到今天的周期数等于5};

下图中倒数第5根K线出信号。

通达信指标公式如何实现只保留一个信号?

DRAWICON(CURRBARSCOUNT<=5 AND C>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)(MACD上穿零轴)时,只有上穿的那个周期才会出现红色箭头(如下图)。

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:=JC AND COUNT(JC,T)=1 AND DEA>0;{DEA上穿0轴以来第一次金叉,并且DEA大于0}

DRAWICON(DYC,DEA,1);{满足DYC条件画红色箭头};

通达信指标公式如何实现只保留一个信号?

通达信指标公式如何实现只保留一个信号? 

 

关注技术Pie,学习更多通达信指标公式编写知识。

友情提醒:本文仅供学习交流技术指标公式,不构成任何投资建议。投资有风险,入市需谨慎!