如何在Pine Script中创建包含EMA指标的变量数组?
在Pine Script v5中创建包含EMA的数组
你的错误原因是Pine Script的array.new_float()函数不支持像Python那样直接传入元素列表初始化数组——它的第一个参数要求是整数类型的数组大小,而非元素集合。要实现类似Python列表初始化的效果,需要分两步操作:创建空数组,再逐个添加EMA值。
正确实现代码
//@version=5 indicator("My script") ema3 = ta.ema(close, 3) ema6 = ta.ema(close, 6) ema9 = ta.ema(close, 9) // 创建空的float类型数组 ema_array = array.new_float() // 逐个将EMA值添加到数组中 array.push(ema_array, ema3) array.push(ema_array, ema6) array.push(ema_array, ema9) // 可选:验证数组内容(在最后一根K线显示数组元素) if barstate.islast label.new(bar_index, high, str.tostring(array.get(ema_array, 0)) + "\n" + str.tostring(array.get(ema_array, 1)) + "\n" + str.tostring(array.get(ema_array, 2)))
补充说明
如果提前知道数组大小,也可以先指定大小再替换元素:
ema_array = array.new_float(3) array.set(ema_array, 0, ema3) array.set(ema_array, 1, ema6) array.set(ema_array, 2, ema9)
由于Pine Script中变量是**序列(series)**类型,数组会在每根K线周期自动更新存储对应时段的EMA值,无需额外编写循环逻辑。
内容的提问来源于stack exchange,提问作者Giampaolo Levorato
相关产品推荐
相关产品推荐

