无法在 Pine Script 中打印自定义变量以提醒消息

Can't print custom variable to alert message in Pine Script

我正在尝试让我的警报消息打印一个在我的脚本中先前定义的变量。这是我的代码的 alertcondition() 部分:

var bool alerttrigger = true
WaveTrend1val = wt1
strWaveTrend1val = tostring(WaveTrend1val)
alertcondition(alerttrigger, title="Test alert", message=strWaveTrend1val)
//plot(WaveTrend1val, "WaveTrend1val")

为了测试目的,请一直触发 Truewt1 是在此函数中定义的值:

f_wavetrend(src, chlen, avg, malen, tf) =>
    tfsrc = security(syminfo.tickerid, tf, src)
    esa = ema(tfsrc, chlen)
    de = ema(abs(tfsrc - esa), chlen)
    ci = (tfsrc - esa) / (0.015 * de)
    wt1 = security(syminfo.tickerid, tf, ema(ci, avg))
    wt2 = security(syminfo.tickerid, tf, sma(wt1, malen))
    wtVwap = wt1 - wt2
    wtOversold = wt2 <= osLevel
    wtOverbought = wt2 >= obLevel
    wtCross = cross(wt1, wt2)
    wtCrossUp = wt2 - wt1 <= 0
    wtCrossDown = wt2 - wt1 >= 0
    wtCrosslast = cross(wt1[2], wt2[2])
    wtCrossUplast = wt2[2] - wt1[2] <= 0
    wtCrossDownlast = wt2[2] - wt1[2] >= 0
    [wt1, wt2, wtOversold, wtOverbought, wtCross, wtCrossUp, wtCrossDown, wtCrosslast, wtCrossUplast, wtCrossDownlast, wtVwap]

然后使用此代码将其绘制到我的图表中:

plot(wtShow ? wt1 : na, style = plot.style_area, title = 'WT Wave 1', color = macdWTColorsShow ? macdWT1Color : colorWT1, transp = 0)

我可以很容易地在第一个代码块的最后一行 plot() wt1 的值,但是当我尝试将浮点值转换为字符串并将其打印在警报消息中时,我收到以下错误:

Cannot call 'alertcondition' with 'message'=series[string]. The argument should be of type: const string

我首先尝试在警告消息中使用 {{wt1}} 打印值,但我认为这仅适用于内置占位符,例如 {{time}}{{close}}。看起来我正在将 wt1 的整个系列值转换为字符串,但我也尝试 tostring(wt1[0]) 只获取 wt1 的最新值而不是整个系列,但是我得到完全相同的错误。

有趣的是,我在 post 之后几分钟就自己找到了答案,但我花了大约 3 个小时才试图找到并找出解决方案,所以我会 post 我的解决方案在这里而不是删除问题,以防万一其他人发现它有帮助。

我找到的解决方案是引用情节本身。所以 wt1 值的绘图名称是“WT Wave 1”。可以像这样引用警报消息中的情节:

alertcondition(alerttrigger, title="Test alert", message='TEST: {{plot("WT Wave 1")}}')

这会将绘图中的最新值放入警报消息中,以便它读取类似“TEST:43.520”或任何值的内容。

这是我找到解决方案的页面的 link,其中详细介绍了警报消息中使用的 {{placeholders}}:https://kodify.net/tradingview/alerts/alert-variables/

是的,您可以使用地块名称或它们的索引。因此,例如在下图中,如果您想绘制“EMA Slow”的值,您可以使用 {{plot_0}}{{plot("EMA Slow")}} 在警报消息中。