參數

By | 2015-05-26

介紹了函數的概念後,接下來我們來學習參數的概念。
以移動平均這個函數為例,average(close,5) 代表的是五日移動平均,average(close,3) 代表3日的移動平均,在這邊3跟5就是average這個函數的參數。
我們在實際運用語法時,可能用了不只一個函數,所以也會給定不只一個參數,如果我們直接把參數寫死在腳本中時,一旦要調整參數時, 要到腳本中一個一個改,如果改漏了腳本就出錯了,這時候我們可以用宣告參數的語法來改善這樣的問題,參數的宣告,用的語法如下:

input: length(5)

這代表我們在腳本上宣告了一個叫length的參數,這個參數系統內建的初始值為5所以這時候我們就可以寫出像下面這樣的腳本 :

input: length(5);
if close cross above average(close,length)
then ret=1;

如果我們這麼寫,當我們想把5日改成10日時,我們只要在參數值這地方把5改成10就行了。
又例如,我們要找跳空上漲1%的股票,原本我們會寫成 :

If Open/High[1]> 1+1/100
then ret=1;

但很可能改天我們會希望跳空上漲2%才通知我們,這時候怎麼辦呢? 我們可以把跳空上漲的百分比設成一個可以快速調整的參數, 使用者需要調整百分比時,只要更改這個數字即可,不必再進到腳本去修改數據。
例如上面的例子,就可以改寫成 :

input:no1(1);
If Open/Close[1]> 1+no1/100
then ret=1;

腳本如果改成這樣,當你要把跳空下跌超過1%改成2%時,只要調整參數值就行了。
又例如我們如果要寫一個收盤突破二十日均線的腳本,我們會這麼寫 :

input: length(20);
if close cross above average(close,length)
then ret=1;

如果我們這麼寫,當我們想把20日改成10日時,我們只要在參數值這地方把20改成10就行了。在宣告參數時, 也不一定要有初始值,我們也可以只宣告參數的型態即可,例如 :
input: length(numersimple) 代表這個參數是個簡單的數值
在設定參數時,我們用Input這樣的語法,不過如果我們參數設多了,就可能不記得那個參數是對應那個函數或那個指標, 這時候我們可以透過setinputname的語法,為每一個參數加上一段說明文字,它的語法如下:
Setinputname (n,”說明文字”);
在setinputname之後用小括號來包括兩個部份,n的部份代表的是第幾個參數,它的順序是按input語法在腳本中的先後順序而定, 要設定第一個input參數的說明文字時就填1,要說明第二個input就填2,以此類推。
在n的後面用逗點隔開說明文字,文字前後用雙引號來標示。請看以下的例子
input1

input2

透過setinputname的方式來設定參數名稱,當參數多的時候,就可以很清楚的看到每一個參數的名稱及其對應的內建值了,這時候要修改參數時就不會搞混了。

你可能會有興趣的文章

回應