返回《給 CFD 交易者的 TradingView PineScript》
第一部分

輸入參數:讓指標可以重複使用

輸入讓你把可調整的東西曝露出來給使用你腳本的人。選對輸入型別,Pine 就會給你有用的設定介面。

初學閱讀時間約 7 分鐘初學 → 進階第 05 / 17 堂
在 TradingView 實際跑一次
一個有真正設定面板的移動平均線

在設定對話框裡把 Type 切換成 SMA/EMA/WMA/RMA。把 Source 改成 hl2 或 ohlc4,看那條線移動——那就是 input.source 在做事。

//@version=5
indicator("Lesson 5 - Configurable MA", overlay=true)

// Four different input types, all exposed in the settings dialog.
src     = input.source(close, "Source")
length  = input.int(20, "Length", minval=1, maxval=500)
maType  = input.string("EMA", "Type", options=["SMA", "EMA", "WMA", "RMA"])
show200 = input.bool(true, "Show 200 reference")

// switch picks the matching built-in function.
ma = switch maType
    "SMA" => ta.sma(src, length)
    "EMA" => ta.ema(src, length)
    "WMA" => ta.wma(src, length)
    "RMA" => ta.rma(src, length)

plot(ma, "MA", color=color.orange, linewidth=2)
plot(show200 ? ta.ema(src, 200) : na, "200 EMA", color=color.gray)
如何執行
  1. 1. 在 TradingView 打開任一圖表,點選下方的 Pine Editor
  2. 2. 把編輯器裡的內容全選,用這段程式覆蓋過去,然後按 Save
  3. 3. 點選 Add to chart。如果是策略, 再打開 Strategy Tester 分頁。

為什麼輸入重要

硬編常數在學習時可以,但真正的指標會把可調整的東西曝露出來。輸入會變成任何使用你腳本的人所看到的設定面板。對的輸入型別給你對的控制項——滑桿、下拉選單、顏色選擇器、勾選框。

輸入型別

input.int——整數,可選 min/max/step。input.float——同上但有小數。input.bool——開關用的勾選框。input.string——自由文字或下拉選單。input.source——讓使用者挑一條序列(close、high、low、hl2、ohlc4 等等)。input.timeframe——時間週期選擇器。

字串下拉選單

input.string 可以帶一串選項:

maType = input.string("SMA", "Type", options=["SMA", "EMA", "WMA"])

設定面板會顯示一個下拉選單。你讀到的選擇值就是一個普通字串。

來源輸入

src = input.source(close, "Source") 讓使用者挑哪一條序列要餵進你的指標——close、high、hl2、ohlc4,或圖上任何其他圖。光是這一行,就讓一個移動平均指標能跨不同圖表類型與自訂資料源使用。

提示與分組

輸入接受 tooltipgroup 參數。tooltip="Period over which the average is calculated" 會在設定面板顯示一個問號圖示。group="Visuals" 把相關的輸入聚在一起。當你的輸入超過一手之數時就用它們。

預設值與驗證

挑一個對最常見使用情境合理的預設值。如果使用者有可能自己打自己的腳(負的長度、零除數),用 minval 或在腳本最上面用 if 防住。

一個實作範例

//@version=5
indicator("Configurable MA", overlay=true)
src      = input.source(close, "Source")
length   = input.int(20, "Length", minval=1, maxval=500)
maType   = input.string("EMA", "Type", options=["SMA", "EMA", "WMA"])
show200  = input.bool(false, "Show 200 reference")

ma = switch maType
    "SMA" => ta.sma(src, length)
    "EMA" => ta.ema(src, length)
    "WMA" => ta.wma(src, length)

plot(ma, color=color.orange, linewidth=2)
plot(show200 ? ta.ema(src, 200) : na, color=color.gray)

該從這裡帶走什麼

輸入是你把一支腳本變成一個工具的方式。花時間用合理的預設值與驗證去曝露出對的可調參數——當你回到即時市場上要調整那個指標時,未來的你會感謝你。

你剛完成了什麼

給 CFD 交易者的 TradingView PineScript》的第 05 / 17 堂課。跑完範例或讀完這段之後, 把它勾起來,然後進下一堂課。