这个pinescript语句是什么意思?
What is the meaning of this pinescript statement?
当pinescript只做:
var col = 1
col := col == -1 and VarA > VarB ? 1 : col == 1 and VarA < VarB ? -1 : col
自从初始化为 1 以来,“col == -1”如何为真?
您可以转换任何 ternary (?:
) construction to an if-then-else
on this website
你的例子
col == -1 and VarA > VarB ? 1 : col == 1 and VarA < VarB ? -1 : col
产生这个
if (col == -1 and VarA > VarB) {
1
} else {
if (col == 1 and VarA < VarB) {
-1
} else {
col
}
}
假设您在问题中指的是 var col = 1
而不是 var dir = 1
,
col
获得 -1
值的唯一方法是 VarA < VarB
.
细分
在第一个柱上
var col = 1
这会将 col
初始化为值 1
。
此初始化不会在每个柱上重复。
由于 var
关键字,此初始化只进行一次。
摘自 Variable declaration 上的手册:
var 关键字是一个特殊的修饰符,它指示编译器只创建和初始化变量一次。
在变量的值必须在连续柱的脚本迭代中保持不变的情况下,此行为非常有用。
if (col == -1 and VarA > VarB)
and
语句的第一部分产生 false
,因为 col
是 1
。
因此,整个 and
语句产生 false
.
代码继续到第一个 else
.
if (col == 1 and VarA < VarB)
and
语句的第一部分产生 true
,因为 col
是 1
。
根据 VarA < VarB
是 true
还是 false
,col
被分配 -1
或者它自己的当前 col
值。
为了论证,假设 VarA < VarB
产生 true
.
然后,整个 and
语句产生 true
,使得 if
语句 true
.
值 -1
被分配给 col
.
在第二个柱上
col
现在的值为 -1
.
if (col == -1 and VarA > VarB)
and
语句的第一部分产生 true
,因为 col
是 -1
。
如果 VarA > VarB
是 true
,col
被分配 1
。
整个语句就到这里了。
如果 VarA > VarB
是 false
,代码继续到第一个 else
。
if (col == 1 and VarA < VarB)
and
语句的第一部分产生 false
,因为 col
是 -1
。
因此,整个 and
语句产生 false
.
col
的当前值被分配给 col
。
所以 col
变量保持在 -1
.
当pinescript只做:
var col = 1
col := col == -1 and VarA > VarB ? 1 : col == 1 and VarA < VarB ? -1 : col
自从初始化为 1 以来,“col == -1”如何为真?
您可以转换任何 ternary (?:
) construction to an if-then-else
on this website
你的例子
col == -1 and VarA > VarB ? 1 : col == 1 and VarA < VarB ? -1 : col
产生这个
if (col == -1 and VarA > VarB) {
1
} else {
if (col == 1 and VarA < VarB) {
-1
} else {
col
}
}
假设您在问题中指的是 var col = 1
而不是 var dir = 1
,
col
获得 -1
值的唯一方法是 VarA < VarB
.
细分
在第一个柱上
var col = 1
这会将 col
初始化为值 1
。
此初始化不会在每个柱上重复。
由于 var
关键字,此初始化只进行一次。
摘自 Variable declaration 上的手册:
var 关键字是一个特殊的修饰符,它指示编译器只创建和初始化变量一次。
在变量的值必须在连续柱的脚本迭代中保持不变的情况下,此行为非常有用。
if (col == -1 and VarA > VarB)
and
语句的第一部分产生 false
,因为 col
是 1
。
因此,整个 and
语句产生 false
.
代码继续到第一个 else
.
if (col == 1 and VarA < VarB)
and
语句的第一部分产生 true
,因为 col
是 1
。
根据 VarA < VarB
是 true
还是 false
,col
被分配 -1
或者它自己的当前 col
值。
为了论证,假设 VarA < VarB
产生 true
.
然后,整个 and
语句产生 true
,使得 if
语句 true
.
值 -1
被分配给 col
.
在第二个柱上
col
现在的值为 -1
.
if (col == -1 and VarA > VarB)
and
语句的第一部分产生 true
,因为 col
是 -1
。
如果 VarA > VarB
是 true
,col
被分配 1
。
整个语句就到这里了。
如果 VarA > VarB
是 false
,代码继续到第一个 else
。
if (col == 1 and VarA < VarB)
and
语句的第一部分产生 false
,因为 col
是 -1
。
因此,整个 and
语句产生 false
.
col
的当前值被分配给 col
。
所以 col
变量保持在 -1
.