无法在 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")
为了测试目的,请一直触发 True
。 wt1
是在此函数中定义的值:
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")}}
在警报消息中。
我正在尝试让我的警报消息打印一个在我的脚本中先前定义的变量。这是我的代码的 alertcondition()
部分:
var bool alerttrigger = true
WaveTrend1val = wt1
strWaveTrend1val = tostring(WaveTrend1val)
alertcondition(alerttrigger, title="Test alert", message=strWaveTrend1val)
//plot(WaveTrend1val, "WaveTrend1val")
为了测试目的,请一直触发 True
。 wt1
是在此函数中定义的值:
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")}}
在警报消息中。