Market News & Insights
Market News & Insights
TradingView编程系列8:内置函数
Michael Miao
3/2/2026
0 min read
Share this post
Copy URL

在 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 编程的核心武器。

Related Articles

Recent Articles