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

序列、型別與基本資料流

每一個 Pine 變數都隱含地是一個時間序列。理解這件事,正是讓 Pine 對任何從通用語言過來的人感覺很奇怪的原因。

初學閱讀時間約 6 分鐘初學 → 進階第 02 / 17 堂
在 TradingView 實際跑一次
一行算出逐根變化

close - close[1] 一次給你「每一根」K 線的變化——不需要迴圈。看著那根直方圖隨著 K 線交替而翻紅翻綠。

//@version=5
indicator("Lesson 2 - Series and history", overlay=false)

// Bar-over-bar change. One expression, evaluated across all bars.
change = close - close[1]

// Plot as a histogram — green up, red down.
plot(change, "Bar change", style=plot.style_columns,
     color=change >= 0 ? color.new(color.green, 30) : color.new(color.red, 30))

// And the 20-bar change, for comparison.
plot(close - close[20], "20-bar change", color=color.blue)

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

序列(series)資料型別

多數 Pine 的值都是序列——會逐根 K 線在整段圖表歷史上變化的值。當你寫 close,Pine 隱含地指涉圖表上每一根 K 線(過去與未來)的收盤價。當你寫 close - close[1],你得到的是每一根 K 線的逐根變化。

這是 Pine 裡最重要的一個概念。正是它讓你能寫 plot(close > close[1]),而不需要在 Python 裡迴圈跑過每一根 K 線。Pine 替你跑那個迴圈。

簡單型別:int、float、bool、string、color

Pine 有五個基本型別:intfloatboolstringcolorclose 是一串 float 的序列。close > close[1] 回傳的是一串 bool 的序列。你傳給 plot 的是一串 color 的序列。

歷史參照:[1]、[2]、[n]

方括號是查過去的 K 線。close[1] 是一根 K 線前的收盤價。close[20] 是 20 根前的收盤價。close[0] 是目前這根(等同於 close)。讀取歷史是每一個指標的基本積木。

na:Pine 的「沒有值」

na 的意思是「沒有值」。一條 20 期移動平均線最前面 20 根是 na,因為那時候還沒有足夠的歷史。多數繪圖會優雅地處理 na,在圖上留白,但做數學時要小心——close + nana,不是 close

型別不合的錯誤

如果你寫 plot(close > close[1]),你不能把一個 bool 當成一條線來畫——Pine 會丟型別錯誤。要嘛轉成數字(plot(close > close[1] ? 1 : 0)),要嘛用 plotshapeplotchar 來畫布林值。

為什麼這很重要

你寫的每一支腳本都是一個在整段圖表歷史上的向量化運算。一旦想通這點,Pine 剩下的就只是語法。

你剛完成了什麼

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