You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Pine Script自定义变量传入TradingView警报?

在Pine Script中向TradingView警报传入自定义变量值的方法

问题描述

在Pine Script中编写脚本时,想要将自定义变量的值加入TradingView的警报内容,但发现可用的变量仅限官方提供的标准占位符和策略相关占位符,无法直接引用自定义变量,询问是否有解决办法。

已有的官方占位符包括:

标准占位符

{{ticker}}  | 标的代码,例如:AAPL、EURUSD、USOIL、BTCUSD。
{{exchange}}| 标的所属交易所或数据源,如NASDAQ、OANDA、COINBASE;延迟数据名称会以‘_DL’或‘_DLY’结尾,例如:NYMEX_DL、EUREX_DLY。
{{interval}}| 警报触发时的图表时间周期。
{{close}}   | 警报触发所在K线的当前收盘价(触发时的最新价格),例如:124.83、1.53923。
{{open}}    | 警报触发所在K线的开盘价,例如:33453.30、1.00329。
{{high}}    | 警报触发所在K线的当前最高价,例如:723.30、28.000。
{{low}}     | 警报触发所在K线的当前最低价,例如:33.83、9.015。
{{volume}}  | 警报触发所在K线的当前成交量,例如:228、4775,加密货币为1.15669521。
{{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。

策略相关占位符

{{strategy.position_size}} - 当前仓位规模,对应Pine中同名关键字的值。
{{strategy.order.action}} - 已执行订单的动作字符串:"buy"或"sell"。
{{strategy.order.contracts}} - 已执行订单的合约数量。
{{strategy.order.price}} - 订单的执行价格。
{{strategy.order.id}} - 已执行订单的ID(即strategy.entry、strategy.exit或strategy.order函数的第一个参数字符串)。
{{strategy.order.comment}} - 已执行订单的注释(上述订单函数的comment参数值;未指定则返回strategy.order.id的值)。
{{strategy.order.alert_message}} - 策略订单函数中设置的alert_message参数值(仅支持Pine v4及以上)。
{{strategy.market_position}} - 当前仓位的字符串形式:"long"、"flat"或"short"。
{{strategy.market_position_size}} - 当前仓位的绝对值(非负数)。
{{strategy.prev_market_position}} - 上一仓位的字符串形式:"long"、"flat"或"short"。
{{strategy.prev_market_position_size}} - 上一仓位的绝对值(非负数)。

解决方法

可以通过以下两种方式将自定义变量传入警报:

1. 指标脚本:使用alert()函数的message参数

在指标脚本中,直接在alert()函数的message参数里拼接自定义变量的值,无需依赖占位符。

示例代码:

//@version=5
indicator("自定义变量警报示例", overlay=true)

// 定义自定义变量
maValue = ta.sma(close, 20)
rsiValue = ta.rsi(close, 14)

// 触发条件:RSI低于30且MA向上
alertCondition = rsiValue < 30 and ta.rising(maValue, 2)

// 设置警报,直接在message中传入自定义变量值
alert(alertCondition, title="超买信号", message="RSI值: " + str.tostring(rsiValue) + "\n20周期MA值: " + str.tostring(maValue))

当警报触发时,会收到包含RSI和MA具体数值的消息。

2. 策略脚本:使用订单函数的alert_message参数

如果是策略脚本,除了上述alert()函数的方式,还可以在strategy.entry、strategy.exit或strategy.order函数中通过alert_message参数传入自定义变量组合的字符串。

示例代码:

//@version=5
strategy("策略自定义变量警报示例", overlay=true)

// 自定义变量
atrValue = ta.atr(14)
stopLossLevel = close - atrValue * 1.5

// 开多条件
longCondition = ta.crossover(ta.sma(close, 5), ta.sma(close, 20))

// 开多订单,同时设置alert_message
if (longCondition)
    strategy.entry("Long", strategy.long, alert_message="开多信号\nATR值: " + str.tostring(atrValue) + "\n止损价位: " + str.tostring(stopLossLevel))

设置警报时选择“当策略发出订单时”,即可收到包含自定义变量的警报内容。

注意事项

  • 需要使用str.tostring()将数值型变量转换为字符串,才能拼接成消息内容。
  • 消息内容支持换行符\n,可以格式化输出更清晰的信息。

内容的提问来源于stack exchange,提问作者Evgeny Mamaev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 14:40:24