计算 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)
需要一些关于 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)