【问题标题】:Can't print custom variable to alert message in Pine Script无法在 Pine 脚本中打印自定义变量以警告消息
【发布时间】:2021-11-18 21:55:51
【问题描述】:

我试图让我的警报消息打印在我的脚本中之前定义的变量。这是我的代码的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 的最新值而不是整个系列,但我得到完全相同的错误.

【问题讨论】:

    标签: pine-script series tostring


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      有趣的是,我在发布这篇文章几分钟后就自己找到了答案,但我花了大约 3 个小时才试图找到并找出解决方案,所以我将在此处发布我的解决方案而不是删除问题,以防万一其他人觉得它有帮助。

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

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

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

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

      【讨论】:

      • 是的,写下我们的想法会帮助我们思考 ;)
      • 有人告诉我“橡皮鸭编码”。当你的代码出现问题时,你会得到一只小橡皮鸭并与它交谈,然后通过它进行交谈可以帮助你思考问题并获得解决方案。我真的需要一只橡皮鸭。
      猜你喜欢
      • 1970-01-01
      • 2022-01-11
      • 1970-01-01
      • 1970-01-01
      • 2015-12-20
      • 1970-01-01
      • 2018-05-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多