在 TradingView 的 Pine Script 语言中,内置变量和内置函数是构建指标和策略的基础。Pine Script® 内置了数百个变量和函数,它们为脚本提供行情数据、交易环境信息以及大量现成的计算能力,使开发者无需从零编写复杂逻辑,就能快速实现技术分析和策略回测。
可以说,对内置功能理解得越深入,Pine Script 的使用效率和上限就越高。
一、内置变量的作用与分类
内置变量(Built-in Variables)主要用于提供当前图表环境中的各种信息,例如价格、成交量、时间、品种属性以及策略状态等。它们会随着每根 K 线自动更新,是 Pine Script 运行时最核心的数据来源。
1. 价格与成交量相关变量
最常用的一类是价格和成交量变量,包括:
- open、high、low、close
- hl2((high + low) / 2)
- hlc3((high + low + close) / 3)
- ohlc4((open + high + low + close) / 4)
- volume
这些变量代表当前 K 线的数据,几乎所有技术指标都是基于它们计算而来。
2. 品种信息(syminfo 命名空间)
syminfo 命名空间用于获取当前交易品种的属性信息,例如:
- syminfo.ticker、syminfo.tickerid
- syminfo.currency、syminfo.basecurrency
- syminfo.mintick、syminfo.pointvalue
- syminfo.session、syminfo.timezone
- syminfo.type
这些变量在多品种策略、合约计算或跨市场分析中非常重要。
3. 周期信息(timeframe 命名空间)
timeframe 命名空间用于判断当前图表的时间周期,例如:
- timeframe.isseconds
- timeframe.isminutes
- timeframe.isintraday
- timeframe.isdaily
- timeframe.isweekly
- timeframe.ismonthly
- timeframe.multiplier
- timeframe.period
通过这些变量,脚本可以根据不同周期动态调整逻辑。
4. K 线状态(barstate 命名空间)
barstate 命名空间用于判断当前 K 线的状态,包括:
- barstate.isfirst
- barstate.islast
- barstate.isconfirmed
- barstate.isrealtime
- barstate.isnew
它们常用于避免重绘、控制信号触发时机,尤其在实盘策略中非常关键。
5. 策略状态(strategy 命名空间)
在策略脚本中,strategy 命名空间提供了账户和交易状态信息,例如:
- strategy.equity
- strategy.initial_capital
- strategy.position_size
- strategy.position_avg_price
- strategy.wintrades
- strategy.losstrades
这些变量用于分析策略表现和控制风控逻辑。
二、内置函数的概念与结构
内置函数(Built-in Functions)同样定义在 Pine Script v6 参考手册中。每个函数都拥有明确的函数签名(signature),用于说明:
- 接受哪些参数
- 每个参数的类型
- 是否为必需参数
- 返回值的数量和类型
一个函数可以返回一个或多个结果,其返回值的类型通常以 series、float、int 等形式标注。
三、常见内置函数分类
1. 数学函数(math 命名空间)
用于基础数学运算,例如:
- math.abs()
- math.log()
- math.max()
- math.random()
- math.round_to_mintick()
2. 技术指标函数(ta 命名空间)
这是最常用的一类函数,例如:
- ta.sma()(简单移动平均)
- ta.ema()(指数移动平均)
- ta.rsi()(相对强弱指标)
- ta.macd()(MACD)
- ta.supertrend()
此外,ta 命名空间还包含大量辅助函数,如:
- ta.crossover()
- ta.crossunder()
- ta.highest()
- ta.barssince()
3. 数据请求函数(request 命名空间)
用于请求其他品种或其他周期的数据,例如:
- request.security()
- request.financial()
- request.earnings()
- request.dividends()
这是实现多周期、多品种分析的核心工具。
4. 输入、字符串与颜色函数
- input()、input.int()、input.color() 用于定义用户可修改参数
- str.format()、str.tostring() 用于字符串处理
- color.rgb()、color.new() 用于颜色控制
四、以 ta.vwma() 为例理解函数用法
ta.vwma() 用于计算成交量加权移动平均线,其中:
- source 是数据源(如 close)
- length 是计算周期
- 返回值类型为 series float
示例:
myVwma = ta.vwma(close, 20)
如果该语句位于全局作用域中,Pine Script 会在图表的每一根 K 线上执行该计算。
五、有返回值与“副作用”函数
并非所有函数都以返回值为目的。一些函数主要通过副作用发挥作用,例如:
- indicator()、strategy():定义脚本类型
- plot()、plotshape()、bgcolor():绘图和着色
- strategy.entry()、strategy.exit():下单操作
- alert()、alertcondition():生成提醒
还有一些函数虽然返回值,但通常不需要使用其返回结果,如 plot()、label.new() 等。
六、结语
Pine Script 的强大之处,正是在于其完善而系统的内置变量与函数体系。熟练查阅并使用 Pine Script v6 参考手册,理解命名空间、函数签名和类型系统,是从“能写脚本”进阶到“写好脚本”的关键一步。
无论是指标开发还是策略回测,内置功能都是 Pine Script 编程的核心武器。

.jpg)
.jpg)
.jpg)
%20(1).jpg)





