繪圖函數#

Pine Script 提供多種在圖表上繪製視覺化元素的函式。本章介紹最常用的 plothlinefill 以及背景色函式。

plot — 折線圖#

plot() 是最基本的繪圖函式,將一個數值序列繪製成折線:

plot(series, title, color, linewidth, style, display)

基本用法:

//@version=6
indicator("plot 示範", overlay=true)

ma5  = ta.sma(close, 5)
ma20 = ta.sma(close, 20)

plot(ma5,  "5日均線",  color=color.blue,   linewidth=1)
plot(ma20, "20日均線", color=color.orange, linewidth=2)

線條樣式#

style 參數控制線條的外觀:

常數說明
plot.style_line折線(預設)
plot.style_stepline階梯線
plot.style_histogram長條圖
plot.style_area面積圖
plot.style_areabr面積圖(以 0 為基準線分正負)
plot.style_columns柱狀圖(類似成交量)
plot.style_circles圓點
plot.style_cross十字
//@version=6
indicator("MACD 長條圖")

[macdLine, signalLine, hist] = ta.macd(close, 12, 26, 9)

plot(hist, "Histogram", style=plot.style_histogram,
     color=hist >= 0 ? color.green : color.red)
plot(macdLine,   "MACD",   color=color.blue)
plot(signalLine, "Signal", color=color.orange)

動態顏色#

color 參數可以是條件表達式,讓線條顏色隨數值改變:

//@version=6
indicator("動態顏色", overlay=true)

ma = ta.sma(close, 20)

// 收盤在均線上方為綠,下方為紅
lineColor = close > ma ? color.green : color.red
plot(ma, "均線", color=lineColor, linewidth=2)

color.new — 顏色透明度#

color.new(baseColor, transparency) 建立帶透明度的顏色,透明度範圍 0(不透明)到 100(完全透明):

plot(close, color=color.new(color.blue, 50))  // 50% 透明的藍色

hline — 水平線#

hline() 在固定價格位置繪製水平線,常用於 RSI 的超買超賣線:

//@version=6
indicator("RSI + 水平線")

rsiValue = ta.rsi(close, 14)
plot(rsiValue, "RSI", color=color.purple)

hline(70, "超買", color=color.red,   linestyle=hline.style_dashed)
hline(50, "中線", color=color.gray,  linestyle=hline.style_dotted)
hline(30, "超賣", color=color.green, linestyle=hline.style_dashed)

linestyle 選項:

常數說明
hline.style_solid實線(預設)
hline.style_dashed虛線
hline.style_dotted點線

fill — 兩線之間填色#

fill() 在兩條 plothline 之間填充顏色,常用於顯示通道或指標區間:

//@version=6
indicator("布林通道填色", overlay=true)

[middle, upper, lower] = ta.bb(close, 20, 2)

upperPlot = plot(upper, "上軌", color=color.blue)
lowerPlot = plot(lower, "下軌", color=color.blue)
plot(middle, "中軌", color=color.orange)

// 在上下軌之間填色
fill(upperPlot, lowerPlot, color=color.new(color.blue, 90))

hline 之間也可以填色:

//@version=6
indicator("RSI 區間填色")

rsiValue = ta.rsi(close, 14)
plot(rsiValue, "RSI", color=color.purple)

h70 = hline(70, "超買", color=color.red)
h30 = hline(30, "超賣", color=color.green)

// 在 30~70 之間填色
fill(h70, h30, color=color.new(color.gray, 85))

bgcolor — K 棒背景色#

bgcolor() 在特定條件下將 K 棒背景染色,適合標記特殊時段或訊號:

//@version=6
indicator("背景色示範", overlay=true)

rsiValue = ta.rsi(close, 14)

// RSI 超買時背景染紅,超賣時染綠
bgcolor(rsiValue > 70 ? color.new(color.red,   85) : na)
bgcolor(rsiValue < 30 ? color.new(color.green, 85) : na)

barcolor — K 棒顏色#

barcolor() 改變 K 棒本身(實體和影線)的顏色:

//@version=6
indicator("K棒顏色", overlay=true)

ma = ta.sma(close, 20)

// 收盤在均線上方顯示藍色 K 棒,否則保持預設
barcolor(close > ma ? color.blue : na)

傳入 na 表示保持預設顏色不改變。

實用範例:多重均線指標#

//@version=6
indicator("多重均線", overlay=true)

ma5   = ta.sma(close, 5)
ma10  = ta.sma(close, 10)
ma20  = ta.sma(close, 20)
ma60  = ta.sma(close, 60)
ma120 = ta.sma(close, 120)

plot(ma5,   "MA5",   color=color.new(color.red,    0), linewidth=1)
plot(ma10,  "MA10",  color=color.new(color.orange, 0), linewidth=1)
plot(ma20,  "MA20",  color=color.new(color.yellow, 0), linewidth=2)
plot(ma60,  "MA60",  color=color.new(color.green,  0), linewidth=2)
plot(ma120, "MA120", color=color.new(color.blue,   0), linewidth=3)

// 多頭排列時背景染淺綠
bullish = ma5 > ma10 and ma10 > ma20 and ma20 > ma60
bgcolor(bullish ? color.new(color.green, 92) : na)

Reference#