TradingView用alert()发Discord webhook占位符失效的原因及解决方法
差异原因
alertcondition()定义的是平台托管的告警规则,你在TradingView界面创建对应告警时,平台会预先识别message参数内的{{xxx}}格式占位符,告警触发时由平台服务端完成变量替换后再发送webhook请求,因此占位符可以正常生效。alert()属于脚本运行时动态触发的告警,其传入的消息字符串是Pine脚本在K线计算过程中动态生成的,平台不会对这类动态生成的字符串做额外的占位符解析,因此{{ticker}}这类标记会原样输出。
修复方案
不要在alert()的消息参数中使用TradingView平台的{{}}格式占位符,直接使用Pine脚本内置的系统变量拼接消息内容即可:
- 品种代码对应内置变量
syminfo.ticker - 周期对应内置变量
timeframe.period
修复后的代码示例:
ma200 = sma(close, 200) ma50 = sma(close, 50) if crossover(ma50, ma200) or crossover(ma200, ma50) // 直接用Pine内置变量拼接JSON格式消息 alertMsg = str.format('{"content":"%s, %s, Market structure change"}', syminfo.ticker, timeframe.period) alert(alertMsg, alert.freq_once_per_bar)
内容的提问来源于stack exchange,提问作者alex deralu
相关产品推荐
相关产品推荐

