input
var
array
在程式內所有用到的非保留字變數…都需要事先宣告過後才能使用。除非你是使用像 Value1 、 Value2 等系統預先幫你宣告的變數。
強烈建議大家在寫策略的時候不要使用 Value1、Value2 等的變數,請花點時間幫這些變數取一個你很容易懂的名字。
例如以抓三根 k 線高點的程式語法來說:
Value1 = highest(high, 3);
和
highOfThreeBars = highest(high, 3);
也許第二種寫法會讓你多花很多時間在打字上面…不過請相信我…除非你寫出來的策略讓你覺得是垃圾,以後不會再打開他出來看,不然多花點時間打字對你以後修改程式會有很大的幫助。
三種變數的宣告語法如下:
inputs: length(10);
vars: highOfThreeBars(0);
array: lowOfThreeBars[3](0);
首先, input 和 var 的宣告都是: 變數的名字(預設值),input 和 var 的差別就是 input 的預設值是不能在程式碼內去修改的,也就是如果你宣告了一個 input: length(10); 接著又在程式碼內寫下了:
length = 11;
這樣是會有錯誤的。
使用 input 的好處是你可以不用進到 PowerEditor 內去修改這個變數的值,而可以直接在套用該策略的 k 線圖上直接修改他的值。如下圖:
你可以直接在些修改 input 的值,當然,input 這個值也可以拿來跑最佳化。
關於這部份可以參考之前寫過的文章:
TradeStation 參數的更改方式
TradeStation 最佳化過程教學
接下來是 vars 和 array,把變數宣告成 vars 則可以自由的在程式內運用。尤其是寫策略寫到後期後…變數的用處將會愈來愈多。變數不再只是存個數值等著運算,它還可以用來存狀態、存條件等。
array 則是陣列…array 的宣告會包含一組中括號[],中括號內的數值代表著 array 的長度,也就是宣告了一個 array[3](0) 代表著你可以使用的變數有:
array[0], array[1], array[2] 等三個變數。
通常不太有人會用到 array,那什麼情況下會用到 array 呢?我在第一篇文章中提到過,程式是每一個 tick 都會整個執行過一次…所以假如你寫到了這樣的程式:
length = length + 1;
程式在執行的時候就會每一根 k 線都把 length + 1,但是有時候你又不希望程式自動的幫你這個變數的數值一直修改。例如我在:程式交易 - HTS RSI 多週期計算方式 內寫的程式。我運用了 array 存下了每隔 15 分鐘的收盤價,在這邊如果要運用 vars 來達到我想要的目的…可能就不太容易了。
在這邊順便提一下變數的用法。當你宣告了一個變數後,每根 k 這個變數都會有一個值,所以如果你想得到 10 根 k 線前這個變數的值的話,就可以用:var[10] 來得到 10 根 k 前這個變數的數值是多少。
最後…這篇似乎沒什麼可以讓大家練習的題目…那就隨便宣告幾個變數後檢查看能不能通過吧..:p
水唷...多寫一點XD
回覆刪除