2010年11月5日 星期五

程式編寫入門3 - Input()

大部份的技術指標都有一些參數供我們自行調整,以適應不同的市場或周期,例如 RSI 就可以採用 9天或 14天等不同的計算日數。那麼,當我們利用 MetaStock 的 Indicator Builder 建立技術指標時,要如何做才能讓指標擁有參數設定的功能呢?以保力加通道的 %b 為例,我曾介紹用下面的 formula 來建立 (請參考「程式編寫入門2」):

(C-BBandBot(C,20,S,2))/(BBandTop(C,20,S,2)-BBandBot(C,20,S,2))

大家可能留意到,這個 formula 所計算的 %b 是固定以 20天 SMA 及 2倍標準差作為參數組合的。如果想在指標建立好後,能夠讓我們自行調整參數,就要用到 Input() 函式:

Input("PROMPT TEXT", MINIMUM VALUE, MAXIMUM VALUE, DEFAULT VALUE)

PROMPT TEXT 用來提示我們需要輸入的是什麼,MINIMUM VALUE 和 MAXIMUM VALUE 限制了能夠輸入的數值範圍,而 DEFAULT VALUE 則是預設值。是否覺得有些複雜呢?其實只要實際用一次,就會很容易明白,以下示範如何利用 Input() 建立 %b:

1. 打開 Indicator Builder,按 "New..." 建立一個新指標。


2. 輸入以下的指標名稱及程式碼:

Name: %b
Formula:
x:=Input("Periods",10,50,20);
(C-BBandBot(C,x,S,2))/(BBandTop(C,x,S,2)-BBandBot(C,x,S,2))


x:=Input("Periods",10,50,20);」就是要程式建立一個 x 變數,並容許我們自行輸入 10 至 50 任何一個數字來作為 x 的值,預設為 20。而我們所輸入的 x 值將會作為保力加通道的 SMA 日數,代入第二行的公式計算 %b。

3. 每當使用 %b 時,就會出現視窗叫我們輸入 "Periods" 的數值,即是保力加通道的 SMA 日數。



上述的 %b 雖然容許我們調整 SMA 日數,但另一個參數標準差仍固定為 2倍。如果希望標準差也能隨意調整的話,只需在程式碼中再增加一個 y 變數即可:

x:=Input("Periods",10,50,20);
y:=Input("Deviations",1,3,2);
(C-BBandBot(C,x,S,y))/(BBandTop(C,x,S,y)-BBandBot(C,x,S,y))

沒有留言: