松树脚本不一致 "为了保持一致性,应在每次计算时调用该函数。建议从此范围中提取调用



我的用户函数收到了这个警告。错误为:

The function 'foo' should be called on each calculation for consistency. It is recommended to extract the call from this scope

出现这种警告的原因似乎有很多,其中之一是对一个系列进行for循环。例如:

foo()=>
for i = 0 to 5 
if close[i] > 0 or close[i] < 0
break
if close < 10
foo()

这将发出警告。然而,这毫无意义!因为如果没有函数调用,就不会有一致性!

例如,我可以做:

if close < 10
for i = 0 to 5 
if close[i] > 0 or close[i] < 0
break

无论如何都不会有任何一致性!For循环将仅在关闭<10,也许永远,也许永远不会!但出于某种原因,把它放进一个函数中,现在它不一致了?

请解释为什么会这样,是否有可能在没有此类警告的情况下使用函数中的串联循环?

编辑:

经过进一步的实验,似乎连感人的系列都是功能上的禁忌?

foo()=>
a = close[1]
if close < 10
foo()

足以发出警告。它有记录吗?为什么?周围没有工作吗?

我能理解你的失望,我完全支持你。但松木脚本不是。它的设计方式-如果被认为是好的或不好的-是非常有限的,你可以对函数做什么(例如:你不能修改参数值等(。
通过使用历史引用运算符或功能的内置函数或系列,你唯一安全的选择是在全局范围内做所有事情,将其存储在变量中,并在函数中使用你的变量。或者确保在没有条件的情况下严格地在每个栏上调用函数

测试中出现警告的原因是使计算不一致的if条件,而不是函数本身。如果从全局范围调用每个栏上的函数,就没有问题。但由于";如果";函数可能不会被调用,这就是消息的原因
您可以在没有问题的情况下使用带有序列和历史引用的for循环,但只能在全局范围内使用
我建议您阅读执行模型描述以了解更多详细信息。

最新更新