计算 EMA50 以上的蜡烛数

Count number of candles above EMA50

需要一些关于 pine 脚本的建议 我想写一个代码,计算 EMA50 以上的蜡烛数, 一旦收盘价跌破 EMA50,此计数器将重置为零:

'''

MA_long = ema(close,50)
// Counting how many candles are above the MA_long
barsAboveMA = 0
if close > MA_long
    for i = 1 to 9999
        if close[i] < MA_long
            break
        barsAboveMA := barsAboveMA + 1

'''

但是这段代码有奇怪的性能,不能正常工作。

请注意,您没有在 for 循环中将 history-referencing 运算符与 MA_long 一起使用。这意味着您将 past close 值与 current 柱上的 EMA 值进行比较(也请注意,您从 close[1] 开始比较,不要使用当前柱的 close 值。

在 Pine 中实现计数器的更好方法是使用 var 关键字。使用 var,变量不会在每个柱上重置为 0。这样做然后你就可以在没有循环的情况下修改它:

MA_long = ema(close,50)
var barsAboveMA = 0 // when var is used, the value is not reset to 0 at the start of every bar
if close > MA_long
    barsAboveMA := barsAboveMA + 1
else
    barsAboveMA := 0
plot(barsAboveMA)