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

函式:寫出可重複使用的區塊

Pine 的函式吃序列、回傳序列。它們是你不用再把同一段程式碼複製貼進每一支腳本的方法。

中級閱讀時間約 9 分鐘初學 → 進階第 08 / 17 堂
在 TradingView 實際跑一次
一個有文件的函式,被呼叫兩次

percentChange() 定義一次,用在兩個不同的回看期。在編輯器裡把游標停在那個呼叫上看文件字串。

//@version=5
indicator("Lesson 8 - Functions", overlay=false)

//@function        Percent change of a series over a lookback window.
//@param src       The series to measure.
//@param lookback  Number of bars back.
//@returns         Percent change as a float series.
percentChange(src, lookback) =>
    (src - src[lookback]) / src[lookback] * 100

// Same function, two lookbacks.
pct20 = percentChange(close, 20)
pct50 = percentChange(close, 50)

plot(pct20, "20-bar % change", color=color.blue, linewidth=2)
plot(pct50, "50-bar % change", color=color.orange, linewidth=2)

hline(0, "Zero", color=color.gray, linestyle=hline.style_dotted)
bgcolor(pct20 > 0 ? color.new(color.green, 90) : color.new(color.red, 90))
如何執行
  1. 1. 在 TradingView 打開任一圖表,點選下方的 Pine Editor
  2. 2. 把編輯器裡的內容全選,用這段程式覆蓋過去,然後按 Save
  3. 3. 點選 Add to chart。如果是策略, 再打開 Strategy Tester 分頁。

函式的形狀

一個 Pine 函式吃有型別的輸入並回傳一個值。最簡單的:

percentChange(src, lookback) =>
    (src - src[lookback]) / src[lookback] * 100

這是一個函式字面值——用 => 的一行式。用它:plot(percentChange(close, 20))

多行函式

任何不簡單的東西都用區塊形式:

atrPercent(length) =>
    atr = ta.atr(length)
    atr / close * 100

plot(atrPercent(14))

用 tuple 回傳多個值

Pine v5 的函式可以回傳 tuple:

macdSignal(src, fast, slow, signalLen) =>
    fast_ma = ta.ema(src, fast)
    slow_ma = ta.ema(src, slow)
    macd = fast_ma - slow_ma
    sig = ta.ema(macd, signalLen)
    [macd, sig]

[m, s] = macdSignal(close, 12, 26, 9)
plot(m)
plot(s)

文件字串

Pine 支援放在函式上方的文件註解:

//@function        Returns the percent change of a series over a lookback window.
//@param src       The series to measure
//@param lookback  Number of bars back
//@returns         The percent change as a float series
percentChange(src, lookback) =>
    (src - src[lookback]) / src[lookback] * 100

在編輯器裡把游標停在函式呼叫上就會顯示文件。

函式要放哪裡

腳本最上面,在任何呼叫它們的程式碼之前。函式可以呼叫其他函式。這裡沒有「標頭檔」——Pine 是單一檔案語言。

這解鎖了什麼

一旦你為常用的積木(自訂均線、訊號產生器、sizing 邏輯)寫好函式,每一個新策略就變成「組合函式、畫出訊號」,而不是從頭寫同一套數學。

你剛完成了什麼

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