隨著TradingView版本的更新,Pine腳本(Pine Script) 也增加了更方便使用的新功能。
此外,也大幅度解決了過去難以編輯或指標數量不夠等問題。
有許多Pine Script的資產可說是以Version4製作而成,因此未來將一邊活用Version4的腳本、一邊透過Version5的新功能來製作腳本以提升效率。
以下將依序介紹Version5的更新項目。
1.寫入編碼的變更項目
最初宣告為指標或策略的部分有所變更。
透過Pine Script製作指標時,需要在一開始宣告函數,而在Version4中的寫法是study(~) ,但Version5中則是indicator(~) 。
變成了不易造成混淆的用法。
原本由study(~)所顯示的參數,全數皆可透過indicator(~)使用。
當進行Version4→5的寫法轉換時,此部分只需改變函數的名稱即可執行。
種類 | Version4 | Version5 |
---|---|---|
指標 | study(~) | indicator(~) |
策略 | strategy(~) | strategy(~) |
2.添加名稱的空間
可在同類函數的開頭添加相同的文字。
藉此使原始碼更加整齊劃一,後續審視原始碼時也更易於閱讀。
2-1.執行技術分析的函數ta.
以下列舉了常用的項目。
技術分析函數 | Version4 | Version5 |
---|---|---|
SMA | sma() | ta.sma() |
EMA | sma() | ta.ema() |
Cross | cross() | ta.cross() |
Crossover | crossover() | ta.crossover() |
Crossunder | crossunder() | ta.crossunder() |
MACD | macd() | ta.macd() |
Bollinger bands | bb() | ta.bb() |
Stochastic | stoch() | ta.stoch() |
RSI | rsi() | ta.rsi() |
ATR | atr() | ta.atr() |
Supertrend | supertrend() | ta.supertrend() |
等等 | … | … |
2-2.數學相關函數math.
以下也同樣列舉了常用的項目。
數學函數 | Version4 | Version5 |
---|---|---|
絕對值 | 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.
數學函數 | Version4 | Version5 |
---|---|---|
平均K線 | heikinashi() | ticker.heikinashi() |
卡吉圖 | kagi() | ticker.kagi() |
新價線 | linebreak() | ticker.linebreak() |
點數圖 | pointfigure() | ticker.pointfigure() |
磚形圖 | renko() | ticker.renko() |
等等 | … | … |
2-4.文字列相關函數str.
文字列函數 | Version4 | Version5 |
---|---|---|
顯示參數的文字列 | tostring(x, y) | str.tostring(value, format) |
將數字變更為文字列 | tonumber(x) | str.tonumber(string) |
2-5.取得外部數據request.
取得外部數據的函數 | Version4 | Version5 |
---|---|---|
品種的財經類數據 | financial() | request.financial() |
品種數據 | quandl() | request.quandl() |
其他品種/時間週期 | security(… , resolution, …) | request.security( … , timeframe, …) |
等等 | … | … |
3.無法作為函數或變數名稱的單詞
在Pine Script中,有部分的單詞已經預先設定了其所代表的意義。
此類單詞被稱為保留字,並且無法被用作函數或變數的名稱。
Version5中無法使用的保留字如以下所示。
catch
class
do
ellipse
in
is
polygon
range
return
struct
text
throw
try
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使用教學內容。