指標腳本#

PowerLanguage 的腳本類型分成策略(Signal)指標(Indicator)。策略腳本負責發出買賣指令;指標腳本則將計算結果以圖形的方式繪製在圖表上,例如均線、RSI、布林通道等。

指標腳本和策略腳本使用相同的語法,核心差異在於指標腳本使用 Plot 函數輸出數值到圖表,而策略腳本使用 BuySell 等指令下單。

Plot 函數#

Plot 函數將數值繪製到圖表上,每個指標最多可以有 999 條線,分別用 Plot1Plot999 表示。

語法#

1
Plot1(Value, "Name", Color, Width);
參數說明
Value要繪製的數值
Name顯示在圖表圖例(legend)上的名稱
Color線條顏色,可使用顏色名稱(如 Red)或 RGB(R, G, B)。省略時使用預設顏色
Width線條寬度,整數。省略時使用預設寬度

ColorWidth 參數可以省略,省略時套用圖表設定的預設值。

範例#

1
2
3
4
5
// 繪製 20 期均線,藍色,寬度 2
Plot1(Average(Close, 20), "MA20", Blue, 2);

// 繪製成交量
Plot2(Volume, "Vol", Yellow, 1);

設定顏色#

除了在 Plot 函數內直接指定顏色,也可以用 SetPlotColorSetPlotWidth 函數在每根K棒動態修改。

SetPlotColor(PlotNumber, Color)#

動態設定指定線條的顏色。

參數說明
PlotNumber線條編號,對應 Plot1Plot999
Color顏色,可使用顏色名稱或 RGB(R, G, B)

SetPlotWidth(PlotNumber, Width)#

動態設定指定線條的寬度。

參數說明
PlotNumber線條編號
Width寬度,整數

NoPlot(PlotNumber)#

清除指定線條在當前K棒已繪製的點。

使用情境是條件式繪圖:只在某個條件成立時才呼叫 Plot。在即時行情中,K棒尚未收盤前會隨每一筆新成交重新計算,條件可能從成立變成不成立。此時繪圖點已經畫到圖表上,不會自動消失,必須呼叫 NoPlot 主動清除。

1
2
3
4
5
// 只在收盤價突破前一根高點時畫點
If Close > High[1] Then
  Plot1(Close, "Breakout")
Else
  NoPlot(1);  // 條件不成立時,清除當前K棒已畫的點
參數說明
PlotNumber線條編號

動態顏色#

根據條件動態改變線條顏色是指標腳本的常見用法,例如上漲時顯示綠色、下跌時顯示紅色。

1
2
3
4
5
6
Plot1(Close, "Close");

If Close >= Open Then
  SetPlotColor(1, Green)
Else
  SetPlotColor(1, Red);

完整範例:均線交叉指標#

下面的指標繪製快速均線和慢速均線,並根據兩線的相對位置動態改變快線顏色:快線在慢線上方時顯示綠色,反之顯示紅色。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
Inputs: FastLength(10), SlowLength(20);
Variables: FastMA(0), SlowMA(0);

FastMA = Average(Close, FastLength);
SlowMA = Average(Close, SlowLength);

Plot1(FastMA, "FastMA");
Plot2(SlowMA, "SlowMA", White, 2);

If FastMA >= SlowMA Then
  SetPlotColor(1, Green)
Else
  SetPlotColor(1, Red);

圖表上會出現兩條均線:

  • Plot1(FastMA):顏色依相對位置動態變化,快線在慢線上方為綠色,反之為紅色。
  • Plot2(SlowMA):固定白色,寬度 2。

Reference#

https://www.multicharts.com/trading-software/index.php?title=Plot

https://www.multicharts.com/trading-software/index.php?title=SetPlotColor

https://www.multicharts.com/trading-software/index.php?title=SetPlotWidth

https://www.multicharts.com/trading-software/index.php?title=NoPlot