函式的形狀
一個 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 邏輯)寫好函式,每一個新策略就變成「組合函式、畫出訊號」,而不是從頭寫同一套數學。