在編寫通達信指標公式時,經常會遇到出現(xiàn)很多信號,但是只想保留一個的問題。比如只保留最后一次信號,或者連續(xù)信號取第一個。今天給大家介紹一下常見的處理方法,涉及到ISLASTBAR、CURRBARSCOUNT、FILTER、CROSS、COUNT這5個函數(shù)。
1、ISLASTBAR函數(shù)
ISLASTBAR函數(shù)用來判斷是否為最后一個周期
舉例:
DRAWICON(C>O,L,1);{如果是陽線,在最低價畫紅色箭頭}
加載到主圖,如下圖(圖1),圖片中的這一段行情下面的例子中還會用到。
可以看到只要符合陽線,就有小箭頭。如果只想保留最后一次信號,也就是今天是陽線的時候畫紅色箭頭,需要用ISLASTBAR函數(shù)判斷。
DRAWICON(ISLASTBAR AND C>O,L,1);{如果今天是陽線,在最低價畫紅色箭頭};
2、CURRBARSCOUNT函數(shù)
CURRBARSCOUNT函數(shù)獲取到今天的周期數(shù),比如今天CURRBARSCOUNT=1,昨天CURRBARSCOUNT=2。
舉例:
CURRBARSCOUNT=5;{到今天的周期數(shù)等于5};
下圖中倒數(shù)第5根K線出信號。
DRAWICON(CURRBARSCOUNT<=5 AND C>O,L,1);{如果到今天的周期數(shù)小于等于5并且是陽線,在最低價畫紅色箭頭};
對于上文圖1中一段行情,只有最近5天的K線是陽線時才會出現(xiàn)紅色箭頭。
3、FILTER函數(shù)
FILTER函數(shù)用來過濾連續(xù)出現(xiàn)的信號。
用法:FILTER(X,N),X條件成立時,將后面N個周期內的X置為0。X=1表示條件成立,第一個X條件成立之后,后面的N個周期即使X=1,也會被置為0,這樣就不成立了,不會出現(xiàn)信號。
例如:
YX:=FILTER(C>O,5);{出現(xiàn)陽線之后,之后5天的陽線信號過濾掉}DRAWICON(YX,L,1);{出現(xiàn)陽線之后,5天之內再次出現(xiàn)陽線也不畫紅色箭頭};
4、CROSS函數(shù)
CROSS函數(shù)表示交叉。
用法: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這個條件時,很多周期都可以滿足條件,出現(xiàn)紅色箭頭,但是用CROSS(MACD,0)(MACD上穿零軸)時,只有上穿的那個周期才會出現(xiàn)紅色箭頭(如下圖)。
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函數(shù)
COUNT函數(shù)用來統(tǒng)計條件成立的周期數(shù)
用法:COUNT(X,N),統(tǒng)計N周期中X條件成立的周期數(shù),當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軸以來的周期數(shù)}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條件畫紅色箭頭};