MultiCharts | PowerLanguage語法教學 | CH3:參數和變數(Input and Variable)

參數和變數

參數(input)和變數 (variable)可以想像成是一個容器(Ex: 瓶子),容器內儲存需要的資料(Ex: 5公升)。
但是在使用這個容器之前,需要先宣告,宣告會告訴編譯器要儲存的資料的型別,型別決定了可以對資料做哪些操作(Ex: 算術運算或是文字串接)。

因此,參數和變數分成宣告使用兩個階段:

  • 第一個階段-宣告: 宣告參數或變數的名稱,給予預設值或初始值,同時定義他們的型別,型別可以是數值型別、字串型別或真假值型別。
  • 第二個階段-使用: 在程式碼中使用參數或變數的名稱,當程式執行到名稱時,就會去使用儲存的值。

型別

型別代表值的意義和操作。
型別分成三類: 數值型別(Numerical)字串型別(String)真假值型別(TrueFalse)

數值型別(Numerical)

直接使用數字就是代表數值型別1+1 程式就會知道是要做數學運算,得到的結果是數值: 2
數值型別又分成NumericSimpleNumericSeries兩種。

訊號腳本指標腳本的參數宣告,預設值決定數值是NumericSimple或是NumericSeries
訊號腳本指標腳本的變數宣告,初始值決定數值是NumericSimple或是NumericSeries

NumericSimpleNumericSimple的數值是一個常數,在不同的K棒都不會改變,所以沒有歷史數值。
NumericSimple同時也是保留字,在函數腳本用來宣告參數(input)是NumericSimple型別。
NumericSeriesNumericSeries的數值會隨著K棒改變,Ex: Close(收盤價),因此有歷史數值。
N bars ago[N]表示前N根K棒的歷史數值,EX: Close 2 bars agoClose[2]。
NumericSeries同時也是保留字,在函數腳本用來宣告參數(input)是NumericSeries型別。
NumericSimpleNumericSeries

字串型別(String)

使用兩個雙引號("")將內容框起來代表字串型別"12"代表是字串型別,"12"+"34"程式就會知道是"12""34"兩個字串相加, 得到的結果是字串: "1234"
字串型別又分成StringSimpleStringSeries兩種。

訊號腳本指標腳本的參數宣告,預設值決定字串是StringSimple或是StringSeries
訊號腳本指標腳本的變數宣告,初始值決定字串是StringSimple或是StringSeries

StringSimpleStringSimple的字串是一個常數,在不同的K棒都不會改變,所以沒有歷史數值。
StringSimple同時也是保留字,在函數腳本用來宣告參數(input)是StringSimple型別。
StringSeriesStringSeries的數值會隨K棒改變,因此有歷史數值。
N bars ago[N]表示前N根K棒的歷史數值。
StringSeries同時也是保留字,在函數腳本用來宣告參數(input)是StringSeries型別。
StringSimpleStringSeries

真假值型別(TrueFalse)

使用保留字truefalse代表真假值型別true表示邏輯的真, false表示邏輯的假。
真假值型別又分成TrueFalseSimpleTrueFalseSeries兩種。

訊號腳本指標腳本的參數宣告,預設值決定真假值是TrueFalseSimple或是TrueFalseSeries
訊號腳本指標腳本的變數宣告,初始值決定真假值是TrueFalseSimple或是TrueFalseSeries

TrueFalseSimpleTrueFalseSimple的字串是一個常數,在不同的K棒都不會改變,所以沒有歷史數值。
TrueFalseSimple同時也是保留字,在函數腳本用來宣告參數(input)是TrueFalseSimple型別。
TrueFalseSeriesTrueFalseSeries的數值會隨K棒改變,因此有歷史數值。
N bars ago[N]表示前N根K棒的歷史數值。
TrueFalseSeries同時也是保留字,在函數腳本用來宣告參數(input)是TrueFalseSeries型別。
TrueFalseSimpleTrueFalseSeries

參數(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 見章節。
註: 參數宣告的結束要加分號(;),沒有加會編譯錯誤。
保留字varvarsvariables等同於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

發佈留言