當DMI遇上VHF

By | 2016-04-06

DMI大家很常用,不過跟大部份的趨勢指標一樣,踫到盤整就GG。 今天我想介紹一個VHF指標,這個指標能過濾盤整的情況,我們可以把這兩個指標合起來一起使用,來過濾掉盤整時DMI所出現的交易訊號。

 

DMI是一個很常用的指標,從下面這張圖可以很清楚地看到,它代表的每天多頭新攻佔的地盤,與空頭新斬獲間的角力。

dmiiDMI相關的數據,我們用了directionmovement這個函數來計算

// DirectionMovement function (for DMI相關指標)
// Input: length
// Return: pdi_value(+di), ndi_value(-di), adx_value(adx)
//
input: 
 length(numericsimple),
 pdi_value(numericref),
 ndi_value(numericref),
 adx_value(numericref);
 
variable:
 padm(0), nadm(0), radx(0),
 atr(0), pdm(0), ndm(0), tr(0),
 dValue0(0), dValue1(0), dx(0),
 idx(0);

if currentbar = 1 then
 begin
 padm = close / 10000;
 nadm = padm;
 atr = padm * 5;
 radx = 20;
 end
else
 begin
 pdm = maxlist(High - High[1], 0);
 ndm = maxlist(Low[1] - Low, 0);
//先算出pdm及ndm
 if pdm < ndm then
 pdm = 0
 else 
 begin
 if pdm > ndm then
 ndm = 0
 else
 begin
 pdm = 0;
 ndm = 0;
 end; 
 end;
//那一邊的力量比較大,另一邊就以零來計算
 if Close[1] > High then
 tr = Close[1] - Low
 else 
 begin
 if Close[1] < Low then
 tr = High - Close[1]
 else 
 tr = High - Low;
 end;
//  計算true range
 padm = padm[1] + (pdm - padm[1]) / length;
 nadm = nadm[1] + (ndm - nadm[1]) / length;
 atr = atr[1] + (tr - atr[1]) / length;
 
 dValue0 = 100 * padm / atr;
 dValue1 = 100 * nadm / atr;
 
 if dValue0 + dValue1 <> 0 then
 dx = AbsValue(100 * (dValue0 - dValue1) / (dValue0 + dValue1));

 radx = radx[1] + (dx - radx[1]) / length;
 end;

pdi_value = dValue0;
ndi_value = dValue1;
adx_value = radx;

 

 

而透過上述的計算公式,我們可以了解,DMI是透過多空雙方的力量變化,來呈現何者佔上風。

但在盤整的時候,DMI會因為多方或空方一時的表現,而呈現相互交叉的鋸齒狀走勢,
這代表了多空拉鋸,但在這種時候,如果貿然也以+DI突破-DI為買進訊號,或者 -DI突破
+DI為買進訊號,那麼就很突易出現過度交易的現象。

這時候市場老手們就引進了VHF這個指標,用它來過濾掉一些DMI在盤整時可能出現的假訊號。

VHF的全名是垂直水平過濾指標,它是把一段時間以來的最高點減去一段時間以來的最低點,然後去除以這段時間每天漲跌的絕對值的總和。

對應的腳本如下:

// XQ: VHF指標
//
input: Length(42);
Variable: hp(0), lp(0), numerator(0), denominator(0), _vhf(0);

SetInputName(1, "天數");

hp = highest(Close, Length);
lp = lowest(Close, Length);

numerator = hp - lp;
denominator = Summation(absvalue((Close - Close[1])), Length);

if denominator <> 0 then
 _vhf = numerator / denominator
else
 _vhf = 0;

Plot1(_vhf, "VHF");

由於這個指標的計算方式是這麼來的,所以它的值主要是受分子與分母的影響而在以下的情況時,會有較大的波動

1。當這段時間的新高或新低改變時,不管是創新高,還是創新低,VHF的分子都會變大。

2。 當股價變動突然變劇烈,這時分母變大,VHF會急遽變小

當股價陷入盤整時,由於分子跟分母都會變小,所以VHF就不會有很大的變大。

因此,當我們把DMI跟VHF兩個指標拿來一起看時,它的原則就是: 當DMI出現交易訊號時,如果VHF有明顯的波動,那麼這個訊號可信度較高,相反地,如果DMI出現交易訊號,而VHF沒有明顯變化,那麼這個盤還是盤整的機率比較大。

下圖是加權指數過去一陣子與這兩個指標的對照圖

040601

大家不妨對照一下看看是否加了VHF之後的DMI,對於大盤的真正轉折點更能有效的呈現出來。

下圖是現在這兩個指標與大盤之間的關係,敬供參考。

040602