檢查表在程式交易上的呈現方式

By | 2016-04-20

檢查表(check list)是一個被專業人士大量使用的工具,外科醫師用它來檢查手術前的準備工作,飛行員用它來完成起飛前的檢查,我試著把它的精神,透過語法,應用在投資操作上。檢查表是有機變動的,隨著投資經驗的累積,我們會更清楚地列出進場前要檢查的項目,這些項目,就是我們悠遊股海幾經風浪而不翻船的終極武器。

 

關於檢查表的概念及用法,天下出過一本書: 檢查表:不犯錯的秘密武器

042001

對檢查表的精神及實踐方法有興趣的朋友可以研究一下,我個人運用檢查表這個工具在投資上,已經有一段時間了,因為過往工作經驗的關係,我每天都會收到來自不同來源的明牌,有的是我以前的同事,有的是我以前認識的同業,有的是我收到的研究報告,甚至有些是我在網路社群裡收到的訊息,每次收到明牌,我都會先透過下方這個簡單的檢查表,檢查一遍,只有通過這樣檢查的股票,我才會列入觀察名單。

check list

這個檢查表其實並不複雜,其中的精神有幾點

1.股價不能太貴,我用PE及PB來衡量

2. 籌碼是良性而不是惡性,主要是看法人有沒有在賣以及籌碼是集中還是發散

3.技術面不能太醜。量能要溫和放大,均線多頭排列,這樣技術派的才會願意進來共襄盛舉

4.避開獲利了結賣壓。 所以短線漲幅不能太大

5.開始出現追價買盤。 最近一天要夠強。

 

根據這樣的想法,我把check list的精神,轉換成程式碼,由於check list的意義在於每一個項目都要符合,所以我很簡單地用and來串連每一個條件式,下面就是上述檢查表的對應程式碼

//先準備需要被拿來運算的資料
value1=GetField("法人買賣超張數","D");
value2=GetField("佔大盤成交量比","D");
value4=GetField("董監持股佔股本比例","D");
value5=GetField("外資持股比例","D");
value6=GetField("買家數","D");
value7=GetField("賣家數","D");
value8=GetField("股價淨值比","D");
value9=GetField("本益比","D");
//設計檢查表的規則
if average(value2,5)>average(value2,10)//成交量溫和放大
and average(value1,3)>0 //法人沒有站在賣方
and value4+value4>30 //籌碼集中
and average(value7,3)>average(value6,3)*1.03//籌碼是集中不是發散
and average(close,5) >average(close,10)//均線多頭排列
and close>close[1]*1.02//最近一天夠強
and close[5]< close*1.15//短期漲幅不算大
and value8<3//PB沒有太高
and value9<20//本益比不致於不合理

then ret=1;

 

在撰寫檢查表這類型的程式時,基本上有兩個步驟

1.先用getfield的語法,把檢查表要用到的資料欄位宣告成變數

2.透過if   …….and的語法,把所有條件式都串起來

如果條件式無法用一行敘述來完成,也可以用if ………..then condition1=true;這類的語法來表達一個較複查的條件

然後當這些條件式都是true時,這檔個股才會通過這個檢查表

以上述的腳本為例,用昨天的數據下去跑,完全符合上述條件的名單如下:

 

042002

 

 

 

 

 

以上是檢查表在程式交易上體現的方式,上述的例子只是個樣本,裡頭的參數也都可以調,使用的時候記得要用日線,資料讀取要超過十筆,各位也可以自行設計專屬的檢查表,就像天下那本書說的,這工具可以減少我們在投資上犯的錯。