建構交易策略之”反常態”

By | 2016-11-21

我師父最常掛在嘴邊的一句話就是”反常必有妖”,所以他最愛教我們去研究那些利空不跌的,毛利率暴增的,營收在淡季創高的股票。我自己開始學會用程式語法建構交易策略時,我發現這種”反常態”的哲學,往往能找到不錯的交易策略,今天要跟大家介紹的,就是各項指標脫離一季以來的平均值很遠時,所建構出來的交易策略。

要反常態,第一件事情就是先建立”常態”,我應用法人買張,強弱指標,外盤均量,主動買力及開盤委買張數這五個xs內建的欄位,取66日的移動平均,來代表一檔股票的常態,如果有一天,這五個數據,有超過四個以上比66日移動平均值高出三成以上,那就算是”非常態”,我回測過去兩年有量的中小型股後發現,當”非常態”出現時,如果波段漲幅不大,那後市有短多的空間,特別是在多頭市場,這樣的現象就更明顯。

我把上面的概念寫成以下的腳本

if GetSymbolField("tse.tw","收盤價","D")
>average(GetSymbolField("tse.tw","收盤價","D"),10)
then begin

input:day(66,"移動平均天數");
input:ratio(30,"超出均值比率");
variable:count(0);

value1=GetField("法人買張");
value2=average(value1,day);
value3=GetField("強弱指標");
value4=average(value3,day);
value5=GetField("外盤均量");
value6=average(value5,day);
value7=GetField("主動買力");
value8=average(value7,day);
value9=GetField("開盤委買");
value10=average(value9,day);

count=0;
if value1>=value2*(1+ratio/100)
then count=count+1;
if value3>=value4*(1+ratio/100)
then count=count+1;
if value5>=value6*(1+ratio/100)
then count=count+1;
if value7>=value8*(1+ratio/100)
then count=count+1;
if value9=value10*(1+ratio/100)
then count=count+1;

if count>=4 and close<lowest(close,day)*1.1
then ret=1;
end;

用有量的中小型股去回測過去兩年的數據,停損停利都設5%

2016112101

回測的結果如下:

2-016112001

在過去兩年裡,143次的交易機會裡,獲利的次數達到95次,虧錢的有48次,差不多是進場三次有兩次賺錢的比例。這樣的比例應該是可以接受的了。

這種先建構常態,再尋找反常態的技巧,是建構交易策略的方法之一,各位不妨以此為例子,設定自己覺得最能代表常態的指標,再來尋找反常態時的股票。