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

By | 2016-05-06

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

 

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

在第一部份,我的作法還是計算各產業指數與大盤相除後的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的一種基本類型,希望可以激發大家更多的靈感