昨天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億的股票,回測過去七年的總報酬率非常高
從這張回測圖來看,用這個腳本在大空頭市場反彈時會出現假訊號,然後當市場之後急殺時多單就會被停損掉,但如果沒有出現這樣的情況,正常的情況會是小賠大賺,累積下來還真能賺到錢。
我一直都在思考如何避開大盤反彈破底的陷井,目前還屬於此題無解,所以還沒有真的把這個策略拿來實戰,只能在此跟大家報告追隨大師思想後想把它程式化的努力過程,各位也可以根據這樣的思路來發展出頭部底部的辨識程式,我完全同意黃大師所分享的,這樣的交易策略,真的是專職操作者最能持盈保泰,永保安康的方式,剩下的是尋找頭部及底部方法,以及隨勢加減碼的資金控管功力了。