參數和變數
參數(input)和變數 (variable)可以想像成是一個容器(Ex: 瓶子),容器內儲存需要的資料(Ex: 5公升)。
但是在使用這個容器之前,需要先宣告,宣告會告訴編譯器要儲存的資料的型別,型別決定了可以對資料做哪些操作(Ex: 算術運算或是文字串接)。
因此,參數和變數分成宣告和使用兩個階段:
- 第一個階段-宣告: 宣告參數或變數的名稱,給予預設值或初始值,同時定義他們的型別,型別可以是數值型別、字串型別或真假值型別。
- 第二個階段-使用: 在程式碼中使用參數或變數的名稱,當程式執行到名稱時,就會去使用儲存的值。
型別
型別代表值的意義和操作。
型別分成三類: 數值型別(Numerical)、字串型別(String)和真假值型別(TrueFalse)。
數值型別(Numerical)
直接使用數字就是代表數值型別,1+1 程式就會知道是要做數學運算,得到的結果是數值: 2。
數值型別又分成NumericSimple和NumericSeries兩種。
在訊號腳本和指標腳本的參數宣告,預設值決定數值是NumericSimple或是NumericSeries。
在訊號腳本和指標腳本的變數宣告,初始值決定數值是NumericSimple或是NumericSeries。
NumericSimple | NumericSimple的數值是一個常數,在不同的K棒都不會改變,所以沒有歷史數值。 NumericSimple同時也是保留字,在函數腳本用來宣告參數(input)是NumericSimple型別。 |
NumericSeries | NumericSeries的數值會隨著K棒改變,Ex: Close(收盤價),因此有歷史數值。 用N bars ago或[N]表示前N根K棒的歷史數值,EX: Close 2 bars ago或Close[2]。 NumericSeries同時也是保留字,在函數腳本用來宣告參數(input)是NumericSeries型別。 |
字串型別(String)
使用兩個雙引號(""
)將內容框起來代表字串型別,"12"
代表是字串型別,"12"+"34"
程式就會知道是"12"
和"34"
兩個字串相加, 得到的結果是字串: "1234"
。
字串型別又分成StringSimple和StringSeries兩種。
在訊號腳本和指標腳本的參數宣告,預設值決定字串是StringSimple或是StringSeries。
在訊號腳本和指標腳本的變數宣告,初始值決定字串是StringSimple或是StringSeries。
StringSimple | StringSimple的字串是一個常數,在不同的K棒都不會改變,所以沒有歷史數值。 StringSimple同時也是保留字,在函數腳本用來宣告參數(input)是StringSimple型別。 |
StringSeries | StringSeries的數值會隨K棒改變,因此有歷史數值。 用N bars ago或[N]表示前N根K棒的歷史數值。 StringSeries同時也是保留字,在函數腳本用來宣告參數(input)是StringSeries型別。 |
真假值型別(TrueFalse)
使用保留字true和false代表真假值型別,true表示邏輯的真, false表示邏輯的假。
真假值型別又分成TrueFalseSimple和TrueFalseSeries兩種。
在訊號腳本和指標腳本的參數宣告,預設值決定真假值是TrueFalseSimple或是TrueFalseSeries。
在訊號腳本和指標腳本的變數宣告,初始值決定真假值是TrueFalseSimple或是TrueFalseSeries。
TrueFalseSimple | TrueFalseSimple的字串是一個常數,在不同的K棒都不會改變,所以沒有歷史數值。 TrueFalseSimple同時也是保留字,在函數腳本用來宣告參數(input)是TrueFalseSimple型別。 |
TrueFalseSeries | TrueFalseSeries的數值會隨K棒改變,因此有歷史數值。 用N bars ago或[N]表示前N根K棒的歷史數值。 TrueFalseSeries同時也是保留字,在函數腳本用來宣告參數(input)是TrueFalseSeries型別。 |
參數(Input)
下面是訊號腳本和指標腳本宣告的語法。函數腳本的宣告見函數(funtion)。
宣告語法
Input: InputName1(DefaultValue1), InputName2(DefaultValue2), etc;
Input
: 表示宣告參數。InputName
: 參數的名稱,名稱不區分大小寫,不能是數字或句點( . )開頭。DefaultValue
: 參數的預設值和型別,參數的預設值決定型別,型別可以是數值(Numerical)、字串(String)、真假值(TrueFalse)。
保留字inputs等同input。
註: 參數宣告的結束要加分號(;
),沒有加會編譯錯誤。
你可以從MultiCharts設定訊號腳本和指標腳本參數的預設值,如果沒有從MultiCharts設定新的預設值,參數的預設值會使用腳本中定義的DefaultValue
。
從MultiCharts設定的新預設值直接執行就能套用,不需要重新編譯。
參數值只能透過一開始的預設值設定和改變,設定後,在腳本中無法再透過程式碼更改參數值。
函數腳本的參數宣告沒有預設值,在使用函數的時候,會同時給予參數值。
Example
Input: Length(20);
Input: Price(Close), Name("Last Close");
Input: Draw_Line(True);
變數(Variable)
下面是訊號腳本和指標腳本宣告的語法。函數腳本的宣告見函數(funtion)。
宣告語法
Variable: [IntraBarPersist]VariableName1(InitialValue1[,DataN]), [IntraBarPersist]
VariableName2(InitialValue2[,DataN]),etc.
Variable
: 表示宣告變數。IntraBarPersist
– []代表可省略的參數,每有一筆交易成交,就重新計算變數值(update by tick)。如果沒有指定這個參數,預設每一根K棒的結束重新計算變數值(update by bar)。IntraBarPersist 見章節。VariableName
– 變數的名稱,名稱可以是字母、底線、底線、數字、句點( . )組成,名稱英文不分大小寫。名稱不可以是數字或句點( . )起頭。InitialValue
– 變數的初始值和型別,變數的初始值決定型別,型別可以是數值(numerical)、字串(string)和真假值(TrueFalse)。DataN
– []代表可省略的參數,指定變數綁定的DataN。如果沒有指定這個參數,預設綁定預設的DataN。DataN 見章節。
註: 參數宣告的結束要加分號(;
),沒有加會編譯錯誤。
保留字var、vars、variables等同於variable。
您不能從 MultiCharts 設定變數的初始值。
變數值透過初始值設定,設定後,可以在腳本中再透過程式碼更改變數值(指派其他的值)。
Example
Variable: IntraBarPersist Max(100);
Variable: Min_Price(Close,Data2);
Variable: 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