input:price(numeric); input:startday(numeric); input:endday(numeric); value1=getbaroffset(startday); value2=getbaroffset(endday); value3=(price[value2]/price[value1])-1 ; rangechange=value3*100;有幾個撰寫自訂函數腳本時,要稍加留意之處:
- 自訂函數的名稱一定要是英文的,
- 在訂定函數內有一個特殊的變數,他的名字就是這個函數的英文名稱。如果計算完成之後要把數值回傳的話,必須把數值傳給這個變數。注意看上面這個例子內的這一行裡面的rangechange就是這個函數的名字,所以這一行表示這個函數算完之後的回傳值就是value3 * 100:
rangechange=value3*100;
- 自訂函數一樣可以使用input語法來設定參數。可是參數名稱後面括號後不能直接打預設值,而是要寫這個參數的資料格式:如果是數值的話,就寫Numeric,如果是字串的話,就寫String,如果是邏輯值的話,就寫TrueFalse。其他還有更複雜的傳遞格式,就容我們在其他文章內再為大家介紹。
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這個輸出特定資料欄位的語法,我們可以很快的挑出特定區間漲幅或跌幅超過一定比例的股票,並且以我們希望呈現的欄位,加以排序。這對我們在作功課時,有不少的幫助。