For循环异常行为

问题描述 投票:0回答:1

我需要调用一个函数y次,看看这些调用中只有1个为真。我正在尝试使用for循环优化pinescript代码,但是结果始终返回false。

这有效(x为1),但是如果我需要调用该函数例如100次,则会占用太多空间:

x = 0
if function(1) or function(2) or ... function(y)
    x := x + 1

这不起作用(x始终为0):

x = 0
for i = 1 to y
    if x == 1
        break
    if function(i)
        x := x + 1

我也尝试过此操作(x始终为0):

x = 0
x := for i = 1 to y
    if x == 1
        break
    if function(i)
        x := x + 1
        x
    x
for-loop pine-script
1个回答
0
投票

您的函数的执行很可能取决于它为所引用的序列建立其过去值的历史,当从for循环中调用它时,就不会发生。

如果您试图从循环中调用ema(),并且在每次循环迭代中使用不同的length=参数,则会发生相同的问题。因为所有不同的调用都将在for循环中发生,所以Pine的运行时无法为过去每次调用ema()的实例在新的小节上计算函数所需的过去值和计算建立逐条记录。 。

为此,运行时必须为每次循环迭代生成一个新的运行时环境,这是不可能的。

© www.soinside.com 2019 - 2024. All rights reserved.