繪圖函數#
Pine Script 提供多種在圖表上繪製視覺化元素的函式。本章介紹最常用的 plot、hline、fill 以及背景色函式。
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() 在兩條 plot 或 hline 之間填充顏色,常用於顯示通道或指標區間:
//@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)