趨勢檢定器

By | 2015-10-13

我們透過技術分析指標建構交易策略時,最大的困難在於,當趨勢指標通知我們出現買進訊號時,往往只是盤整過程中的一次假的警報。

我們以移動平均線出現黃金交叉為例,當短天期移動平均突破長天期移動平均時,僅能代表近日的股價走勢平均下來終於高於比較長期的平均值,並不代表接下來股價就會出現明顯的漲勢。

這樣的情況讓我們在透過趨勢指標撰寫交易策略時,往往會有買進訊號過多,過濫的情況,如果我們把這樣的策略直接拿下去交易,極可能繳了大量的手續費及交易稅,而沒有賺到什麼錢。

於是,我們試著從歷史的經驗中,尋找當一檔股票出現明顯的波動方向時,往往伴隨著什麼樣的跡象,然後看看這些跡象,在趨勢指標出現買進訊號時,有沒有同步出現,如果有,代表這個趨勢改變的訊號,成功的機率大增。

我們可以試著把這些跡象集合起來,然後做出一個趨勢檢定器,用這個檢定器來過濾那些可能的假訊號。

例如老市場常說,當MACD黃金交叉時,如果伴隨著成交量突破10日均量,那就代表趨勢是真的,這裡的成交量突破10日均量,就是一個趨勢檢定器。

趨勢檢定器

這些年從我累積的看盤經驗裡,通常當一檔股票技術指標如果出現買進訊號時,我會同步check以下幾件事,然後再來判斷這個訊號是不是玩真的

1.總成交筆數有沒有增加?  有就代表交投變熱絡了,表示市場參與者變多了。

2.佔全市場總成交量的比重是不是在增加?  有增加才代表不是因為盤好才出量。

3.外盤的佔比是否增加? 外盤代表的是追價的意願,追價意願提高是上漲的重要動力。

4.主力是否買超?  籌碼被收集而不是被發散,是行情啟動的基本要件

5.波動幅度是否變大? 一灘死水的突破通常是假突破。

6.開盤委買有沒有增加? 如果增加代表新的買盤在進駐中。

於是我寫了一個腳本,在這腳本中我應用上面的這六個面象,做出一個計分器,如果每個面象近兩個交易日有任一天有明顯比以往平均值突出的數字,就加一分,然後如果總得分超過4分,代表通過這個趨勢檢定器的檢定。

input:Length(10);

input:ratio(20);
input:cn(4);

setinputname(1,"移動平均天數");
setinputname(2,"超出均值比率");
setinputname(3,"最低符合條件數");
variable:count(0);
value1=GetField("總成交次數","D");
value2=GetField("佔全市場成交量比","D");
value3=GetField("內外盤比","D");
value4=GetField("外盤均量","D");
value5=GetField("主力買賣超張數","D");
value6=GetField("真實範圍波幅","D");
value7=GetField("開盤委買","D");
count=0;
if countif(value1 >=average(value1,length)*(1+ratio/100),2)>0
then count=count+1;

if countif(value2 >=average(value2,length)*(1+ratio/100),2)>0
then count=count+1;

if countif(value3 >=average(value3,length)*(1+ratio/100),2)>0
then count=count+1;

if countif(value4 >=average(value4,length)*(1+ratio/100),2)>0
then count=count+1;

if countif(value5>0,2)>0
then count=count+1;

if countif(value6 >=average(value6,length)*(1+ratio/100),2)>0
then count=count+1;

if countif(value7 >=average(value7,length)*(1+ratio/100),2)>0
then count=count+1;

if countif(volume >=average(volume,length)*(1+ratio/100),3)>0
then count=count+1;

if count>cn
then ret=1;

outputfield1(count);
setoutputname1("檢定值");

透過這個檢定器,我們可以過濾掉不少的假買進訊號

舉個例子

如果我們用昨天的收盤價來跑以下這個腳本

input:Length(20); //"計算期間"

LinearReg(close, Length, 0, value1, value2, value3, value4);
//做收盤價20天線性回歸
{value1:斜率,value4:預期值}
value5=rsquare(close,value4,20);//算收盤價與線性回歸值的R平方
if value1>0 and value5>0.2
then ret=1;

這個腳本跑出來的股票是屬於那種近20天股價呈現上昇趨勢的股票,結果符合上述腳本條件的股票共有286檔,這286檔今天盤中在平盤以上的共有128檔。

但如果加了趨勢檢定器,就如下圖,符合兩個條件的只剩109檔

101301

 

而這109檔今天在大盤下跌46點時,還維持在平盤上的,有69檔。

我們在寫趨勢型策略時,最怕的就是把no trend的歸成up trend,今天跟大家介紹這個趨勢檢查表,大家可以根據自己的經驗,調整內容,把那些no trend的通通都濾掉。