随着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予以中断。