尋找大波段底部的特徵

By | 2017-04-19

昨天PO了期貨大神黃毅雄先生的訪談內容,其中提到黃先生的操作手法是先辦識長期反轉的頭部及底部,然後隨著市場的波動,逐漸接高部位,完整的賺到一個大波段的錢。之前看到這篇訪談內容後,我就試著透過程式,想寫一個大波段底部的交易策略,後來陸陸續續寫了一些程式來幫助我完成這件事,今天我想來跟大家介紹這個研究的過程。

找波段底部,我用的方法是去找過去幾年,年漲幅超過五成的股票,然後去尋找他們的共同特徵,再把這些特徵寫成腳本去回測,回測效果好的就留著,效果不好的就放掉,找到夠多的特徵之後,再把這些特徵融合成一個辨識底的腳本。

為了找過去幾年曾經漲超過五成以上的股票,我寫了以下的選股腳本

input:startyear("2016","請輸入計算年份");
var:y1("0"),y2("0"),startdate(0),enddate(0);
y1=startyear+"/01/01";
y2=startyear+"/12/31";
startdate=stringtodate(y1);
enddate=stringtodate(y2);
value1=getbaroffset(startdate);
value2=getbaroffset(enddate);
value5=GetField("最新股本","D");
if value1<>0
then 
value3=(close[value2]-close[value1])/close[value1]*100;
if close[value1]>10
//濾掉雞蛋水餃股
and value3>50
//年度漲幅超過五成
and value5[value1]<=value5[value2]
//沒有減資,過濾因減資而造成的股價上漲
then ret=1;
outputfield(1,value3,0,"漲跌幅");

透過這個腳本,我找出過去五年漲幅曾經超過五成的股票,然後一檔一檔去看這些股票當年起漲前的各種數據的變化。黃先生的主張是不要等突破頸線才進去,要覺得底部成形的機會很高時就小量進去,進去後再根據每天的價格變化,決定加減碼,等到趨勢確立時,部位已經基本建好,所以我透過日線,研究這些大漲過的股票的底部區,列了它們的底部共同特徵如下

1.中長紅的K棒變多

2.很久沒有破底

3.上漲時量有出來

4.出量後拉回時量縮的很小

5.一底高過一底

6.拉回後上攻的力道都很強

7.第一波的攻擊會又猛又急且量放大

8.震盪幅度比以往明顯的變大 特別是中長紅的比例遠高於中長黑

9.出現下影線的次數及幅度變多

10.收當日最高的情況變多

我寫了一個腳本試著描繪出這樣的特徵

input:period(200);
variable: ld(0),hd(0),ldb(0),hdb(0),count(0),x1(0);
count=0;
ld=lowest(low,period);
ldb=lowestbar(low,period);
hd=highest(high,period);
hdb=highestbar(high,period);
x1=GetField("總市值","D");//單位:億
if hdb>ldb and hd>ld*1.4 and ld>=ld[1] and average(close,5)>average(close,20)
and x1>20
//股價大跌後
then begin
value1=countif((close-open)/open>1.5,ldb);
//自最低點以來的中長紅K棒數
if value1>=ldb/5
then count=count+1;
value2=summationif(close>close[1],volume,ldb);
//自最低點以來的上漲量
value3=summationif(close<close[1],volume,ldb);
//自最低點以來的下跌量
if value2>2*value3 then count=count+1;
value4=nthlowestbar(2,low,ldb);
//第二個低點的k棒位置
value5=nthlowestbar(3,low,ldb);
//第三個低點的K棒位置
value6=nthlowestbar(4,low,ldb);
//第四個低點的K棒位置
if value4>value5 and value5>value6
then count=count+1;
value7=countif(absvalue(close[1]/close-1)/close[1]*100<1 and close<close[1],ldb);
//自低點以來的小黑棒K棒數
if value7>0.5*countif(close<close[1],ldb)
then count=count+1;
//小黑k棒佔下跌k棒超過一半

value8=countif(close>low*1.01,ldb);
//自低點以來的長下影線天數
if value8 >=ldb/5
then count=count+1;

value9=countif(close=high,ldb);
//自低點以來收最高的天數
if value9>=ldb/5
then count=count+1;

if ldb>=5
then count=count+1;
end;

if count crosses over 5 then ret=1;

在實測的過程中,發現找到底部跟只是下跌過程中的反彈的機率幾乎一半一半,這跟黃先生的說法很接近,找底部真的是一種一半一半的賭注,但如果運用停損停利點的設計,創20天新低就停損,不然就一直持有200 天,然後過濾掉那些市值不到20億的股票,回測過去七年的總報酬率非常高

2017041901

從這張回測圖來看,用這個腳本在大空頭市場反彈時會出現假訊號,然後當市場之後急殺時多單就會被停損掉,但如果沒有出現這樣的情況,正常的情況會是小賠大賺,累積下來還真能賺到錢。

我一直都在思考如何避開大盤反彈破底的陷井,目前還屬於此題無解,所以還沒有真的把這個策略拿來實戰,只能在此跟大家報告追隨大師思想後想把它程式化的努力過程,各位也可以根據這樣的思路來發展出頭部底部的辨識程式,我完全同意黃大師所分享的,這樣的交易策略,真的是專職操作者最能持盈保泰,永保安康的方式,剩下的是尋找頭部及底部方法,以及隨勢加減碼的資金控管功力了。