Author Archives: 發財橘子

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

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

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

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);

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

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

 

xqlite banner

 

一個觀察大戶在進貨還是出貨的指標

透過成交金額除以總成交筆數,我們可以算出當天的平均每筆成交金額,長期觀察這個數字,我發現搭配當天的價格走勢,可以判斷主力大戶是在出貨還是進貨。

計算每筆成交金額的腳本可以像下面這麼寫

var:cp(0);
var:count(0);
count=0;
value1=GetField("總成交次數","D");
value2=GetField("成交金額");

if value1<>0
then value3=value2/value1
else
value3=0;

plot1(average(value3,5));

以聯電為例,我們來看以下這個指標跟股價的對照圖

060303

我們會發現,當每筆成交金額異於平常且股價表現也異於平常時,往往是大戶進場的癥兆,為了抓到這樣的機會,我寫了一個腳本如下:

input:length(20);
variable:up1(0),down1(0),mid1(0),bbandwidth(0);
up1 = bollingerband(Close, Length, 1);

var:cp(0);
var:count(0);
count=0;
value1=GetField("總成交次數","D");
value2=GetField("成交金額");

if value1<>0
then value3=value2/value1
else
value3=0;
value4=close-open;
value5=average(value3,3)*average(value4,3);
value6=bollingerband(value5,20,2);
if getsymbolfield("tse.tw","收盤價")
>average(getsymbolfield("tse.tw","收盤價"),10)
then begin
if close cross over up1
and value5 cross over value6
and close<close[10]*1.1

then ret=1;
end;

 

拿這個腳本去回測,我用那些有成交量的中小型股票來跑,一年期及三年期的回測報告如下:

06031y

 

06033y

 

各位老大可以自己試試在每筆平均成交金額這樣的數據上,尋找私房的交易策略

 

xqlite banner

開高後不拉回的中小型股

市場老手有一些看盤密技,其中有一項是大盤不錯時,開盤尋找那些開高(但也沒有非常高),前幾天股價漲幅不大,然後盤中拉回幅度有限的股票,他們喜歡把這種股票拉上去,從實證的回測來看,這樣的股票做隔日沖,贏的機率還真的很大。

我寫了一個日線的腳本來尋找有上述情況的股票

 

input:sp(2,"回檔最大幅度");
input:opl(2,"開高最小幅度");
input:oph(4,"開高最大幅度");
 
if open>=close[1]*(1+opl/100)
 and close<=close[1]*(1+oph/100)
 and low>open*(1-sp/100)
 and close=high
 and close[1]<close[3]*1.04//前三天漲幅不到4%
and GetSymbolField("tse.tw","收盤價","D")
>average(GetSymbolField("tse.tw","收盤價","D"),10)
and volume>average(volume,20)*1.2
then ret=1 ;

 

這個腳本的邏輯如下:

1。開的比昨天高出2%但不超過4%

2.  當天最低點跟開盤價相比,沒有跌超過2%。

3。前三天漲幅不到4%

4。成交量超過20日均量兩成

5。當天收最高。

6。加權指數在其十日均線之上

這個股本用中小型有量的股票去回測,一年期及三年期的回測報告如下:

 

06010102

 

 

 

060103

從這個回測報告來看,在上述那六點當中,除了第四點及第五點之外,其他的四點一開盤我們大約就知道有那些股票符合條件,剩下的就是如何從這些符合條件的股票中去找到那些抗跌的,有量的中小型股,然後進場等看看會不會當天收最高,如果真的收上去了,那麼短線賺錢的機率就很高。

透過這個實證,我們可以 確認一件事,那就是市場知名短線大戶x氏兄弟這招:“拉開小高先前未大漲盤中抗跌中小型股”還真的是一個賺多 賠少的好生意。

私房版 台灣50的領先指標

台灣50是一個大家很熟悉的交易工具,因著這個指數所衍生出來的ETF及權證非常的多,這些商品佔每天的成交量非常可觀,顯示這個一個大家都經常拿來作為交易工具的標的。於是我試著想要設計一個自訂指標,用來預測台灣50的多空趨勢,試了幾個方法,沒想到最簡單的卻最有用,以下是我找到的方法。

這個方法的步驟如下:

1。找出台灣50的每一檔成份股(注意會隨時異動,故要隨時更新成分股的代號),然後計算其五日均線是否在20日均線之上。

2。如果是的話就加一分,如果不是的話就不加分。

3。計算五十檔的合計分數為多少分。

如下面的腳本來描述上述的步驟

array:T50[50](0);
t50[1]=GetSymbolField("1101.tw","收盤價");
t50[2]=GetSymbolField("1102.tw","收盤價");
t50[3]=GetSymbolField("1216.tw","收盤價");
t50[4]=GetSymbolField("1301.tw","收盤價");
t50[5]=GetSymbolField("1303.tw","收盤價");
t50[6]=GetSymbolField("1326.tw","收盤價");
t50[7]=GetSymbolField("1402.tw","收盤價");
t50[8]=GetSymbolField("2002.tw","收盤價");
t50[9]=GetSymbolField("2105.tw","收盤價");
t50[10]=GetSymbolField("2207.tw","收盤價");
t50[11]=GetSymbolField("2301.tw","收盤價");
t50[12]=GetSymbolField("2303.tw","收盤價");
t50[13]=GetSymbolField("2308.tw","收盤價");
t50[14]=GetSymbolField("2311.tw","收盤價");
t50[15]=GetSymbolField("2317.tw","收盤價");
t50[16]=GetSymbolField("2324.tw","收盤價");
t50[17]=GetSymbolField("2325.tw","收盤價");
t50[18]=GetSymbolField("2330.tw","收盤價");
t50[19]=GetSymbolField("2354.tw","收盤價");
t50[20]=GetSymbolField("2357.tw","收盤價");
t50[21]=GetSymbolField("2382.tw","收盤價");
t50[22]=GetSymbolField("2395.tw","收盤價");
t50[23]=GetSymbolField("2408.tw","收盤價");
t50[24]=GetSymbolField("2409.tw","收盤價");
t50[25]=GetSymbolField("2412.tw","收盤價");
t50[26]=GetSymbolField("2454.tw","收盤價");
t50[27]=GetSymbolField("2474.tw","收盤價");
t50[28]=GetSymbolField("2633.tw","收盤價");
t50[29]=GetSymbolField("2801.tw","收盤價");
t50[30]=GetSymbolField("2823.tw","收盤價");
t50[31]=GetSymbolField("2880.tw","收盤價");
t50[32]=GetSymbolField("2881.tw","收盤價");
t50[33]=GetSymbolField("2882.tw","收盤價");
t50[34]=GetSymbolField("2883.tw","收盤價");
t50[35]=GetSymbolField("2884.tw","收盤價");
t50[36]=GetSymbolField("2885.tw","收盤價");
t50[37]=GetSymbolField("2886.tw","收盤價");
t50[38]=GetSymbolField("2887.tw","收盤價");
t50[39]=GetSymbolField("2890.tw","收盤價");
t50[40]=GetSymbolField("2891.tw","收盤價");
t50[41]=GetSymbolField("2892.tw","收盤價");
t50[42]=GetSymbolField("2912.tw","收盤價");
t50[43]=GetSymbolField("3008.tw","收盤價");
t50[44]=GetSymbolField("3045.tw","收盤價");
t50[45]=GetSymbolField("3481.tw","收盤價");
t50[46]=GetSymbolField("4904.tw","收盤價");
t50[47]=GetSymbolField("4938.tw","收盤價");
t50[48]=GetSymbolField("5880.tw","收盤價");
t50[49]=GetSymbolField("6505.tw","收盤價");
t50[50]=GetSymbolField("9904.tw","收盤價");
 
var:count(0),i(0);
count=0;
for i=1 to 50
begin
if average(t50[i],5)>average(t50[i],20)
then count=count+1;
end;
plot1(count);
plot2(40);
plot3(10);

用這個腳本的2016/05/16台灣五十成分股

畫出來台灣五十與指標的對照圖如下:

051601

從這張圖我們可以很明顯的發現

1。這個指標是台灣50的領先指標。當這個指標從10以下回昇且迅速站上40,代表大部份台灣最重要的股票,都從空頭排列轉為多頭排列,如果這時候台灣50剛處於初昇段,那後市就值得期待

2。如果這個指標從40以上跌破40,而且一去不回,或者持續低於20,那就代表大部份的權值股正處於空排排列中,這對大盤可不是太好的徵兆。

3。如果在一個多頭市場,這個指標很難跌破40,相反的,空頭市場這條線很難突破20

051601

4.如果這個指標一直在25上下遊走,代表這個盤基本上是盤整的格局

 

以上是我的一個小小嚐試,腳本中用到的Getsymbolfield是用來在腳本中支援跨商品跨頻率的方法,大家可以把這個腳本拿去改成自己更私房更好用的領先指標,從指數成份股的多空表現來預測指數後市,這個方法我個人是覺得可行的。

 

xqlite banner

 

 

多空趨勢指標

我們看到很多的技術指標,它的計算基礎都建立在單支K棒開,高,低,收的相互關係上,甚至不少只用到收盤價。過於受限於電腦的運算能力,這樣的作法可以理解,現如今進入雲端運算時代,我們不妨用更週延的思維,來找出多空的角力痕跡,今天想用兩根K棒開,高,低,收合計八個價位的運算,來跟大家介紹不同思維的交易策略。

常常有人說,投資像推理,那麼交易的軌跡就像是推理所需要的跡證,一根K棒是四個點, 兩根K棒是八個點,從兩根K棒可以收集到的多空角力跡證比一根K棒要多很多。

我試著把兩根K棒可以拿來運算的數值整理了一下,分成八類,如下圖

k線衍生的力量

其中前四個是多空力道的綜合,後面四個分別代表多頭與空頭的力量

根據這樣的分類,我寫了一個自訂指標的腳本,計算每檔商品的多空力道差距及多頭與空頭各自力量的消長。

array:k[22](0);
if close<>0
then begin
//最近一日與前一日的多空力道總差額
k[1]=(open-open[1])/close;
k[2]=(high-high[1])/close;
k[3]=(low-low[1])/close;
k[4]=(close-close[1])/close;

//當日
k[6]=(high-close)/close;
k[7]=(high-open)/close;
k[8]=(open-low)/close;
k[9]=(close-open)/close;
k[10]=(close-low)/close;
k[11]=(open-high[1])/close;
k[12]=(open-low[1])/close;
k[13]=(open-close[1])/close;
k[14]=(high-open[1])/close;
k[15]=(high-low[1])/close;
k[16]=(high-close[1])/close;
k[17]=(low-open[1])/close;
k[18]=(low-high[1])/close;
k[19]=(low-close[1])/close;
k[20]=(close-open[1])/close;
k[21]=(close-high[1])/close;
k[22]=(close-low[1])/close;
end;

array: v1[8](0);
v1[1]=k[1]+k[11]+k[12]+k[13];//隔日開盤多空總力道
v1[2]=k[1]+k[2]+k[3]+k[4];//隔日多空總力道
v1[3]=k[20]+k[21]+k[22];//隔日收盤多空結果
v1[4]=k[9]+k[10]-k[6];//當日收盤多空結果
v1[5]=k[14]+k[15]+k[16];//多頭最大力量
v1[6]=(k[17]+k[18]+k[19])*-1;//空頭最大力量
v1[7]=k[7]+k[9]+k[10];//當日多頭最大力量
v1[8]=k[6]+k[8]-k[10];//當日空頭最大力量

value1=v1[1]+v1[2]+v1[3]+v1[4];
value2=v1[5]+v1[7];
value3=v1[6]+v1[8];
plot1(average(value1,5),"多空淨力");
plot2(average(value2,5),"多頭總力");
plot3(average(value3,5),"空頭總力");

 

這個腳本可以同時衡量多空力道的差額及多頭與空頭各自的力量

用在加權指數上可以畫出的圖形就如下圖

051301

我們可以從這張圖上看到幾個可以形成交易決策的原則

1.當多空淨力在 0以上是基本上是多頭市場,0以下是空頭市場。

2.當多頭總力與空頭總力糾結時是盤整格局

3.當多頭總力與空頭總力的差距愈來愈大時代表一個多頭或空頭的趨勢被確認

4.多空淨力差距過大時代表市場一面倒,屬於超買或超賣的情況,短線有拉回或反彈的機會

 

根據這些跡證,我們就可以訂出一些更精準的交易策略

 

 

xqlite banner

 

 

 

 

把股性拿來作為過濾條件

我們在設定個股的買進策略時,有時候會踫到假的訊號,例如震盪型指標踫到盤整時,就容易出現假訊號,就算嚴格執行停損,還是會因為過度交易,浪費交易成本而必影響獲利,今天來跟大家考論一個概念,如果我在寫一個股性轉變的濾網,當策略出現買進訊號時,透過這個濾網來觀察股性是否真的有明顯改變,只有真的有明顯改變時才觸發訊號,這麼做應該可以避免過度交易的情況

我曾經跟大家分享過我有十二個衡量股性的標準

衡量股性的指標

我試著用計分卡的方式寫了一個衡量股性的腳本如下:

input:day(20);
input:ratio(10);
var:count(0),x(0);
value1=GetField("總成交次數","D");
value2=average(value1,day);
value3=GetField("強弱指標");
value5=GetField("外盤均量");
value6=average(value5,day);
value7=GetField("主動買力");
value8=average(value7,day);
value9=GetField("開盤委買");
value10=average(value9,day);
value11=GetField("資金流向");
value13=countif(value3>1,day);
value14=average(value13,day);//比大盤強天數
value16=GetField("法人買張");

count=0;
if value1>value2*(1+ratio/100)
then count=count+1;
if value13>value14*(1+ratio/100)//比大盤強的天數
then count=count+1;
if value5>value6*(1+ratio/100)
then count=count+1;
if value7>value8*(1+ratio/100)
then count=count+1;
if value9>value10*(1+ratio/100)
then count=count+1;
if truerange> average(truerange,20)//真實波動區間
then count=count+1;
if truerange<>0
then begin
if close<=open
then
value15=(close-low)/truerange*100
else
value15=(open-low)/truerange*100;//計算承接的力道
end;
if value15>average(value15,day)*(1+ratio/100)
then count=count+1;
if volume<>0
then value17=value16/volume*100;//法人買張佔成交量比例

if value17>average(value17,10)*(1+ratio/100)
then count=count+1;

if value11>average(value11,10)*(1+ratio/100)
then count=count+1;
x=0;
value18=summationif(close>=close[1]*1.02,x,5);
if value18>=2 
then count=count+1;//N日來漲幅較大的天數



value19=GetField("融資買進張數");
value20=GetField("融券買進張數");
value21=(value19+value20);
value22=average(value21,day);
if value21<value22*0.9 //散戶作多指標
then count=count+1;

plot1(average(count,3),"股性綜合分數指標");
plot2(average(count,day),"移動平均");

從以下幾檔這個月逆勢上漲的股票,我們可以發現,股票有大行情時,股性會有明顯的變化

051201

 

051202

 

各位不妨以這個例子為基礎,發展各自不同的股性過濾腳本,這樣就可以減少過度交易及盤整時出現假訊號的機率

 

 

 

xqlite banner

 

 

高現金股利低本益比且本業仍不差

網友想要挑一些急跌後可以留意的股票,我設了三個條件: 高現金股利,低本益比,本益穩定

寫了一個選股腳本如下:

input:peratio(17,"本益比上限倍數");
input:ratio(60,"現金股利佔股利之比重下限");
input:epsl(2,"預估本業EPS下限");
input:rate1(5,"累計營收成長率下限");
 
value1=GetField("累計營收年增率","M");//單位%
value2=GetField("現金股利佔股利比重","Y");
value3=GetField("營業利益","Q");//單位百萬;
value4=GetField("最新股本");//單位億;
value5=summation(value3,4)/(value4*10);//每股預估EPS

if
value1>rate1//本業持續成長
and 
value2>ratio//主要以現金股利為主
and
value5>EPSl//每股推估本業獲利高
and 
close/value5<peratio//本益比低
then ret=1;

 

我用比較嚴格的條件

1。本益比低於十

2。現金股利佔八成以上

3。預估eps大於五

4。累計營收成長率超過兩位數

 

挑出來的股票如下:

050902

 

 

 

xqlite banner

 

sector trade(類股輪動操作法)初體驗

類股輪動操作法的邏輯很簡單,找到現在表現最強的產業,投資其龍頭股。以前這種操作很難把它自動化,更別說去回溯測試這個策略的勝率及績效了,我試著把它程式化,算是拋磚引玉,希望各位可以發展出更強大的類股輪動操作策略。

 

我的演算過程分成兩部份,一部份是找出走勢比加權指數強的產業指數,另一部份則是找出各細產業中股價最活潑的個股

在第一部份,我的作法還是計算各產業指數與大盤相除後的BB值,這個值突破BB值上限就是表現異常強勢,以塑化原料為例就像下面這張圖

050601

 

第二部份的作法則是先找出貝他最高的股票

我訂了兩個條件

1.貝他值大於1

2.月成交量平均大於5000張

結果選出了433檔股票。

接下來我就開始把這433檔股票,拿去跑下面我寫的這個腳本

這個腳本的概念就是先把這433檔的相關細產業指數拿去跟大盤比強度,強度異常時,就觸發該產業在這433檔中所屬的股票。

我從這433檔股票中,挑出18檔股票,這些股票分別是其所屬產業中的龍頭股,然後請了公司的高手高手高高手寫了以下的指標

input: Length(20); SetInputName(1, "布林通道天數");
input: BandRange(2);SetInputName(2, "上下寬度");
input: MALength(10);SetInputName(3, "MA天期");
array:
ValueArray[18](0),
ratioarray[18](0),
uparray[18](0),
dnarray[18](0);
var:x(0);
var:si(0);// 商品所在的產業
if symbol="1101.TW" then si=1;
if symbol="1305.TW" then si=2;
if symbol="1452.TW" then si=3;
if symbol="1536.TW" then si=4;
if symbol="1460.TW" then si=5;
if symbol="1476.TW" then si=6;
if symbol="6269.TW" then si=7;
if symbol="2031.TW" then si=8;
if symbol="2014.TW" then si=9;
if symbol="2393.TW" then si=10;
if symbol="2615.TW" then si=11;
if symbol="2409.TW" then si=12;
if symbol="2882.TW" then si=13;
if symbol="6005.TW" then si=14;
if symbol="2606.TW" then si=15;
if symbol="3044.TW" then si=16;
if symbol="6244.TW" then si=17;
if symbol="9914.TW" then si=18;
if si = 0 then return;
valuearray[1]=GetSymbolField("I011010.TW","收盤價");//水泥
valuearray[2]=GetSymbolField("I013010.TW","收盤價");//塑化原料
valuearray[3]=GetSymbolField("I014010.TW","收盤價");//加工絲
valuearray[4]=GetSymbolField("I022020.TW","收盤價");//汽車零組件
valuearray[5]=GetSymbolField("I014040.TW","收盤價");//織布
valuearray[6]=GetSymbolField("I014030.TW","收盤價");//成衣
valuearray[7]=GetSymbolField("I023320.TW","收盤價");//軟板
valuearray[8]=GetSymbolField("I020010.TW","收盤價");//不銹鋼
valuearray[9]=GetSymbolField("I020020.TW","收盤價");//平板鋼
valuearray[10]=GetSymbolField("I023060.TW","收盤價");//LED
valuearray[11]=GetSymbolField("I026020.TW","收盤價");//貨櫃航運
valuearray[12]=GetSymbolField("I023080.TW","收盤價");//面板
valuearray[13]=GetSymbolField("I028010.TW","收盤價");//金控
valuearray[14]=GetSymbolField("I028030.TW","收盤價");//證券
valuearray[15]=GetSymbolField("I026030.TW","收盤價");//散裝航運
valuearray[16]=GetSymbolField("I023230.TW","收盤價");//印刷電路板
valuearray[17]=GetSymbolField("I023130.TW","收盤價");//太陽能
valuearray[18]=GetSymbolField("I099040.TW","收盤價");//自行車

value1=GetSymbolField("TSE.TW","收盤價");
ratioarray[si]=valuearray[si]/value1;
uparray[si]=bollingerband(ratioarray[si],length,bandrange);
dnarray[si]=bollingerband(ratioarray[si],length,-1*bandrange);
plot1(uparray[si], "UB");
plot2(dnarray[si], "DB");
plot3(ratioarray[si], "Ratio");
if ratioarray[si] cross over uparray[si] then
plot4(1, "穿越")
else
noplot(4);

這個指標如果畫成圖就像下圖

050602

 

這個腳本把plot4改成ret=1就成了警示腳本

下圖就是過去三年的回測報告

050603

 

績效還真的不錯。

透過這個腳本,未來這十八檔股票所屬的細產業如果比大盤表現異常突出,系統會針對該檔股票觸發信號

 

以上就是所謂sector trade的一種基本類型,希望可以激發大家更多的靈感

 

xqlite banner

由市場老手的交易秘訣所衍生出來的交易策略(一)

這陣子盤這麼差,只作多不作空的人日子難過,想起一位多空都作的老業內,他的作法是多頭時挑剛開始冒出來比大盤強的作多,空頭時挑剛開始比大盤弱的作空,我把這樣的思維寫成交易策略,回測的結果不差,提供給大家,以此為基礎,進一步優化成更佳的交易策略。

我的思維如下

1.把加權指數五日MA在20日MA均線之上視為多頭,反之則是空頭。

2.我把股價當分子,加權指數當分母,然後拿這個值去算BBand,一旦這個值突破BBand的上沿,代表這檔股票跟大盤的相對強度已經出現跟以往正常的區間不同。

3.這檔股票短線沒有急漲的太過頭

符合以上三個條件的腳本寫法如下:

value1=GetSymbolField("TSE.TW","收盤價")/close;
if value1<>0
then value1=1/value1;

input: Length(20); SetInputName(1, "布林通道天數");
input: BandRange(2);SetInputName(2, "上下寬度");

variable: up(0), down(0), mid(0);

up = bollingerband(value1, Length, BandRange);

if value1 cross over up 
and average(GetSymbolField("TSE.TW","收盤價"),5)>
average(GetSymbolField("TSE.TW","收盤價"),20)
and close<close[2]*1.07
then ret=1;

我拿這個腳本來跑今年以來有量的中小型股,回測報告如下 050501 這個策略的核心精神就是大盤多頭時找比大盤還強的作多,大盤空頭時找比大盤還弱的作空,我們以楠梓電這檔個股為例,請看下圖 050502 從這張圖也可以看到,當BBand上下兩條線縮的很近時一旦數值突破上限或下限時,訊號的可信度更高 xqlite banner

多空交易(long-short trading)

在金融情勢詭譎多變的時候,我們很難判斷接下來的股市會怎麼走,但如果我們很清楚知道,在同一行業裡的某A股票,基本面長期表現會比某B股票好,這時候我們就可以作多A股票,放空B股票,不管大盤漲還跌,都可以靠這樣的操作賺到錢,這樣的操作就稱之為多空交易(long-short trading)

舉個例子,大家都知道台積電跟聯電長期以來競爭力差很大,但以往聯電的股性有時候會突然活潑了起來,短期不見得表現比台積電差,這時候我們可以把兩家公司的總市值相除,然後再取兩個長短天期不同的移動平均線,這樣我們就可以觀察兩家公司總市值的長期趨勢變化,也可以透過長短天期移動平均線的黃金交叉及死亡交叉,來決定多空交易的進場點及平倉時點。

根據上述的精神,我寫了一個畫圖的腳本如下:

input:period1(4,"短期別");
input:period2(12,"長期別");
setbackbar(12);
settotalbar(600);
value1=GetSymbolField("2303.tw","總市值");
value2=GetField("總市值");
value3=value1/value2;
value4=average(value3,period1);
value5=average(value3,period2);
plot1(value4);
plot2(value5);

使用這個腳本,用週線的頻率,可以畫出下面這張圖

050402從這張圖,我們就可以很清楚的看到如果我們在2014年八月四日那一週開始作多台積電,放空聯電,到目前為止,都還沒有出現平倉的訊號,而到目前為止的投資報酬率是三成左右,如果我們用個股期貨來操作,報酬率就會因為槓桿而變得很驚人。

我想大家一定會說我在看圖說故事,台積電與聯電的例子大家都太瞭解了,應該要提供一些新的多空交易標的。

在這個部落格,我一貫不報明牌,但我很喜歡分享我的交易經驗及思考的方式,所以,我提出幾個多空交易的配對思考方向,供大家作參考

方向一: 尋找因為某事件或議題,造成一個長期趨勢,這時就可以把因此趨勢而會受益與受害的公司作配對

這個例子最明顯的就是統一跟味全

050403

另外像是台幣升值時,作多食品股,作空外銷電子股

方向二,當某原料長期上漲時,作多生產該原物料的上游,作空下游,相反的,某原料價格長期下跌時,作多下游,作空上游,不過必須留意的是下游是否有高價庫存待消化,如果有,那轉折點會在原料下跌趨勢一段時間之後

方向三,同一產業競爭力有明顯差異的兩家公司,前面提到的台積電與聯電是一個明顯的例子,以前友達跟華映也是很好的多空交易標的,台郡跟嘉聯益是另一個明顯的例子

050404

方向四  爭奪特定有限市場(如國內市場)而明顯分出勝負時

這種最有名的就是國泰金與新光金

050405

 

 

隨著個股期貨以及借券等措施的開放,也隨著XS即將支援跨商品功能,我們愈來愈有機會透過XS尋找及實踐各種不同類型的多空交易。如此一來,我們可以專心研究同產業或特定議題趨勢下的受益與受害公司,並且透過一多一空的方式,進行多空交易,如此一來,我們就不必理會國際金融市場對於台股的多空衝擊,只要專注在企業競爭力的研究上。

 

 

 

xqlite banner