參數和變數#
參數(Input)和變數(Variable)可以想像成一個容器(Ex: 瓶子),容器內儲存需要的資料(Ex: 5公升)。 在使用容器之前,需要先 宣告,宣告會告訴編譯器要儲存的資料的型別,型別決定了可以對資料做哪些操作(Ex: 算術運算或文字串接)。
因此,參數和變數分成 宣告 和 使用 兩個階段:
- 宣告: 宣告參數或變數的名稱,給予預設值或初始值,同時定義型別,型別可以是數值、字串或真假值。
- 使用: 在程式碼中使用參數或變數的名稱,當程式執行到名稱時,就會使用儲存的值。
參數 vs 變數#
參數和變數都是容器,主要差異如下:
| 參數(Input) | 變數(Variable) | |
|---|---|---|
| 宣告保留字 | Input (同義字: Inputs) | Variable (同義字: Var、Vars、Variables) |
| 值的設定方式 | 預設值(DefaultValue) | 初始值(InitialValue) |
| 能否在腳本中更改值 | 不能 | 能,透過指派 |
| 能否從 MultiCharts 修改 | 能,不需重新編譯 | 不能 |
| 型別由什麼決定 | 預設值決定型別 | 初始值決定型別 |
型別#
型別 代表值的意義和操作,分成三類:
| 型別 | 表示方式 | 範例 |
|---|---|---|
| 數值(Numerical) | 直接使用數字 | 1 + 1 結果為 2 |
| 字串(String) | 用雙引號("")框住內容 | "12" + "34" 結果為 "1234" |
| 真假值(TrueFalse) | 使用保留字 true 和 false | true 表示邏輯的真,false 表示邏輯的假 |
Simple vs Series#
每種型別又分成 Simple 和 Series 兩種:
| Simple | Series | |
|---|---|---|
| 特性 | 常數,在不同的K棒都不會改變 | 會隨著K棒改變 |
| 歷史數值 | 沒有 | 有,用 N bars ago 或 [N] 取得前 N 根K棒的值 |
| 數值型別 | NumericSimple | NumericSeries |
| 字串型別 | StringSimple | StringSeries |
| 真假值型別 | TrueFalseSimple | TrueFalseSeries |
在 訊號腳本 和 指標腳本 中:
- 參數 的預設值決定是 Simple 或 Series。
- 變數 的初始值決定是 Simple 或 Series。
以上 6 個型別名稱(Ex:
NumericSimple、NumericSeries)同時也是保留字,在函數腳本中用來宣告參數的型別。
Series 範例#
Close(收盤價)是 NumericSeries 的例子,因為收盤價會隨著K棒改變。
取得前 2 根K棒的收盤價: Close 2 bars ago 或 Close[2]。
參數(Input)#
下面是 訊號腳本 和 指標腳本 的宣告語法。函數腳本 的宣告見函數(Function)。
宣告語法#
| |
| 語法元素 | 說明 |
|---|---|
Input | 表示宣告參數 |
InputName | 參數的名稱,不區分大小寫,不能是數字或句點(.)開頭 |
DefaultValue | 參數的預設值,預設值決定型別 |
宣告的結束要加分號(
;),沒有加會編譯錯誤。
參數值只能透過預設值設定,在腳本中 無法 透過程式碼更改參數值。
你可以從 MultiCharts 設定訊號腳本 和 指標腳本參數的預設值,如果沒有從 MultiCharts 設定新的預設值,參數會使用腳本中定義的 DefaultValue。從 MultiCharts 設定的新預設值直接執行就能套用,不需要重新編譯。
函數腳本的參數宣告沒有預設值,在使用函數的時候,會同時給予參數值。
範例#
| |
宣告參數 Length,預設值為 20(數值型別)。
| |
宣告參數 Price,預設值為 Close(數值型別); 參數 Name,預設值為 "Last Close"(字串型別)。
| |
宣告參數 Draw_Line,預設值為 True(真假值型別)。
變數(Variable)#
下面是 訊號腳本 和 指標腳本 的宣告語法。函數腳本 的宣告見函數(Function)。
宣告語法#
| |
| 語法元素 | 是否可省略 | 說明 |
|---|---|---|
Variable | 必填 | 表示宣告變數 |
IntraBarPersist | 可省略 | 每收到一筆成交就重新計算變數值(update by tick)。預設每一根K棒結束才重新計算(update by bar) |
VariableName | 必填 | 變數的名稱,可由字母、底線、數字、句點(.)組成,不區分大小寫,不可以是數字或句點(.)開頭 |
InitialValue | 必填 | 變數的初始值,初始值決定型別 |
DataN | 可省略 | 指定變數綁定的 Data,預設綁定預設的 Data |
宣告的結束要加分號(
;),沒有加會編譯錯誤。
你不能從 MultiCharts 設定變數的初始值。 變數值透過初始值設定後,可以在腳本中透過程式碼更改(指派其他的值)。
範例#
| |
宣告變數 Max,初始值為 100(數值型別),使用 IntraBarPersist 逐筆更新。
| |
宣告變數 Min_Price,初始值為 Close(數值型別),綁定 Data2。
| |
宣告變數 Overnight,初始值為 False(真假值型別); 變數 Name,初始值為 "Intra-Day"(字串型別)。
Reference#
https://www.multicharts.com/trading-software/index.php?title=Input
https://www.multicharts.com/trading-software/index.php?title=Variable