为什么这段代码会出现错误
无法使用 'length'=series[integer] 调用 'ema'。参数的类型应为:整数`
如何使整数变得更简单?
// Define EMA lengths
length1 = input(9)
length2 = input(21)
length3 = input(34)
length4 = input(55)
length5 = input(89)
emaLengths = array.from(length1, length2, length3, length4, length5)
plot(ema(close, array.get(emaLengths,1)))
我不确定你的最终目标是什么,或者为什么你不直接将
length2
传递给 ema()
但 array.get()
返回 series[int]
。然而,ema()
期望 integer
作为其 length
参数。
作为解决方法,您可以使用
sma()
来计算 ema()
。 sma()
期望 series[integer]
作为其 length
参数,因此它适用于您的情况。
//@version=4
study("My script", overlay=true)
// Define EMA lengths
length1 = input(9)
length2 = input(21)
length3 = input(34)
length4 = input(55)
length5 = input(89)
emaLengths = array.from(length1, length2, length3, length4, length5)
pine_ema(src, length) =>
alpha = 2 / (length + 1)
sum = 0.0
sum := na(sum[1]) ? sma(src, length) : alpha * src + (1 - alpha) * nz(sum[1])
plot(pine_ema(close, array.get(emaLengths,1)))
plot(ema(close, length2))
是的,松树数组无法处理其他代码(例如 fortran)中的标准内容似乎很荒谬。我一直在避开使用 pine 的阵列,但最终它们几乎变得必不可少。也许尝试“ calc_len = int(length1) then ta.ema(close,calc_len)。这对我有用,但当我尝试在函数内进行计算时,错误再次出现? 祝你好运