有条件地将序列或na赋给变量



我正在尝试打开/关闭一个安全调用,该调用会返回分配给元组的三个序列。

基于用户输入的布尔值,元组[h_01,l_01,c_01]被分配给来自安全调用的序列或[na,na,na]。以下代码:

sy_01 = input(defval = "BINANCE:BTCUSDT", title = "Symbol 01", type = input.symbol)
bl_01 = input(defval = true, title = "On/Off", type = input.bool)
[h_01, l_01, c_01] = bl_01 ? security(sy_01, resolution = "", expression = [high, low, close]) : [na, na, na]

我犯了一个错误。

我还尝试使用以下格式:

bl_01 ? [h_01, l_01, c_01] = security(sy_01, resolution = "", expression = [high, low, close]) : [h_01, l_01, c_01] = [na, na, na]

我还尝试了iff(condition, then, _else)if else block。我还尝试分配给[0,0,0]或[1,1,1],而不是[na,na,na]。我还尝试将条件写为bl_01 == true。什么都不管用。

非常感谢您的帮助。

f_boolTuple(_high, _low, _close, _on) =>
_h = _on ? _high : na
_l = _on ? _low : na
_c = _on ? _close : na
[_h, _l, _c]
[h_01, l_01, c_01] = security(sy_01, resolution = "", expression = f_boolTuple(high, low, close, bl_01))

元组只能从函数返回,不能直接分配,例如在Pine:中无效

[h, l] = [high, low]

或者在您的情况下,如果bl_01为假,则三进制的这一部分无效

[h_01, l_01, c_01] = [na, na, na]

security()是一个可以返回元组的内置函数。但是,因为不能直接将[na, na, na]分配给元组,所以必须在不同的上下文中执行逻辑。

通过在函数(可以返回[na, na, na]元组(中执行逻辑检查,我们可以将该函数用作security()调用中的表达式。

最新更新