Pinescript v5 'while'循环在变量变为 false 时不会结束

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

我对基本 while 循环(在其他语言中)的一般理解是,当变量不再为 true 时,while 循环将自行中断。这在 Pine Script 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。但是,while 循环不会自动中断......
相反,它继续到 _VOL 行。本质上,整体输出是一个“或”,而我期待的是“与”。

以上是一个示例。实际代码针对 10 个时间范围(每个时间范围)进行了 50 多次检查。最初我使用了 50 个 if 语句,但认为 while 循环有助于提高性能。

似乎唯一的解决方法是评估(并在之后突破)每一行,这有点违背了首先使用 while 循环的目的。

我做错了什么?或者 while 循环在 PS 中与其他语言中的工作方式是否不同?

while-loop pine-script pine-script-v5
1个回答
0
投票

TradingView 支持人员的答复:

正确,正如我们在上一篇文章中所说,当检查“while”表达式时,它会进入“while”范围并执行代码块,如果表达式从本地块内部更改,则只会重新检查在脚本的下一次迭代中,但它不会在本地范围的中间自动中断。如果您想在中间停止循环 - 在重新分配表达式的值后使用“break”关键字。

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