坊間主要是把程式交易用在期指當沖上,我個人對這個領域非常不熟悉,我的期貨操作方式,主要都是在在波段出現作多或放空訊號時,進場買進價外的PUT或CALL,看錯了輸的不多,看對了有時會有意外的驚喜,這個做法的壞處是,沒有天天有行動,有時好久才下一次,好處是我累積了不少波段操作指數的交易策略,其中有一些應用在基金的波段操作上,也有不錯的效果,今天要跟大家介紹的Q指標,就是這樣的一個例子。
Q 指標是一個很單純的指標,我們先來看它的計算腳本
input:t1(10,"計算累積價格變動的bar數"); input:t2(5,"計算價格累積變化量移動平均的期別"); input:t3(20,"計算雜訊的移動平均期別"); value1=close-close[1];//價格變化 value2=summation(value1,t1);//累積價格變化 value3=average(value2,t2); value4=absvalue(value2-value3);//雜訊 value5=average(value4,t3);//把雜訊移動平均 variable:Qindicator(0); if value5=0 then Qindicator=0 else Qindicator=value3/value5*5; plot1(Qindicator,"趨勢值");
這指標的計算步驟是
1。先算出每天的收盤價跟前一天的差值。
2。把近十日的差值加總起來。
3。把加總的數字取五日移動平均值。
4。然後算出加總數字減去平均值的絕對值
5。再把這每一天的絕對值取20日移動平均,這代表價格波動跟趨勢間的差,差愈大代表雜訊愈多。
6。最後計算累積價格變化的五日平均跟雜訊之間的比率。這個數字愈大,代表指數的方向愈明確,雜訊愈小。
這樣的運算結果如果跟指數對照來看,會如下圖
我們可以發現,當Q指標上昇的角度很陡時,就代表指數展開了新的多頭走勢。
於是可以運用這樣的概念,開始寫腳本
針對台指,我寫的腳本如下:
input:t1(10,"計算累積價格變動的bar數"); input:t2(5,"計算價格累積變化量移動平均的期別"); input:t3(20,"計算雜訊的移動平均期別"); value1=close-close[1];//價格變化 value2=summation(value1,t1);//累積價格變化 value3=average(value2,t2);//累積價格變化的移動平均 value4=absvalue(value2-value3);//雜訊 value5=average(value4,t3);//把雜訊移動平均 variable:Qindicator(0); if value5=0 then Qindicator=0 else Qindicator=value3/value5*5; if linearregangle(qindicator,5)>30 and barslast(linearregangle(qindicator,5)>45)[1]>10 then ret=1;
在這個腳本裡,我用linearregangle這個函數,在Q指標的上昇仰角超過30度時,觸發買進訊號。
用這個腳本去跑加權指數回測,出場我設為進場後40天,回測報告如下
在過去五年裡,一共出現23個交易訊號,其中只有5個輸錢,勝率達到78%。
這策略用在台期指上的優點是很精準的找到進場點,缺點是出現交易的訊號並不多,平均一年不到五次。
我把這個腳本拿來用在基金投資上,把腳本稍稍改了一下,主要是把條件設的苛一點,仰角要陡一點,然後只有在市場多頭時才進場
input:t1(10,"計算累積價格變動的bar數"); input:t2(5,"計算價格累積變化量移動平均的期別"); input:t3(20,"計算雜訊的移動平均期別"); value1=close-close[1];//價格變化 value2=summation(value1,t1);//累積價格變化 value3=average(value2,t2);//累積價格變化的移動平均 value4=absvalue(value2-value3);//雜訊 value5=average(value4,t3);//把雜訊移動平均 variable:Qindicator(0); if value5=0 then Qindicator=0 else Qindicator=value3/value5*5; if linearregangle(qindicator,5)>45 and barslast(linearregangle(qindicator,5)>45)[1]>20 and GetSymbolField("tse.tw","收盤價","W") >average(GetSymbolField("tse.tw","收盤價","W"),13) then ret=1;
,回測的結果如下
基本上就算經歷了2015年的空頭市場,還是可以維持三戰兩勝的成績。
這種用單純的兩日收盤差值來計算的指標,有其在應用上的優秀之處與侷限,特別是對那種非經濟性因素所帶來的價格扭曲是完全沒有抵抗性的,使用這種指標時,大家要心裡有數,局勢不清,消息面多空紛呈時,就別用這種指標來當 唯一根據了。