关键要点

  • Pine Script 是 TradingView 内置的脚本语言,用于在浏览器中直接创建自定义技术指标和交易策略。

  • Pine Script v6 是当前版本。它在 v5 的“ta”命名空间(例如 ta.ema() 和 ta.rsi())基础上进行了增强,增加了更严格的类型系统,默认启用动态数据请求,并内置了代码转换器,帮助迁移旧脚本。

  • 你可以用少量代码创建像 SMA、EMA 以及带颜色编码的蜡烛图等简单指标。

  • TradingView 的策略测试器允许你使用历史价格数据回测自定义策略,以检查是否存在逻辑问题。

  • 不需要安装任何软件。Pine Script 会在 TradingView 的网页编辑器中完全运行。

Binance Academy courses banner

简介

有效的技术分析取决于你是否拥有完成任务所需的正确工具。TradingView 是一个在加密货币、外汇和股票市场上广泛使用的图表平台,内置了大量指标。但真正让它与众不同的是:你可以把它定制到什么程度。

Pine Script 是 TradingView 自有的脚本语言。它让你能够直接在图表上创建自定义指标、警报和策略。本指南将带你了解当前版本 Pine Script v6 的基础内容,讲解如何设置你的第一个脚本、绘制指标,并将它们组合成可复用的工具。

Pine Script 是什么?

Pine Script 是 TradingView 开发的一种轻量级脚本语言。你可以在内置于 TradingView 界面的 Pine 编辑器中编写脚本。当你点击“Add to Chart(添加到图表)”时,脚本会在 TradingView 的服务器上运行,输出结果会直接显示在你的图表上,无需下载或安装。

Pine Script v6 是当前版本,也是你编写任何新脚本应使用的版本。它基于 v5 引入的更清晰的语法和 ta 命名空间,并增加了若干改进:更严格的类型系统、默认启用动态数据请求,以及更有条理的函数处理方式。该语言包含一份全面的用户手册,并提供大量已发布的脚本供你在 TradingView 上浏览。

Pine Script v6 有哪些新内容?

如果你以前用过 Pine Script v5,下面是 v6 中最有实际意义的变化:

  • 更严格的类型系统:在 v5 中,数值(int 和 float)可以在条件中被隐式当作布尔值使用。在 v6 中不再允许。如果你的条件使用了数字,你必须使用 bool() 函数显式进行类型转换。这会让代码更不含糊,也更容易调试。

  • 默认启用动态请求:在 v5 中,对 request.*() 函数(例如 request.security())的调用必须放在全局作用域,并且需要固定的符号和时间框参数。在 v6 中默认启用动态请求,这意味着你可以在循环和条件代码块中调用 request.*(),并将序列值作为参数传入。这显著扩展了多标的和多时间框脚本的能力。

  • 内置 v5-to-v6 转换器:Pine 编辑器可以自动将 v5 脚本转换为 v6。打开“Manage script(管理脚本)”下拉菜单并选择“Convert code to v6(将代码转换为 v6)”。转换器会自动处理大多数变更,但某些情况可能需要你手动检查。

  • 多行字符串(2026 年 4 月):v6 现在支持使用三引号分隔符(""" 或 '')来编写多行字符串字面量。这样你就可以在不使用 \n 转义序列的情况下,更轻松地跨多行编写格式化标签、工具提示和日志消息。

较早版本的 Pine Script(v3、v4、v5)仍可在 TradingView 上运行,但 v5 现在已弃用,建议在所有新脚本中使用 v6。

设置 TradingView

你可以从免费 TradingView 账号开始。打开任意资产的图表,例如 BTC/USDT,然后在右侧工具栏中找到 Pine 编辑器图标。点击它以打开代码编辑器。

PineEditor TradingView

当你点击“Add to Chart(添加到图表)”后,脚本会运行并在当前图表上显示结果。要移除脚本,请在图表任意位置右键单击并选择“Remove Indicators(移除指标)”。在示例之间保持图表整洁,有助于你更清晰地查看每个结果。

Pine 编辑器

Pine 编辑器自带一个默认的两行脚本。下面是在 Pine Script v6 中的一个最小示例:

//@version=6

indicator("我的脚本", overlay=true)

plot(close)

该 indicator() 函数用于定义脚本。在 v5 和 v6 中,它取代了 v4 及更早版本中使用的旧 study() 函数。overlay=true 参数会将结果显示在主图表上,而不是在下方的独立面板中。plot(close) 这一行会为每根K线绘制一条折线,使用收盘价 close。

绘制K线蜡烛图

折线图会展示收盘价,但蜡烛图会把开盘价、最高价、最低价和收盘价放在一起,让你获得更多关于价格走势的信息。下面是如何绘制带颜色编码的蜡烛图:

//@version=6

indicator("彩色蜡烛图", overlay=true)

colors = open >= close ? color.red : color.green

plotcandle(open, high, low, close, color=colors)

该脚本会逐根K线检查:如果开盘价大于或等于收盘价,那么该蜡烛为红色(价格下跌)。如果收盘价高于开盘价,则蜡烛为绿色。这是大多数行情绘图软件中使用的标准配色约定。

绘制移动平均线(Moving Averages)

移动平均线会对指定周期内的价格数据进行平滑处理,从而更容易识别趋势。在 Pine Script v6 中,ta 命名空间下内置了简单移动平均线(SMA)和指数移动平均线(EMA)的函数。

简单移动平均线(SMA)

SMA 会在给定的周期数内计算收盘价的平均值。要绘制一个 10 周期的 SMA:

plot(ta.sma(close, 10))

更改周期数会调整回看窗口。周期越长,线条越平滑,但对近期变化的反应会更慢。

指数移动平均线(EMA)

EMA 使用一个乘数对近期价格赋予更高权重,该乘数为 2 / (length + 1)。因此,相比 SMA,EMA 对近期价格变化的响应更快。要将两者并排绘制:

//@version=6

indicator("SMA 对比 EMA", overlay=true)

plot(ta.sma(close, 10))

plot(ta.ema(close, 10))

你会发现一个细微差异:在快速波动的行情中,EMA 能更紧密地跟随价格变动,而 SMA 则会略微滞后。

内置脚本

TradingView 提供了许多指标的预制版本。在 Pine 编辑器中点击“New”,并选择诸如“Moving Average Exponential(指数移动平均)”之类的指标以查看其源代码。这些脚本通常会使用诸如 input.int() 或 input.float() 这样的带类型输入函数,它们会在图表上创建可交互的设置面板。这样你就可以在不修改代码的情况下调整长度等参数。

绘制相对强弱指数(RSI)指标

RSI 指标衡量近期价格变动的速度和幅度,输出一个介于 0 和 100 之间的数值。70 以上的读数通常与可能的超买情况相关,而 30 以下的读数可能提示潜在的超卖情况。这些是通用参考水平,并不能保证价格方向。

在 Pine Script v6 中,RSI 函数为 ta.rsi(close, length)。如果你想添加一个现成的 RSI 策略,在 Pine 编辑器中点击 New > RSI Strategy。它会根据 RSI 阈值在图表上添加方向标记,并切换视图到 Strategy Tester(策略测试器)选项卡。

RSI 通常以 14 个周期进行衡量,但你可以调整该数值以适配你的方法。周期越长,指标更平滑且信号更少;周期越短,则对价格变化更敏感。

回测你的策略

Pine Script 包含 strategy() 模式,可让你使用历史价格数据来回测规则。下面是一个使用输入变量的示例框架,这样你就可以在不编辑代码的情况下在图表上调整水平:

//@version=6

strategy("基础策略", overlay=true)

entryLevel = input.int(defval=30000, title="入场价格")

exitLevel = input.int(defval=32000, title="出场价格")


if close >= entryLevel

strategy.entry("多头", strategy.long)

if close >= exitLevel

strategy.close_all(comment="退出")

将其添加到图表后,TradingView 会打开策略测试器选项卡。这里会基于历史价格数据显示进出场记录以及汇总统计信息。过去的表现并不能可靠地反映未来结果。回测有助于检查策略逻辑是否合理,但它不会预测未来的结果。

注意:在 v6 中,策略的默认多头/空头保证金百分比为 100%,当超过 9,000 笔交易限制时,策略引擎会截断最早的订单,而不是抛出错误。这些更改可能会影响你的回测结果与在 v5 中运行的同一脚本的对比方式。

组合指标

Pine Script 最实用的应用之一,就是将多个指标组合到同一个自定义视图中。下面的脚本会根据 EMA 和 RSI 条件对蜡烛进行着色:

//@version=6

indicator("EMA + RSI 蜡烛图", overlay=true)

emaLength = input.int(title="EMA 周期", defval=25, minval=1)

rsiLength = input.int(title="RSI 周期", defval=25, minval=1)


emaVal = ta.ema(close, emaLength)

rsiVal = ta.rsi(close, rsiLength)


colors = (close > emaVal and rsiVal > 50) ? color.green : color.red

plot(emaVal, "EMA")

plotcandle(open, high, low, close, color=colors)

当收盘价高于 EMA 且 RSI 高于 50 时,该蜡烛会被标记为绿色,否则为红色。input.int() 这类函数会在图表上创建设置面板,因此你可以通过交互式方式调整两个周期长度。这种可视化方式让你更容易发现当两种条件在同一根K线上同时满足时会发生什么。

这不应被视为金融建议,而且任何指标组合都无法消除交易中的不确定性。请将自定义脚本作为更广泛的研究与分析流程的一部分来使用。

常见问题(FAQ)

我应该使用 Pine Script 的哪个版本?

Pine Script v6 是当前版本,也是你应当用于所有新脚本的版本。像 v5 这样的更早版本仍然受支持,但已被弃用。如果你已经有一个 v5 脚本,Pine 编辑器内置了转换器:打开“Manage script(管理脚本)”下拉菜单并选择“Convert code to v6(将代码转换为 v6)”。

study() 函数发生了什么?

在 Pine Script v5 中,study() 函数被重命名为 indicator(),在 v6 中延续了这一变化。它们的作用相同:用于定义脚本名称以及属性,例如是否叠加在主图表上或显示在独立面板中。如果你看到旧脚本使用 study(),那么它们通常是 v4 或更早版本编写的。

我可以免费使用 Pine Script 吗?

可以。Pine 编辑器以及基础 Pine Script 功能在所有 TradingView 方案中都可使用,包括免费套餐。一些功能(例如同时运行多个脚本)需要付费方案。编写和测试自定义脚本不需要订阅。

Pine Script 中 ta 命名空间是什么?

ta 命名空间在 Pine Script v5 中引入,并在 v6 中继续保留。过去直接调用的一些内置技术分析函数(例如 ema()、sma() 和 rsi())现在改为通过 ta.ema()、ta.sma() 和 ta.rsi() 访问。这使得代码更明确,也更便于一眼阅读。

在 Pine Script v6 中,策略(strategies)有哪些变化?

v6 的策略有几项默认设置发生了变化。多头和空头仓位的默认保证金百分比现在都是 100%。当超过 9,000 笔交易限制时,策略引擎也会截断最早的订单,而不是抛出错误。如果你正在将 v5 策略迁移到 v6,请重新检查你的回测结果,因为这些变化可能会影响绩效统计数据。

回测能可靠地预测未来表现吗?

不能。回测只能展示某个策略在历史数据上的表现,而不是它在未来会如何。市场会变化,过去存在的条件未必会重复。回测有助于识别策略中的逻辑问题,但不应仅凭回测结果作为任何交易决策的依据。

结语

Pine Script v6 让你可以在 TradingView 上不依赖任何外部软件或安装来构建并测试自定义指标变得更简单。先从简单脚本开始,逐步增加复杂度,是学习该语言的实用方法。Pine 编辑器内置的示例脚本库,以及内置的 v5-to-v6 转换器,都是从更早版本升级时很有用的起点。

指标是用于分析的工具,而不是能够保证特定结果的信号。任何指标组合都无法消除交易中的不确定性。请将 Pine Script 用作更广泛研究流程的一部分,并始终把风险管理视为任何策略的核心组成部分。

延伸阅读

  • 什么是技术分析(Technical Analysis)?

  • 什么是 RSI 指标?

  • 移动平均线解析

  • K线蜡烛图新手指南

  • TradingView 新手指南

免责声明:本内容仅以“现状(as is)”的方式提供给你,用于一般信息与教育目的,不做任何形式的陈述或保证。它不应被理解为金融、法律或其他专业建议,也不旨在推荐购买任何特定产品或服务。你应当向合适的专业顾问寻求自己的建议。如果内容由第三方贡献者提供,请注意其所表达的观点属于该第三方贡献者,并不必然反映 Binance Academy 的观点。数字资产价格可能波动。你的投资价值可能上涨或下跌,你可能无法收回所投入的金额。你的投资决策完全由你自行负责,而 Binance Academy 不对你可能遭受的任何损失承担责任。如需更多信息,请参阅我们的《使用条款》《风险警示》以及 Binance Academy 的条款。