内置
介绍
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)函数返回
从指定位置开始的柱的开盘
时间
,但前提是该
时间在指定时间内。
timeframetimeframesessiontimeframesessiontimezone
内置变量
内置变量有不同的用途。以下是几个例子:
- 与价格和成交量相关的变量: 开盘价、 最高价、 最低价、 收盘价、 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() 函数,它返回源值的成交量加权移动平均值。这是参考手册中的条目:

该条目为我们提供了使用它所需的信息:
- 该函数的作用是什么。
- 其签名(或定义):
ta.vwma(source, length) → series float- 它包含的参数包括
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”部分,其中列出了提供给每个函数参数的参数所需的合格类型。