一個交易策略的熟成

By | 2016-05-31

一個會賺錢的交易策略,就像是一隻會下金蛋的母雞,關鍵在於這樣的母雞到底是怎麼養出來的? 我舉一個大家都不陌生的市場規則為例,我們一起來探討一個好策略熟成的過程。

我們常聽人家說,連漲三天散戶不請自來,於是我就試著寫了一個腳本,在這個腳本裡,要符合的條件有幾個

1.連三天都比前一天上漲

2.資金流向在增加

3.三天都比大盤強

4.近三天漲幅大於5但小於12

我寫的腳本如下:

if close[3]<>0
then value1=(close-close[3])/close[3]*100
else
value1=0;
value2=GetField("資金流向");
value3=GetField("強弱指標","D");

if close>close[1]
and close[1]>close[2]
and close[2]>close[3]
and value1>5
and value1<12
and value2[1]>value2[2]
and value2[2]>value2[3]
and trueall(value3[1]>0,3)
then ret=1;

我讓這腳本跑所有的普通股股票,近六個月的回測報告如下:

053004

勝率不高,顯然老市場的話也不能盡信。

我仔細去看那些虧錢的交易,感覺大多數都是大股票,畢竟大股票能連漲三天也不容易,後市隨波逐流的機率頗大,所以我就不跑那些大型股,改用那些股本比較小的股票去跑,但又怕如果成交量不大容易受特定人士左右,所以我就用選股法設了兩個條件,找出了170檔有量的中小型股,用同樣的腳本跑最近六個月,回測報告如下:

053005

 

雖然勝率沒有超過五成,但總報酬率是54.7%,顯然對於這些有量的中小型股來說,連漲三天散戶不請自來這句話,有一定的可信度。

然後我們再去檢視這六個月來的績效圖,我們發現,虧損的兩大段,一段是去年的12/08到今年的01/22,另一段是今年的04/19到05/19

對照大盤,這兩段都是大盤陷入主跌段的時候

053006

為了避開這些大盤不佳的時候,所以我就在原來的腳本之前,加上兩個條件

1.加權指數要大於十日均線

2.加權指數五日均線大於二十日均線

if GetSymbolField("otc.tw","收盤價","D")
>=average(GetSymbolField("otc.tw","收盤價","D"),10)
and 
average(GetSymbolField("otc.tw","收盤價","D"),5)
>=average(GetSymbolField("otc.tw","收盤價","D"),10)
then begin

然後底下就是加了這個條件的回測報告

053007

加了這兩個條件之後,總報酬變大了,最大連續虧損也沒有那麼慘烈了,但勝率只有46%還是不優,我又回頭去看那些讓我輸錢的交易,結果發現有一些是這三根K棒雖然一天比一天上漲,但如果其中有一根以上留長上影線時,往往氣勢就弱掉了,所以我再加上收盤價不低於最高價1.5%的條件,然後再重新回測,報告如下

053008

雖然總報酬少了一點,但勝率站上五成,且最大連續虧損低於三成了

於是我就把這個策略拿去跑三年的回測

結果比最近六個月要差很多

053009

原因在於2014年的04/10到2015年的06/04持續在虧損,回頭去看那時候的走勢,指數雖然在高檔還撐了一陣子,但大都是權值股在表現,中小型股早就翻空了。

所以我就把tse.tw改成otc.tw,回測的結果如下: 053010

比用加權指數當benchmark要好很多

如果是回測最近六個月,其數字更非一開始策略所能比的

053011

底下就是最後的策略腳本

if GetSymbolField("otc.tw","收盤價","D")
>=average(GetSymbolField("otc.tw","收盤價","D"),10)
and 
average(GetSymbolField("otc.tw","收盤價","D"),5)
>=average(GetSymbolField("otc.tw","收盤價","D"),10)
then begin

if close[3]<>0
then value1=(close-close[3])/close[3]*100
else
value1=0;
value2=GetField("資金流向");
value3=GetField("強弱指標","D");

if close>close[1]
and close[1]>close[2]
and close[2]>close[3]
and value1>5
and value1<12
and value2[1]>value2[2]
and value2[2]>value2[3]
and trueall(value3[1]>0,3)
and trueall(close*1.015>high,3)
then ret=1;
end;

 

從上面這個例子,各位可以發現,在建構股票投資的交易策略時,我們必須考慮到天時地利及人和,

天時就是大盤的走勢

地利就是交易的邏輯要符合當時的潮流

人和就是拿來跑策略的標的要符合策略的屬性

我們從連漲三天散戶不請自來這句市場傳說,透過上述的不斷調整,最終也得出一個可以拿來讓市場考驗的交易策略,這中間就是必須經過天時,地利及人和三大關卡,各位在發展自己私房交易策略時,也可以試著從突破這三大關卡來試試看