分享

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

 百智堂53 2024-02-01 发布于山东
原创 技术Pie 技术Pie 2023-03-29 16:44

在编写通达信指标公式时,经常会遇到出现很多信号,但是只想保留一个的问题。比如只保留最后一次信号,或者连续信号取第一个。今天给大家介绍一下常见的处理方法,涉及到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条件画红色箭头};

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多