昨天有網友希望我寫外盤量相關的交易策略,我這個標準差魔人第一時間想到的就是用bbnad,試寫了一下,效果還可以,敬呈批閱。
我的思考邏輯是
1.拿外盤量這個欄位來計算(因為用getfield語法,這欄位只support日線以上,所以用日線)
2.計算外盤量佔總量的比重
3.因為一天的暴量有可能是一日行情,所以外盤量比重取三日移動平均
4.拿外盤量比重三日平均算bband
5.如果bbandwidth從底部翻揚,代表從平凡要轉向絢爛
6.如果外般量比重三日平均突破bband上限,代表這個轉向是往多頭轉
根據上述的邏輯,我寫了以下的指標,
var:bv(0),bva(0); if volume<>0 then bv=GetField("外盤量")/volume*100; bva=average(bv,3); input:length(20); variable:up1(0),down1(0),mid1(0),bbandwidth(0); up1 = bollingerband(bva, Length, 1); down1 = bollingerband(bva, Length, -1 ); mid1 = (up1 + down1) / 2; bbandwidth = 100 * (up1 - down1) / mid1; plot1(up1); plot2(down1); plot3(bva); plot4(bbandwidth);
我用郭董最近講的很豪邁的2317鴻海來作例子
各位可以發現,在郭董說話的前一陣子,外盤買進佔成交量的比重就出現我上面說到的多頭訊號
1.bbandwidth 向上翻揚
2.外盤量三日均線突破bband上限
我就把這個指標改寫成交易策略如下:
var:bv(0),bva(0); if volume<>0 then bv=GetField("外盤量")/volume*100; bva=average(bv,3); input:length(20); variable:up1(0),down1(0),mid1(0),bbandwidth(0); up1 = bollingerband(bva, Length, 1); down1 = bollingerband(bva, Length, -1 ); mid1 = (up1 + down1) / 2; bbandwidth = 100 * (up1 - down1) / mid1; if bbandwidth cross over 20 and bva cross over up1 then ret=1;
拿這策略拿有量的中小型股去回測半年,一年,兩年及三年,回測報告分別如下:
當然這個策略還可以有進一步優化的空間,但初步的結果,應該算是一個可以拿來好好運用的方法。