DMI大家很常用,不過跟大部份的趨勢指標一樣,踫到盤整就GG。 今天我想介紹一個VHF指標,這個指標能過濾盤整的情況,我們可以把這兩個指標合起來一起使用,來過濾掉盤整時DMI所出現的交易訊號。
DMI是一個很常用的指標,從下面這張圖可以很清楚地看到,它代表的每天多頭新攻佔的地盤,與空頭新斬獲間的角力。
DMI相關的數據,我們用了directionmovement這個函數來計算
1// DirectionMovement function (for DMI相關指標) 2// Input: length 3// Return: pdi_value(+di), ndi_value(-di), adx_value(adx) 4// 5input: 6 length(numericsimple), 7 pdi_value(numericref), 8 ndi_value(numericref), 9 adx_value(numericref); 10 11variable: 12 padm(0), nadm(0), radx(0), 13 atr(0), pdm(0), ndm(0), tr(0), 14 dValue0(0), dValue1(0), dx(0), 15 idx(0); 16 17if currentbar = 1 then 18 begin 19 padm = close / 10000; 20 nadm = padm; 21 atr = padm * 5; 22 radx = 20; 23 end 24else 25 begin 26 pdm = maxlist(High - High[1], 0); 27 ndm = maxlist(Low[1] - Low, 0); 28//先算出pdm及ndm 29 if pdm < ndm then 30 pdm = 0 31 else 32 begin 33 if pdm > ndm then 34 ndm = 0 35 else 36 begin 37 pdm = 0; 38 ndm = 0; 39 end; 40 end; 41//那一邊的力量比較大,另一邊就以零來計算 42 if Close[1] > High then 43 tr = Close[1] - Low 44 else 45 begin 46 if Close[1] < Low then 47 tr = High - Close[1] 48 else 49 tr = High - Low; 50 end; 51// 計算true range 52 padm = padm[1] + (pdm - padm[1]) / length; 53 nadm = nadm[1] + (ndm - nadm[1]) / length; 54 atr = atr[1] + (tr - atr[1]) / length; 55 56 dValue0 = 100 * padm / atr; 57 dValue1 = 100 * nadm / atr; 58 59 if dValue0 + dValue1 <> 0 then 60 dx = AbsValue(100 * (dValue0 - dValue1) / (dValue0 + dValue1)); 61 62 radx = radx[1] + (dx - radx[1]) / length; 63 end; 64 65pdi_value = dValue0; 66ndi_value = dValue1; 67adx_value = radx;
而透過上述的計算公式,我們可以了解,DMI是透過多空雙方的力量變化,來呈現何者佔上風。
但在盤整的時候,DMI會因為多方或空方一時的表現,而呈現相互交叉的鋸齒狀走勢,
這代表了多空拉鋸,但在這種時候,如果貿然也以+DI突破-DI為買進訊號,或者 -DI突破
+DI為買進訊號,那麼就很突易出現過度交易的現象。
這時候市場老手們就引進了VHF這個指標,用它來過濾掉一些DMI在盤整時可能出現的假訊號。
VHF的全名是垂直水平過濾指標,它是把一段時間以來的最高點減去一段時間以來的最低點,然後去除以這段時間每天漲跌的絕對值的總和。
對應的腳本如下:
1// XQ: VHF指標 2// 3input: Length(42); 4Variable: hp(0), lp(0), numerator(0), denominator(0), _vhf(0); 5 6SetInputName(1, "天數"); 7 8hp = highest(Close, Length); 9lp = lowest(Close, Length); 10 11numerator = hp - lp; 12denominator = Summation(absvalue((Close - Close[1])), Length); 13 14if denominator <> 0 then 15 _vhf = numerator / denominator 16else 17 _vhf = 0; 18 19Plot1(_vhf, "VHF");
由於這個指標的計算方式是這麼來的,所以它的值主要是受分子與分母的影響而在以下的情況時,會有較大的波動
1。當這段時間的新高或新低改變時,不管是創新高,還是創新低,VHF的分子都會變大。
2。 當股價變動突然變劇烈,這時分母變大,VHF會急遽變小
當股價陷入盤整時,由於分子跟分母都會變小,所以VHF就不會有很大的變大。
因此,當我們把DMI跟VHF兩個指標拿來一起看時,它的原則就是: 當DMI出現交易訊號時,如果VHF有明顯的波動,那麼這個訊號可信度較高,相反地,如果DMI出現交易訊號,而VHF沒有明顯變化,那麼這個盤還是盤整的機率比較大。
下圖是加權指數過去一陣子與這兩個指標的對照圖
大家不妨對照一下看看是否加了VHF之後的DMI,對於大盤的真正轉折點更能有效的呈現出來。
下圖是現在這兩個指標與大盤之間的關係,敬供參考。