從大盤上漲下跌家數的變化來預測大盤未來方向

By | 2016-06-04

對於台股後市,我一直使用上漲下跌家數差這個指標來當作溫度計,這個指標有幾種不同的計算方式,不同的方式,背後有著不同的思維邏輯,那種方式比較值得採用,就視大家不同的操作理念而定,但我把常用的計算方式全部列出來,讓各位自行覺得那麼計算方式跟您最投緣了。

當我們把上市所有個股的上漲家數及下跌家數拿來設成指標時,最直接的計算方式就是把每天上漲家數與下跌家數的差值相減,計算一段區間的總和,然後把它畫成一條指標,如果要寫成腳本,我的寫法如下

input:period(10,"RSI計算天數");
value1=GetField("上漲家數");
value2=getfield("下跌家數");
value3=value1-value2;
value4=summation(value3,period);
plot1(value4,"上漲下跌家數差區間總和");

畫成指標,跟加權指數的對照就像下圖

060401

從這張圖我們可以發現兩件事

1.當上漲下跌家數差的十天總和超過2000且與指數呈現背離時,是大盤多頭力氣竭盡的前兆,同樣的,這個數字跌破-2000時,往往指數會開始打底準備反彈,這時候就不宜再追空了。

2.這個數字從-2000底下反彈而上時,是指數的買進訊號。我自己在操作上通常是當這訊號出現時就翻多,當然很多時候這只是大盤空頭走勢中的小反彈,所以我會以指數跌破五日線作為短線停損停利的標準。

 

單純使用這個時間序列是可以,但忽上忽下的數字還是比較無法很直覺的catch到多空的方向,這時候我們可以透過一些方法,來讓一個時間序列所呈現的買進賣出訊號更明確。

方法一: 用移動平均線把時間序列平滑化

處理一個每天波動較大的時間序列,要更清晰地看出他的趨勢方向,最直接的方法就是用移動平均線來作平滑,所以我們可以把上漲下跌家數差十日總和作移動平均,我寫的腳本如下:

input:period(10,"RSI計算天數");
value1=GetField("上漲家數");
value2=getfield("下跌家數");
value3=value1-value2;
value4=summation(value3,period);
value5=average(value4,5);
plot1(value5,"上漲下跌家數差區間總和移動平均");

把它畫成跟加權指數的對照圖如下:

060402

在沒有平滑之前,很容易出現假訊號,我把上漲下跌家數差總和突破-2000當作加權指數買進訊號去回測一年就出現九個買進訊號,但其中只有兩個賺錢,勝率只有22.2%,但如果用5日加權平均值來回測三年,回測圖如下:

060403三年出12個買進訊號,其中一半後來漲幅超過7%,勝率剛好五成。

方法二: 拿兩條長短天期不同的均線來看交叉

這個方法是取兩條不同天期的移動平均線,來看不同天期趨勢是否都已經進入到反轉的階段,畫圖的腳本如下:

input:period(10,"RSI計算天數");
value1=GetField("上漲家數");
value2=getfield("下跌家數");
value3=value1-value2;
value4=summation(value3,period);
value5=average(value4,5);
value6=average(value4,20);
plot1(value5,"上漲下跌家數差區間總和短期移動平均");
plot2(value6,"上漲下跌家數差區間總和長期移動平均");

畫出來的圖像下方這樣

060404

這兩條線,分別代表這個時間序列不同天期的趨勢,通常當這兩條線都在低檔區翻揚,而且出現黃金交叉,大盤反轉向上的機率就很高,但也有幾次是長天期趨勢還在跌,短天期趨勢已翻轉,如果要等到長天期趨勢也轉正,進場的時機就會晚了一點。

有另一個方法可以來運用這兩條均線,那就是方法三所有的,把這兩條均線相減看兩條線的差值

方法三: 計算兩條均線的差額

把不同天期均線相減,可以得出一個在0上下波動的柱狀圖,這樣的指標,可以更清楚的呈現短期與長期均線的差值,對於那些要尋找兩者之間差距是在擴大還是縮小的使用者,這是一個自訂指標的好用法

以上面的例子,我們可以把腳本改成下面的寫法

input:period(10,"RSI計算天數");
value1=GetField("上漲家數");
value2=getfield("下跌家數");
value3=value1-value2;
value4=summation(value3,period);
value5=average(value4,5);
value6=average(value4,20);
value7=value5-value6;
plot1(value7,"上漲下跌家數差區間總和長短天均線差");

再把呈現的方式改成柱狀,畫出來的圖就會如下圖

060405

除了用均線及其衍生的計算方法之外,也可以借用古老技術分析在計算技術指標時的一些傳統的計算方法

方法四: 透過RSI的運算來計算超買與超賣的情況

任何一個時間序列,不需要開高低,只需要收盤價,就可以計算RSI,RSI的概念是一個數列N日來上漲的部份除以每日波動的部份(包括上漲跟下跌),所以如果N日來都是上漲,那麼RSI會是100,N日來都是下跌,RSI會是0,RSI是一個在0到100之間波動的數字

我們可以運用這個數字,來觀察一個時間序列在一段期間內是否連續上漲或連續下跌,這樣也是觀察一個時間序列的方式

以上面的序列來說,我們也可以改寫成以下的腳本

input:period(10,"RSI計算天數");
value1=GetField("上漲家數");
value2=getfield("下跌家數");
value3=value1-value2;
value4=summation(value3,period);
value5=rsi(value4,period); 
plot1(value5,"上漲下跌家數差區間總和RSI");

然後畫成的圖就會如下圖

060406

 方法五:透過MTM來計算動能

動能也是一種關注時間序列的指標,計算的方法很單純,就是用最新的價格減去N日前的價格,用MTM來看上述序列的圖如下

060407

除了上述的方法之外,也可以用KD來計算擺盪,用乖離來計算價位跟平均線的距離,也可以用統計學上的方法來計算目前的價位是否跳出常態分配的範圍

060408要畫出上圖的腳本則如下

input:period(10,"RSI計算天數");
value1=GetField("上漲家數");
value2=getfield("下跌家數");
value3=value1-value2;
value4=summation(value3,period);
value5=bollingerband(value4,20,2);
value6=bollingerband(value4,20,-2);
plot1(value4,"上漲下跌家數差區間總和BBand");
plot2(value5);
plot3(value6);

綜合上述的內容,我試著一步步地利用大盤漲跌家數差總和這個數值,透過自訂指標的方式,從數值的不同運算,找出運用這個數值的一些規則,再把這些規則改寫成交易策略,然後經過不斷的回測,找到真的可以上戰場的交易策略。

希望在全世界只有我們開盤的這一天,能夠帶給大家一些開發私房交易策略的靈感