内置
介绍
Pine Script™ 有数百个内置变量和函数。它们为您的脚本提供有价值的信息并为您进行计算,免除您编写代码的麻烦。您对内置函数了解得越多,您就能用 Pine 脚本做更多的事情。
在本页中,我们概述了 Pine Script™ 的一些内置变量和函数。本手册中涵盖特定主题的页面将更详细地介绍它们。
所有内置变量和函数均在 Pine Script™ v5 参考手册中定义。它之所以被称为“参考手册”,是因为它是 Pine Script™ 语言的权威参考。无论您是初学者还是专家,它都是您使用 Pine 编写代码时必不可少的工具。如果您正在学习第一种编程语言,请将参考手册作为您的朋友。忽略它将使您使用 Pine Script™ 的编程体验变得困难和令人沮丧——就像使用任何其他编程语言一样。
同一家族中的变量和函数共享相同的命名空间,它是函数名称的前缀。
例如,ta.sma()ta
函数位于命名空间中,它代表“技术分析”。命名空间可以同时包含变量和函数。
一些变量也有函数版本,例如:
- ta.tr变量
返回当前条形图的“真实范围”。ta.tr
(true)函数调用也返回“真实范围”,但当
通常需要计算它的
前一个
收盘价是na时,它会
high - low
改为使用 na 进行计算。 - time
变量给出
当前柱的
开盘
时间
。time (timeframe)函数返回
从指定位置开始
的柱的
开盘时间,即使图表的时间范围不同。time (timeframe, session)函数返回
从指定位置开始的柱的开盘
时间
,但前提是该时间在指定
时间内。time (timeframe, session, timezone)函数返回
从指定位置开始的柱的开盘
时间
,但前提是该
时间在指定时间内。
timeframe
timeframe
session
timeframe
session
timezone
内置变量
内置变量有不同的用途。以下是几个例子:
- 与价格和成交量相关的变量: 开盘价、 最高价、 最低价、 收盘价、 hl2、 hlc3、 ohlc4和 成交量。
- 命名空间中的符号相关信息
syminfo
: syminfo.basecurrency、 syminfo.currency、 syminfo.description、 syminfo.mintick、 syminfo.pointvalue、 syminfo.prefix、 syminfo.root、 syminfo.session、 syminfo.ticker、 syminfo.tickerid、 syminfo.timezone和 syminfo.type。 - 命名空间中的时间范围(又称“间隔”或“分辨率”,例如 15 秒、30 分钟、60 分钟、1 天、3 个月)变量
timeframe
: timeframe.isseconds、 timeframe.isminutes、 timeframe.isintraday、 timeframe.isdaily、 timeframe.isweekly、 timeframe.ismonthly、 timeframe.isdwm、 timeframe.multiplier和 timeframe.period。 - 命名空间中的 Bar 状态
barstate
(参见 Bar 状态页面): barstate.isconfirmed、 barstate.isfirst、 barstate.ishistory、 barstate.islast、 barstate.islastconfirmedhistory、 barstate.isnew和 barstate.isrealtime。 - 命名空间中的策略相关信息
strategy
: strategy.equity、 strategy.initial_capital、 strategy.grossloss、 strategy.grossprofit、 strategy.wintrades、 strategy.losstrades、 strategy.position_size、 strategy.position_avg_price、 strategy.wintrades等。
内置函数
许多函数都用于返回结果。以下是几个示例:
- 命名空间中的数学相关函数
math
: math.abs()、 math.log()、 math.max()、 math.random()、 math.round_to_mintick()等。 - 命名空间中的技术指标
ta
: ta.sma()、 ta.ema()、 ta.macd()、 ta.rsi()、 ta.supertrend()等。 - 支持命名空间中计算技术指标的常用函数
ta
: ta.barssince()、 ta.crossover()、 ta.highest()等。 - 用于从命名空间中的其他符号或时间范围请求数据的函数
request
: request.dividends()、 request.earnings()、 request.financial()、 request.quandl()、 request.security()、 request.splits()。 - 在命名空间中操作字符串的函数
str
: str.format(), str.length(), str.tonumber(), str.tostring()等。 - 用于定义脚本用户可以在脚本的“设置/输入”选项卡中的
input
命名空间中修改的输入值的函数: input()、 input.color()、 input.int()、 input.session()、 input.symbol()等。 - 用于操作
color
命名空间中颜色的函数: color.from_gradient()、 color.new()、 color.rgb()等。
有些函数不返回结果,但会用于产生副作用,这意味着即使它们不返回结果,它们也会做一些事情:
- 函数用作声明语句,定义三种 Pine 脚本类型之一及其属性。每个脚本必须以对以下函数之一的调用开始: indicator()、 strategy() 或 library()。
- 绘图或着色函数: bgcolor()、 plotbar()、 plotcandle()、 plotchar()、 plotshape()、 fill()。
- 在命名空间中下订单的策略函数
strategy
: strategy.cancel()、 strategy.close()、 strategy.entry()、 strategy.exit()、 strategy.order()等。 - 策略函数返回命名空间中有关过去单个交易的信息
strategy
: strategy.closedtrades.entry_bar_index()、 strategy.closedtrades.entry_price()、 strategy.closedtrades.entry_time()、 strategy.closedtrades.exit_bar_index()、 strategy.closedtrades.max_drawdown()、 strategy.closedtrades.max_runup()、 strategy.closedtrades.profit()等。 - 生成警报事件的函数: alert() 和 alertcondition()。
其他函数返回结果,但我们并不总是使用它,例如: hline(), plot(), array.pop(), label.new()等。
所有内置函数均在 Pine Script™ v5 参考手册中定义。您可以单击此处列出的任何函数名称,转到参考手册中的条目,该条目记录了函数的签名,即它接受的参数列表和它返回的值的合格类型(一个函数可以返回多个结果)。参考手册条目还将列出每个参数:
- 其名称。
- 它所需值的限定类型(我们使用参数来命名调用函数时传递给函数的值)。
- 该参数是否是必需的。
所有内置函数都在其签名中定义了一个或多个参数。并非所有函数都需要所有参数。
让我们看一下 ta.vwma() 函数,它返回源值的成交量加权移动平均值。这是参考手册中的条目:
该条目为我们提供了使用它所需的信息:
- 该函数的作用是什么。
- 其签名(或定义):
- 它包含的参数包括
source
:length
- 返回结果的限定类型:“series float”。
- 一个显示其使用示例:
plot(ta.vwma(close, 15))
。 - 一个展示其功能的示例,但采用较长格式,以便您更好地理解其计算。请注意,这是为了解释 --- 而不是可用的代码,因为它更复杂且执行时间更长。使用较长格式只有缺点。
- “RETURNS”部分准确解释了函数返回的值。
- “ARGUMENTS”部分列出了每个参数,并给出了有关调用函数时使用的参数所需的合格类型的关键信息。
- “另请参阅”部分请参阅相关的参考手册条目。
这是在一行代码中对该函数的调用,该代码声明一个
myVwma
变量并将结果分配ta.vwma(close, 20)
给它:
myVwma = ta.vwma(close, 20)
注意:
- 我们使用内置变量
close
作为形参的参数
source
。 - 我们将
20
其用作参数的实参length
。 - 如果放置在全局范围内(即从一条线的第一个位置开始),它将由 Pine Script™ 运行时在图表的每个条上执行。
我们还可以在调用函数时使用参数名称。在函数调用中使用时,参数名称称为关键字参数:
myVwma = ta.vwma(source = close, length = 20)
使用关键字参数时,您可以更改参数的位置,但前提是将它们用于所有参数。当调用具有许多参数的函数(例如 indicator() )时,您也可以放弃第一个参数的关键字参数,只要您不跳过任何参数即可。如果您跳过一些,则必须使用关键字参数,以便 Pine Script™ 编译器可以确定它们对应的参数,例如:
indicator("Example", "Ex", true, max_bars_back = 100)
不允许以这种方式混合:
indicator(precision = 3, "Example") // Compilation error!
调用内置函数时,务必确保使用的参数属于所需的合格类型,每个参数的合格类型都会有所不同。
要了解如何做到这一点,需要了解 Pine Script™ 的 类型系统。每个内置函数的参考手册条目都包含一个“ARGUMENTS”部分,其中列出了提供给每个函数参数的参数所需的合格类型。