Pine script 条件安全()调用
我正试图通过Pine script 条件安全()调用,pine-script,Pine Script,我正试图通过security()调用(启用lookahead\u)来获取每日高/低/收盘时间。 那些每日hlc值对于同一天内的每个日内条形图保持不变。 因此,我尝试每天只调用一次安全性函数(当日期更改时)。 但是,我不断收到错误无法读取未定义的属性“isTuple” 我不明白为什么,似乎无法修复它。 有什么想法吗 这是我的示例代码 //@version=4 study("My Script") f_sec() => security(syminfo.ticker, &
security()
调用(启用lookahead\u
)来获取每日高/低/收盘时间。
那些每日hlc
值对于同一天内的每个日内条形图保持不变。
因此,我尝试每天只调用一次安全性
函数(当日期更改时)。
但是,我不断收到错误无法读取未定义的属性“isTuple”
我不明白为什么,似乎无法修复它。
有什么想法吗
这是我的示例代码
//@version=4
study("My Script")
f_sec() => security(syminfo.ticker, "D", [high,low,close], lookahead = barmerge.lookahead_on)
bar_date_ts = timestamp(year(time),month(time),dayofmonth(time),0,0,0)
is_new_date = change(bar_date_ts)
var float h = na
var float l = na
var float c = na
if (is_new_date)
[x,y,z] = f_sec()
h := x
l := y
c := z
plot(h)
plot(l)
plot(c)
应该在全局范围内调用安全函数
如果要删除元组,将收到正确的编译器错误:
不能在“if”或“for”中调用“security”或“financial”
if (is_new_date)
x := security(syminfo.ticker, "D", high, lookahead = barmerge.lookahead_on)
y := security(syminfo.ticker, "D", low, lookahead = barmerge.lookahead_on)
z := security(syminfo.ticker, "D", close, lookahead = barmerge.lookahead_on)
h := x
l := y
c := z
因此,将f_sec函数移到if语句之外,但是该函数将在每个条上调用,而不是每天调用一次
解决方案是使用条件运算符?:代码>,它不适用于元组,因此您必须进行3次安全调用。另外,我也不确定这样是否可以节省计算能力,因为编译器可以同时对这两种方法进行计算
var float x = na
var float y = na
var float z = na
x := is_new_date ? security(syminfo.ticker, "D", high, lookahead = barmerge.lookahead_on) : nz(x[1])
y := is_new_date ? security(syminfo.ticker, "D", low, lookahead = barmerge.lookahead_on) : nz(y[1])
z := is_new_date ? security(syminfo.ticker, "D", close, lookahead = barmerge.lookahead_on) : nz(z[1])
plot(x)
plot(y)
plot(z)
请注意,不使用历史引用操作符而使用lookahead
将导致脚本在当前安全解决方案参数期间重新绘制。Update:此错误已通过内部更新Pine脚本解决。原始脚本现在运行良好,没有抛出错误。此错误已通过内部更新Pine脚本解决。原始脚本现在运行良好,没有抛出错误。谢谢你的解决办法。在此期间,我一直在使用这种变通方法。