想知道今年以來,漲幅大的是什麼類型的股票,順手寫了一個區間漲跌幅的自訂函數,也就野人獻曝,順便跟大家分享寫自訂函數腳本時,要留意的事。每年年初我極愛看漲多的股票是那些,因為以前我師傅說可以從這些股票看出今年的選股方向。從這些股票來看,感覺今年是中小型股個股表現的格局。
先來介紹一下計算區間漲跌幅的自訂函數,我寫的腳本如下:
input:price(numericsimple); input:startday(numericsimple); input:endday(numericsimple); value1=getbaroffset(startday); value2=getbaroffset(endday); {if value1>value2 then raiseruntimeerror("起始日期不能晚於結束日期");} value3=(price[value2]/price[value1])-1 ; rangechange=value3*100;
順便跟大家提幾個撰寫自訂函數腳本時,要稍加留意之處
1.自訂函數的名稱一定要是英文的。
2.在用input設定參數時,參數名稱後面括號後不能直接打預設值,而是要寫預設的資料格式,目前XS支援的資料格式分成三種,Numeric數值,String字串,邏輯值TrueFalse。細分是否傳值或傳址, 是否為陣列、序列、或是簡單型態,宣告的名稱如下:
3.最後一定要記得描述該自訂函數名稱的演算方式。例如在這個例子中一定要記得寫
rangechange=value3*100;
有了這個函數,要寫區間漲跌幅的選股腳本就容易多了:
input:startday(20150702,"區間起始日"); input:endday(20151002,"區間結束日"); input:ratio(10,"最低漲幅"); value1=rangechange(close,startday,endday); if value1>=ratio then ret=1; value2=GetField("最新股本"); value3=GetField("月營收年增率","M"); value4=GetField("股價淨值比","D"); outputfield(1,value1,1,"區間漲跌幅"); outputfield(2,value2,0,"股本(億)"); outputfield(3,value3,1,"月營收年增率"); outputfield(4,value4,1,"股價淨值比");
這個腳本的outputfield的部份,為了觀察方便,可以像上面的寫法一樣,多加幾欄。
根據這個選股腳本,從今年一月三日到昨天,漲幅超過三成的股票如下:
一共35檔股票,從這些檔位中可以發現
1.股本除了中鴻144億之外,全部都在40億以下,30億以上的也只有鎧勝及揚智兩家。
2.接近三分之二的股票月營收年增率有兩位數成長
3.其中一半股價淨值比在二以下。
有了區間漲跌幅這個自訂函數,以及outputfield這個輸出特定資料欄位的語法,我們可以很快的挑出特定區間漲幅或跌幅超過一定比例的股票,並且以我們希望呈現的欄位,加以排序。這對我們在作功課時,有不少的幫助。