PineScript问题,将当前系列转移到过去



我想通过X元素将"close"序列转移到过去,然后用数据填充这些X元素,以模拟未来%B、RSI、ema/sma等的影响。

hist[5]=关闭

hist[4]=5

hist[3]=5.5

hist[2]=5

hist[1]=4.5

hist[0]=6

我想在"历史"系列中计算ema/sma/rsi等。如何使用PineScript执行此操作?

您想要的是不可能的。我无法提前6小节获得最后一小节的close你不能窥视未来。但如果你只想知道这些指标的一些值,只需手工填写close,让它绘制结果。这将显示在图表的开头。

//@version=5
indicator("My script", overlay=false)
data = array.new<float>()
array.push(data, 100)
array.push(data, 5)
array.push(data, 5.5)
array.push(data, 4.5)
array.push(data, 6)
current = array.get(data, bar_index < array.size(data) ? bar_index : 4)
plot(ta.ema(current, 5))

但如果你真的想要这个。然后您需要一个接一个地实现TA函数您自己,并像您已经做的那样对值进行硬编码。

EMA示例

//@version=5
indicator("My script", overlay=false)
m(weight, price) => price * weight
ema(close) => (m(1, close) + m(2, 5) + m(3, 5.5) + m(4, 4.5) + m(5, 6)) / 15
plot(ema(close))

SMA是相同的,但对于所有权重都是1,然后除以5而不是15。其他人也不是为了努力而是为了更多的工作。希望我已经回答了你的问题。或者至少给你一些可以合作的东西。

额外提示:有些TA函数确实需要按指定顺序的数据,如ta.sma,但ta.ema需要。因此,也许你可以走捷径。

有关实现您自己的TA函数的问题,请在stackoverflow上询问。

虽然可以引用序列的过去值,但不能修改它们。只能为当前序列值指定值。

https://www.tradingview.com/pine-script-docs/en/v4/language/Operators.html#history-参考操作员

最新更新