我正在尝试打开/关闭一个安全调用,该调用会返回分配给元组的三个序列。
基于用户输入的布尔值,元组[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()
调用中的表达式。