在編寫通達信指標公式時,,經常會遇到出現很多信號,但是只想保留一個的問題,。比如只保留最后一次信號,,或者連續(xù)信號取第一個。今天給大家介紹一下常見的處理方法,,涉及到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函數用來過濾連續(xù)出現的信號,。
用法: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函數用來統(tǒng)計條件成立的周期數
用法:COUNT(X,N),統(tǒng)計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條件畫紅色箭頭};