无法在警报消息中传递 pinescript 动态变量

Can't pass a pinescript dynamic variable in an alert message

我在 Pinescript 中有一个函数 returns 一个基于几个指标的值:

    varip a = 0.0
calculate_() =>
    period = 50
    basis = ta.sma(src, period)
    dev = mult * ta.stdev(src, period)
    upper = basis + dev
    lower = basis - dev
    nATR = ta.atr(period) / src
    hATR = ta.highest(nATR, period)
    lATR = ta.lowest(nATR, period)
    nSD = ta.stdev(src, period) / src
    hSD = ta.highest(nSD, period)
    lSD = ta.lowest(nSD, period)
    MA = ta.wma(nATR, period)
    perm = 100 * math.abs(nATR - MA) / MA
    pers = 100 * (nSD - lSD) / (hSD - lSD)
    pera = 100 * (nATR - lATR) / (hATR - lATR)
    perb = 100 * (src - lower)/(upper - lower)
    per = gear == 4 or gear == 5 ? (perm + pers + pera + perb) / 4 : gear==1 ? math.min(100 , (pers + pera + perb) / 2.5) : (pers + pera + perb) / 3
    EL = (100 - per) / (6-gear)
    float(math.max(1,int(EL + .5)))

a:= calculate_Leverage()

plot(a, 'Leverage')
label.new(bar_index, high, str.tostring(a))

它绘制并标记了正确的值。

但是当我尝试将其放入警报消息时,我的警报中只收到“NaN”。 两种方法都试过了,结果相同:

var msgLongBuy = str.format("{0,number,#.#}", a)
str.tostring(a,"#.00)")

通过使用 var 声明 msgLongBuy,它会在历史记录的第一个柱上进行初始化并且不会重新计算,这意味着消息不会保持动态。尝试从字符串声明中删除 var