我对基本while循环(在其他语言中)的一般理解是,当变量不再为真时,while循环就会自动出现。这在松树脚本v5中似乎没有发生。
示例:(_RSI小于_Min_RSI)和(_VOL大于_Min_VOL,小于_Max_VOL)
_switch = 0
while _switch > -1
_switch := ( (_RSI >= _Min_RSI and _RSI <= _Max_RSI) ? 1 : -1 )
// While loop should break out automatically after this line if _switch equal to -1
_switch := ( (_VOL >= _Min_VOL and _VOL <= _Max_VOL) ? 1 : -1 )
break当_RSI小于_Min_RSI时,_switch被正确地设置为-1。但是,时间循环不会自动爆发.
相反,它继续到_VOL行。本质上,总体输出是一个OR,而我在期待和。
上面是一个样本。实际的代码有50+检查,每个检查10帧时间.最初,我使用了50个if语句,但认为while循环将有助于性能。
似乎唯一的解决办法是评估(并在之后)每一行,这在某种程度上违背了使用while循环的目的。
我做错了什么?或者,在PS语言和其他语言中,while循环的工作方式是不同的吗?
谢谢
发布于 2022-09-17 12:47:11
来自TradingView支持的答案。
是正确的,正如我们在上一篇文章中提到的,当检查'while‘表达式时,它进入'while’作用域并执行代码块,如果表达式从本地块内部更改,它只会在脚本的下一个迭代中被重新检查,但是它不会在本地作用域的中间自动中断。如果您想在中间停止循环,请在重新分配表达式的值之后使用'break‘关键字。
安全。
https://stackoverflow.com/questions/73685831
复制相似问题