TradingView的警报标准占位符是什么
在TradingView中设置警报时,默认每次触发警报,提示的消息都是一成不变的。这没什么不好,但一条能包含动态信息(如实时价格、成交量、品种名称)的警报消息,显然更实用。在警报中包含动态数据的一种方法,就是使用标准占位符。下面详细了解它们是什么、怎么用。
什么是标准占位符
标准占位符是一段被双大括号({{和}})包裹、有特殊含义的文本,可以插入到警报消息中。当包含占位符的警报被触发时,TradingView会自动把这些占位符替换成对应的最新动态数值。通过这种机制,我们就能轻松地在警报消息中动态显示成交量、当前时间、最新价格等关键信息。
标准占位符的使用场景
在TradingView中,我们可以在多个地方使用标准占位符:
- 手动创建的价格警报:可以在“创建警报”窗口的“消息”文本框中使用。
- 指标脚本中的警报:可以在“创建警报”窗口的“消息”文本框中使用,也可以在代码里
alertcondition()函数的message参数中使用。 - 策略脚本中的警报:可以在“创建警报”窗口的“消息”文本框中使用;可以在策略脚本顶部的
//@strategy_alert_message注释中使用;也可以在各类策略订单函数的alert_message参数中使用,为特定订单生成定制的警报消息。有一个例外:由alert()函数直接生成的警报消息不能使用标准占位符。
标准占位符使用示例
标准占位符用起来是什么效果?假设我们在BTCUSD图表上创建一个基于价格的警报。不需要任何指标或策略,直接点图表上的“创建警报”按钮,在弹出窗口的“消息”文本框里输入以下内容:
{{exchange}}:{{ticker}} 下跌2%,现价 {{close}}。
在窗口中的样子如下:

点击“创建”按钮激活警报后,一旦条件满足,TradingView就会把消息中的占位符替换为实时的动态值。收到的警报消息会是这个样子:

标准占位符一览表
以下是所有可用的标准占位符及其说明:
| 占位符 | 说明与示例 |
|---|---|
{{ticker}} |
触发警报的交易品种代码。例如:AAPL、EURUSD、BTCUSD。 |
{{exchange}} |
交易品种所属的交易所或数据源。例如:NASDAQ、OANDA、COINBASE。如果数据源是延迟数据,名称会以_DL或_DLY结尾,例如NYMEX_DL。 |
{{interval}} |
触发警报的图表时间周期。 |
{{close}} |
触发警报时,所在K线的“当前”收盘价(即最新成交价)。例如:124.83、1.53923。 |
{{open}} |
触发警报时,所在K线的开盘价。 |
{{high}} |
触发警报时,所在K线的最高价。 |
{{low}} |
触发警报时,所在K线的最低价。 |
{{volume}} |
触发警报时,所在K线的成交量。 |
{{time}} |
触发警报时,所在K线的开盘时间。该时间采用UTC(协调世界时),格式为yyyy-MM-ddTHH:mm:ssZ。例如:2022-05-03T14:25:00Z。 |
{{timenow}} |
触发警报的确切时刻。同样采用UTC,格式也是yyyy-MM-ddTHH:mm:ssZ。例如:2023-07-27T17:38:10Z。 |
要注意占位符对大小写敏感,拼写必须与上表中的小写形式完全一致。例如{{close}}可以正确显示价格,但{{Close}}或{{CLOSE}}不行,它们会被当成普通文本直接显示出来。
关于{{interval}}占位符的说明
{{interval}}占位符返回图表的时间周期,其返回值与图表周期的对应关系如下:
| 图表时间周期 | {{interval}}返回值 |
|---|---|
| 秒级(如5秒) | 5S |
| 分钟级(如15分钟) | 15 |
| 小时级(如4小时) | 240(即4*60) |
| 日线 | D |
| 周线 | W |
| 月线 | M |
有两种特殊情况,{{interval}}的返回值始终为1:
- 砖块图(Range chart)上的警报:由于砖块图基于1分钟数据构建,这类图表上的警报
{{interval}}总是返回1。 - 手动的价格警报:手动创建、不依赖任何指标或策略的价格警报,其计算默认基于1分钟数据,所以
{{interval}}也返回1。
关于时间占位符的格式
{{time}}和{{timenow}}都返回一个遵循yyyy-MM-ddTHH:mm:ssZ格式的时间字符串,这是国际标准的ISO 8601格式,其中:
yyyy-MM-dd代表年月日。T是固定分隔符,用于分隔日期和时间。HH:mm:ss代表时分秒。Z代表该时间为UTC+0时区(协调世界时),没有任何时区偏移。
值得注意的是,无论你的图表是日线还是30秒线,这两个时间占位符的精度都到秒。
其他类型的警报占位符
除了标准占位符,还有另外两种占位符可以为警报消息增添动态信息:
- 绘图占位符:用于在警报消息中包含指标的当前绘图值(例如RSI的当前值)。
- 仓位占位符:专用于策略脚本,用于在警报消息中包含策略的持仓和订单信息。
此外,Pine脚本还提供了另一种实现动态警报消息的方法,就是使用alert()函数,它可以在不用占位符的情况下,直接构建包含动态变量的字符串。
小结
标准占位符是可以插入到警报消息中、被双大括号{{...}}包裹的特殊文本。警报触发时,TradingView会自动把这些占位符替换为相应的动态值,如最新价格、成交量、时间等。我们可以在手动创建的价格警报、alertcondition()生成的指标警报,以及策略订单触发的警报中灵活使用它们,做出信息更丰富、更实用的警报。
在TradingView警报条件中使用标准占位符
通过标准占位符,我们可以让警报消息包含动态数据,把每次触发都千篇一律的静态文本,升级为包含最新市场信息的动态通知。标准占位符是被双大括号{{...}}包裹的特殊文本,把它插入警报消息后,警报触发时TradingView会自动把这些占位符“掉包”成实时对应的动态值。在指标脚本中,我们有多种方式使用这些占位符,下面就来看看怎么在指标的警报条件中应用它们。
常用标准占位符一览
以下是可以在指标警报消息中使用的标准占位符:
{{ticker}}:插入触发警报的交易品种代码。{{exchange}}:插入交易品种的交易所或数据源。{{interval}}:插入图表的时间周期。{{close}}:插入触发警报时K线的最新价格。{{open}}:插入触发警报时K线的开盘价。{{high}}:插入触发警报时K线的最高价。{{low}}:插入触发警报时K线的最低价。{{volume}}:插入触发警报时K线的成交量。{{time}}:插入触发警报时K线的开盘时间(UTC)。{{timenow}}:插入警报触发的确切时刻(UTC)。
要在指标警报中使用占位符,主要有两种途径:一是在“创建警报”窗口的“消息”文本框中手动输入占位符;二是在Pine脚本代码中,把占位符直接写进alertcondition()函数的message参数里,以代码形式预设。下面分别看这两种方法的具体操作。
方法一:在“创建警报”窗口中手动输入
这个方法让我们不改代码也能灵活定制警报消息。首先,需要一个已经用alertcondition()定义了警报条件的指标,并把它加载到图表上。然后打开图表的“创建警报”窗口,在“条件”一栏先选我们的指标名称,再在第二个下拉菜单中选具体的警报条件。接下来就可以在“消息”文本框中自由发挥了。例如,下图中的默认消息是“Instrument crossed WMA”:

现在我们想让它包含动态信息,可以把“消息”文本框的内容改为:
{{ticker}} 穿越WMA。最新价格:{{close}}。
这样,“创建警报”窗口会变成这个样子:

点击“创建”按钮,自定义动态警报就设置好了。之后当指标的警报条件满足时,我们收到的消息就是这样:

可以看到,TradingView已经自动把{{ticker}}替换成了品种代码,把{{close}}替换成了触发警报时的最新价格。
方法二:在代码中直接定义
第二种方法是写Pine脚本时,直接把包含占位符的文本作为alertcondition()函数message参数的值。好处是可以在代码中就预设好一条包含动态信息、内容丰富的默认警报消息。当用户在“创建警报”窗口选择这个警报条件时,这条预设消息会自动填进“消息”文本框,可以直接用,也可以在此基础上再改。假设我们要在价格穿越移动平均线的时刻生成警报,首先计算移动平均线:
// 计算加权移动平均线 (WMA)
wmaValue = ta.wma(close, 30)
这里算了30周期的WMA,存进wmaValue变量。然后定义警报的触发逻辑:
// 判断价格是否穿越均线
wmaCross = ta.cross(close, wmaValue)
我们用ta.cross()捕捉价格穿越均线的瞬间:穿越发生时wmaCross为true,否则为false。这个变量就是警报的“开关”。最后用alertcondition()创建警报条件,并在message参数中嵌入占位符:
// 创建价格穿越均线的警报条件
alertcondition(condition=wmaCross,
title="WMA 穿越",
message="{{exchange}}:{{ticker}} 的价格 ({{close}}) 穿越了WMA。")
这里condition参数用了“开关”变量wmaCross;title定义警报在菜单中显示的名称;message则包含预设的动态消息,其中{{exchange}}、{{ticker}}和{{close}}都是标准占位符。代码写完后,仍需手动在图表上创建这个警报:把指标加到图表,打开“创建警报”窗口,选择我们的指标和名为“WMA 穿越”的警报条件。这时你会发现消息框已经自动填充了代码中定义的内容,直接点“创建”即可:

之后当价格穿越WMA时,我们就会收到一条包含实时动态数据的警报消息,就像这样:

以上快速示例用到的完整指标代码如下:
//@version=5
indicator(title="alertcondition() 快速示例", overlay=true)
// 计算并绘制加权移动平均线
wmaValue = ta.wma(close, 30)
plot(wmaValue, color=color.teal, linewidth=2, title="WMA")
// 判断当前价格是否穿越均线
wmaCross = ta.cross(close, wmaValue)
// 创建价格穿越均线的警报条件
alertcondition(condition=wmaCross,
title="WMA 穿越",
message="{{exchange}}:{{ticker}} 的价格 ({{close}}) 穿越了WMA。")
这个指标的逻辑很简单:先计算并绘制30周期WMA,再用ta.cross()检测价格穿越均线的行为,最后通过alertcondition()把这个穿越行为定义成一个带动态消息的警报条件。
完整脚本示例
接下来构建一个包含警报条件和标准占位符的完整指标脚本。这个指标会创建两个警报条件:一个在价格向上突破阶段高点时触发,另一个在价格向下跌破阶段低点时触发,两个警报的消息中都会动态包含当时的价格信息。写完代码后,我们再演示怎么配置这些警报,并看看它们实际触发时的效果。先上完整的指标代码:
//@version=5
indicator(title="alertcondition() 示例", overlay=true)
// 计算并绘制阶段最高点与最低点
highestHigh = ta.highest(high, 10)[1]
lowestLow = ta.lowest(low, 10)[1]
plot(highestHigh, color=color.green, linewidth=2, title="阶段高点")
plot(lowestLow, color=color.red, linewidth=2, title="阶段低点")
// 定义警报的触发逻辑
highBreakout = high > highestHigh and volume > volume[1]
lowBreakout = low < lowestLow and volume > volume[1]
// 创建警报条件
alertcondition(condition=highBreakout,
title="高点突破",
message="{{ticker}} 的最高价 ({{high}}) 突破了阶段高点。")
alertcondition(condition=lowBreakout,
title="低点跌破",
message="{{ticker}} 的最低价 ({{low}}) 跌破了阶段低点。")
我们先用indicator()配置脚本的基本信息,如名称和显示方式。接着用ta.highest()和ta.lowest()分别计算过去10根K线的最高价和最低价。注意函数后面的[1]:它表示取的是不包含当前K线的、过去10根K线的极值,这是为了确保当前价格可以与之进行有效的“突破”比较。算出的极值分别存进highestHigh和lowestLow变量。然后用plot()把这两条代表阶段高低点的线画在图表上,并用不同颜色区分。之后定义警报的触发逻辑:
// 定义警报的触发逻辑
highBreakout = high > highestHigh and volume > volume[1]
lowBreakout = low < lowestLow and volume > volume[1]
第一个条件highBreakout要求当前K线的最高价high大于前面算出的阶段高点highestHigh,并且当前K线的成交量volume也要大于上一根K线的成交量,以此作为突破有效性的确认。两个条件同时满足时,highBreakout为true。第二个条件lowBreakout逻辑类似,只是方向相反,用于捕捉向下跌破的信号。最后基于这些逻辑创建最终的警报条件:
// 创建警报条件
alertcondition(condition=highBreakout,
title="高点突破",
message="{{ticker}} 的最高价 ({{high}}) 突破了阶段高点。")
alertcondition(condition=lowBreakout,
title="低点跌破",
message="{{ticker}} 的最低价 ({{low}}) 跌破了阶段低点。")
第一个alertcondition()创建了“高点突破”警报:condition参数直接用前面定义的highBreakout变量;title为警报命名,这个名字会出现在警报设置的下拉菜单里;message设置默认警报消息,其中嵌入了{{ticker}}和{{high}}两个标准占位符,用于动态显示品种代码和突破时的高点价格。第二个alertcondition()则为“低点跌破”创建了类似的警报。
指标图表与警报设置
该指标加载到图表上后,代表阶段高低点的两条线看起来是这样的:

在警报能自动触发之前,我们必须手动为这两个警报条件分别创建警报。打开图表的“创建警报”窗口,要启用“高点突破”警报,先在“条件”下拉菜单中选择我们的指标,再选择名为“高点突破”的警报条件。由于警报消息已在代码中预设好,无需修改,直接点“创建”即可。

用同样的方法为“低点跌破”警报设置,只是这次选“低点跌破”作为警报条件。设置完成后,只需等价格突破阶段高点(或跌破阶段低点)。高点突破发生时,TradingView就会弹出一条包含实时动态数据的警报消息,像这样:

至于如何在警报消息中包含像“阶段高点”这类指标算出的具体数值,后面讲“在警报条件中包含绘图值”时会介绍。
小结
标准占位符是被双大括号{{...}}包裹的特殊文本,可以插入警报消息中,警报触发时TradingView会自动把它们替换为相应的实时动态值。在指标脚本中使用标准占位符主要有两种方法:
- 手动配置:在“创建警报”窗口的“消息”文本框中手动输入占位符,灵活定制。
- 代码预设:在
alertcondition()的message参数中直接写入包含占位符的字符串,为警报设置一条内容丰富的默认消息。


