計算區間漲跌幅的自訂函數

By | 2016-02-24

想知道今年以來,漲幅大的是什麼類型的股票,順手寫了一個區間漲跌幅的自訂函數,也就野人獻曝,順便跟大家分享寫自訂函數腳本時,要留意的事。每年年初我極愛看漲多的股票是那些,因為以前我師傅說可以從這些股票看出今年的選股方向。從這些股票來看,感覺今年是中小型股個股表現的格局。

先來介紹一下計算區間漲跌幅的自訂函數,我寫的腳本如下:

 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的部份,為了觀察方便,可以像上面的寫法一樣,多加幾欄。

根據這個選股腳本,從今年一月三日到昨天,漲幅超過三成的股票如下:

022402

一共35檔股票,從這些檔位中可以發現

1.股本除了中鴻144億之外,全部都在40億以下,30億以上的也只有鎧勝及揚智兩家。

2.接近三分之二的股票月營收年增率有兩位數成長

3.其中一半股價淨值比在二以下。

有了區間漲跌幅這個自訂函數,以及outputfield這個輸出特定資料欄位的語法,我們可以很快的挑出特定區間漲幅或跌幅超過一定比例的股票,並且以我們希望呈現的欄位,加以排序。這對我們在作功課時,有不少的幫助。