Pine Script TradingView教學

TradingView中Pine腳本(Pine Script) 的Version4與Version5區別

2022-09-22

隨著TradingView版本的更新,Pine腳本(Pine Script) 也增加了更方便使用的新功能。此外,也大幅度解決了過去難以編輯或指標數量不夠等問題。有許多Pine Script的資產可說是以Version4製作而成,因此未來將一邊活用Version4的腳本、一邊透過Version5的新功能來製作腳本以提升效率。以下將依序介紹Version5的更新項目。

1.寫入編碼的變更項目

最初宣告為指標或策略的部分有所變更。透過Pine Script製作指標時,需要在一開始宣告函數,而在Version4中的寫法是study(~) ,但Version5中則是indicator(~) 。變成了不易造成混淆的用法。原本由study(~)所顯示的參數,全數皆可透過indicator(~)使用。當進行Version4→5的寫法轉換時,此部分只需改變函數的名稱即可執行。
種類Version4Version5
指標study(~)indicator(~)
策略strategy(~)strategy(~)

2.添加名稱的空間

可在同類函數的開頭添加相同的文字。藉此使原始碼更加整齊劃一,後續審視原始碼時也更易於閱讀。

2-1.執行技術分析的函數ta.

以下列舉了常用的項目。
技術分析函數Version4Version5
SMAsma()ta.sma()
EMAsma()ta.ema()
Crosscross()ta.cross()
Crossovercrossover()ta.crossover()
Crossundercrossunder()ta.crossunder()
MACDmacd()ta.macd()
Bollinger bandsbb()ta.bb()
Stochasticstoch()ta.stoch()
RSIrsi()ta.rsi()
ATRatr()ta.atr()
Supertrendsupertrend()ta.supertrend()
等等

2-2.數學相關函數math.

以下也同樣列舉了常用的項目。
數學函數Version4Version5
絕對值abs(number)math.abs(number)
餘弦cos(number)math.cos(number)
正弦sin(number)math.sin(number)
正切tan(number)math.tan(number)
平均值avg()math.avg()
最大值max()math.max()
最小值min()math.min()
等等

2-3.K線的種類ticker.

數學函數Version4Version5
平均K線heikinashi()ticker.heikinashi()
卡吉圖kagi()ticker.kagi()
新價線linebreak()ticker.linebreak()
點數圖pointfigure()ticker.pointfigure()
磚形圖renko()ticker.renko()
等等

2-4.文字列相關函數str.

文字列函數Version4Version5
顯示參數的文字列tostring(x, y)str.tostring(value, format)
將數字變更為文字列tonumber(x)str.tonumber(string)

2-5.取得外部數據request.

取得外部數據的函數Version4Version5
品種的財經類數據financial()request.financial()
品種數據quandl()request.quandl()
其他品種/時間週期security(… , resolution, …)request.security( … , timeframe, …)
等等

3.無法作為函數或變數名稱的單詞

在Pine Script中,有部分的單詞已經預先設定了其所代表的意義。此類單詞被稱為保留字,並且無法被用作函數或變數的名稱。Version5中無法使用的保留字如以下所示。
catchclassdoellipseinispolygonrangereturnstructtextthrowtry

4.可設定使用者定義函數的預設值

在過去的版本中,並無法在自製函數中指定參數的預設值。現在將可省略參數來設定預設值,提升了製作腳本的自由度。

5.新增switch的語法

如今也能在Pine Script中使用switch的語法 switch是自if文體改良而來的項目。 當必須使用複數的分支時,可搭配if與else使其更容易書寫。另外,也因易於閱讀,而對減少出錯有所幫助。
例: 當輸入值ma_type為 「SMA」時,欲選擇ta.sma函數、 「EMA」時,欲選擇ta.ema函數、 「RMA」時,欲選擇ta.rma函數的狀況。此時便可寫入以下文字列, result = switch ma_type “EMA” => ta.ema(close, length) “SMA” => ta.sma(close, length) “RMA” => ta.rma(close, length) => 0
如此就能得出結果。若無符合輸入值的項目,則會返回至0。

6.新增while的語法

現在也能使用便於重複執行處理的while迴圈。While會進行類似於for文體的動作。即為「在符合條件的期間,持續重複執行」的動作。因此,在尚未決定重複次數的狀況下極為便利。另外,亦可在中途使用break予以中斷。

TradingView教學

介紹電腦(PC)版,手機版(iPhone與Android)的TradingView使用教學內容。
  • 本文作者

匯商專業人士

1985年出生於台灣。
99年因為父親的工作來到日本。
畢業橫濱大陸系中華學校與日本國內大學。
07年入職日系製藥公司,10年跳槽到日本外匯公司。在疫情期間離職(被開除),開始做專業投資者。(無職)
2013年開始海外外匯交易平台投資。開戶過23家海外外匯經紀商的賬號,其中遇到過3次黑平台。
2022年由於公司的業績不佳,被開除。開始專業投資者的生活,也就是“無職”
關於筆者的詳細介紹
筆者Facebook

-Pine Script, TradingView教學
-