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

如何在TradingView策略警报中获取syminfo.basecurrency?遇取值失败

TradingView策略警报获取syminfo.basecurrency失败的解决方案

问题分析

策略警报的模板变量存在访问范围限制,syminfo.basecurrency这类图表级内置变量无法直接在警报模板中调用,必须通过策略脚本主动传递该值到警报上下文;同时你的JSON模板存在语法错误,会导致解析失败。

具体解决步骤

1. 修正JSON模板语法错误

原模板中BaseCurrency行末尾缺少逗号,且未给变量值加引号,先修正:

{
    "Quantity":"0.05",
    "OrderType":"PYS",
    "BaseCurrency":"{{syminfo.basecurrency}}",
    "Symbol":"{{ticker}}",
    "Exchange":"{{exchange}}",
    "Price":"{{strategy.order.price}}",
    "Side":"{{strategy.order.comment}}"
}

注:这一步仅修正语法,仍无法解决变量取值问题,需配合以下脚本修改。

2. 在Pine Script策略中传递基础货币值

使用v5版本的Pine Script,在策略代码中提取syminfo.basecurrency,并通过strategy.custom_alert_message将其传递到警报模板:

//@version=5
strategy("自定义策略", overlay=true)

// 提取基础货币
base_currency = syminfo.basecurrency

// 触发警报时传递数据(替换condition为你的实际触发条件)
if (condition)
    // 将需要的字段序列化为JSON字符串传递
    alert_data = json.stringify({
        baseCurrency=base_currency,
        ticker=ticker,
        exchange=exchange
    })
    strategy.custom_alert_message(alert_data)

3. 修改警报模板使用传递的值

将模板中的{{syminfo.basecurrency}}替换为从custom_alert_message中提取的字段:

{
    "Quantity":"0.05",
    "OrderType":"PYS",
    "BaseCurrency":"{{custom_alert_message.baseCurrency}}",
    "Symbol":"{{custom_alert_message.ticker}}",
    "Exchange":"{{custom_alert_message.exchange}}",
    "Price":"{{strategy.order.price}}",
    "Side":"{{strategy.order.comment}}"
}

如果TradingView模板不支持直接访问JSON属性,也可以在脚本中单独传递基础货币字符串:

strategy.alert_message(base_currency)

然后模板中用{{alert_message}}替换:

"BaseCurrency":"{{alert_message}}",

关键说明

  • TradingView策略警报模板仅支持有限的内置变量,大部分syminfo系列变量需要通过脚本显式传递。
  • 确保使用Pine Script v5版本,v4的strategy.alert相关语法与v5不同。

内容的提问来源于stack exchange,提问作者start with a

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 15:08:16