无法在警报消息中传递 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
我在 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